반응형
강의 목표
- 신경망의 기본 개념 이해
- PyTorch에서 신경망 모델을 구현하는 방법 습득
- 기본 신경망 구성 요소와 활성화 함수 이해
강의 내용
1. 신경망 기본 개념
- 신경망이란 무엇인가?
- 신경망(Neural Network)은 인간의 뇌 구조를 모방한 기계 학습 모델입니다.
- 여러 개의 레이어로 구성되며, 각 레이어는 여러 뉴런(Neuron)으로 이루어져 있습니다.
- 신경망의 구성 요소
- 레이어(Layer)
- 뉴런(Neuron)
- 가중치(Weights)와 바이어스(Biases)
- 활성화 함수(Activation Function)
- 활성화 함수는 뉴런의 출력 값을 결정하는 함수입니다.
- 비선형 활성화 함수의 중요성
2. PyTorch에서의 신경망 구현
- torch.nn 모듈 소개
- 신경망 모델을 쉽게 구축할 수 있도록 다양한 레이어와 함수 제공
- nn.Module 클래스
- 모든 신경망 모델의 기본 클래스
- 모델 정의 및 순전파(forward) 정의 방법
import torch
import torch.nn as nn
import torch.optim as optim
class SimpleNN(nn.Module):
def __init__(self):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(10, 50)
self.fc2 = nn.Linear(50, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
3. 기본 신경망 모델 구성
- nn.Sequential 사용
- 순차적으로 레이어를 쌓아 간단한 신경망 모델을 구축
model = nn.Sequential(
nn.Linear(10, 50),
nn.ReLU(),
nn.Linear(50, 1)
)
- 활성화 함수 사용 예시
- Sigmoid, Tanh, ReLU
x = torch.randn(10)
relu = nn.ReLU()
sigmoid = nn.Sigmoid()
tanh = nn.Tanh()
print(relu(x))
print(sigmoid(x))
print(tanh(x))
4. 신경망 모델 학습
- 손실 함수(Loss Function)와 옵티마이저(Optimizer)
- 손실 함수: 모델의 예측값과 실제값의 차이를 측정
- 예시: nn.MSELoss(), nn.CrossEntropyLoss()
- 옵티마이저: 손실을 줄이기 위해 가중치를 업데이트
- 예시: optim.SGD, optim.Adam
- 손실 함수: 모델의 예측값과 실제값의 차이를 측정
# 손실 함수와 옵티마이저 설정
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
- 모델 학습 단계
- 순전파(forward pass): 입력 데이터를 모델에 통과시켜 예측값을 계산
- 손실 계산: 예측값과 실제값의 차이 계산
- 역전파(backward pass): 기울기 계산
- 가중치 업데이트: 옵티마이저를 통해 가중치 조정
# 학습 예시
inputs = torch.randn(10)
targets = torch.randn(1)
for epoch in range(100): # 100번의 에포크 동안 학습
optimizer.zero_grad() # 옵티마이저 초기화
outputs = model(inputs) # 순전파
loss = criterion(outputs, targets) # 손실 계산
loss.backward() # 역전파
optimizer.step() # 가중치 업데이트
5. 실습 및 과제
- 실습 과제
- 간단한 신경망 모델을 구축하고, 주어진 데이터를 사용해 학습 및 평가
# 실습 과제 예시
# 1. 10개의 입력 특징을 가진 데이터셋을 사용하여, 간단한 신경망 모델을 구축하고 학습하세요.
import torch
import torch.nn as nn
import torch.optim as optim
# 데이터 생성
inputs = torch.randn(100, 10) # 100개의 샘플, 각 샘플은 10개의 특징
targets = torch.randn(100, 1) # 100개의 샘플에 대한 타겟 값
# 모델 정의
model = nn.Sequential(
nn.Linear(10, 50),
nn.ReLU(),
nn.Linear(50, 1)
)
# 손실 함수와 옵티마이저 설정
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
# 모델 학습
for epoch in range(100): # 100번의 에포크 동안 학습
optimizer.zero_grad() # 옵티마이저 초기화
outputs = model(inputs) # 순전파
loss = criterion(outputs, targets) # 손실 계산
loss.backward() # 역전파
optimizer.step() # 가중치 업데이트
# 모델 평가
with torch.no_grad():
test_inputs = torch.randn(10, 10) # 10개의 테스트 샘플
test_outputs = model(test_inputs)
print(test_outputs)
- 과제 제출
- Jupyter Notebook 파일로 제출
- 제출 기한: 다음 강의 시작 전까지
반응형
'AI Framework > PyTorch' 카테고리의 다른 글
[PyTorch] 6주차: 모델 훈련 및 평가 (0) | 2024.05.30 |
---|---|
[PyTorch] 5주차: 데이터셋 및 DataLoader (0) | 2024.05.30 |
[PyTorch] 3주차: 자동 미분과 Autograd (0) | 2024.05.30 |
[PyTorch] 2주차: PyTorch의 기본 연산 (0) | 2024.05.30 |
[PyTorch] 1주차: PyTorch 소개 및 설치 (0) | 2024.05.30 |