티스토리 뷰
4.1 신경망
1) 인공 신경망(Artificial Neural Network)
2) 인공 신경망의 구성 요소 : 입력층, 은닉층, 출력층
- 심층 신경망 (DNN) : 2개 이상의 은닉층을 가진 인공 신경망
3) 활성화 함수 → 비선형성
4.2 순전파와 역전파
1) 순전파 (Forward Propagation) : 입력값이 여러 은닉층을 통과해 결과값으로 나오는 과정
2) 역전파 (Backward Propagation) : 결과값과 정답의 차이로 계산된 손실을 연쇄법칙을 통해 입력단까지 다시 전달하는 과정
* 역전파 계산 과정 (시그모이드 예제)
4.3 모델 구현, 학습 및 결과
# 데이터 생성
num_data = 1000
num_epoch = 10000
noise = init.normal_(torch.FloatTensor(num_data,1),std=1)
x = init.uniform_(torch.Tensor(num_data,1),-15,15)
y = (x**2) + 3
y_noise = y + noise
# 모델, 손실 함수, 최적화 함수 설정
model = nn.Sequential(
nn.Linear(1,6),
nn.ReLU(),
nn.Linear(6,10),
nn.ReLU(),
nn.Linear(10,6),
nn.ReLU(),
nn.Linear(6,1),
)
loss_func = nn.L1Loss()
optimizer = optim.SGD(model.parameters(),lr=0.0002)
# 모델 학습
loss_array = []
for i in range(num_epoch):
optimizer.zero_grad()
output = model(x)
loss = loss_func(output,y_noise)
loss.backward()
optimizer.step()
loss_array.append(loss)
# 손실 그래프
plt.plot(loss_array)
plt.show()
# 학습된 모델의 결과값과 실제 목표값 비교
plt.figure(figsize=(10,10))
plt.scatter(x.detach().numpy(),y_noise,label="Original Data")
plt.scatter(x.detach().numpy(),output.detach().numpy(),label="Model Output")
plt.legend()
plt.show()
ReLU 활성화 함수의 영향 : 은닉층은 해당 층의 입력값에 가중치를 곱해 선형변환이 일어나도록 하는데, ReLU는 이 중 0보다 작은 값들을 모두 0으로 만들기 때문에 여러 은닉층을 통과하면서 여러 지점에서 꺾인 모양이 나타나게 됨.
'DL > Pytorch' 카테고리의 다른 글
[Ch7] 학습 시 생길 수 있는 문제점 및 해결방안 (0) | 2022.01.22 |
---|---|
[Ch6] 순환신경망(RNN) (0) | 2022.01.20 |
[Ch5] 합성곱 신경망(CNN) (0) | 2022.01.15 |
[Ch3] 선형회귀분석 (0) | 2022.01.15 |
[Ch1, 2] Deep Learning & Pytorch (0) | 2022.01.10 |
댓글
공지사항