뉴럴 네트워크 모델을 설명하기 위한 파라미터들과, loss function, 경사하강법에 대해 이전에 알아보았다.
(참고로, 뉴럴 네트워크는 우리가 알고 있는 아래의 관계망이고 이를 학습시킨 결과물이 바로 딥러닝 '모델'이다.)
이번에는 뉴럴 네트워크 모델, 즉 딥러닝의 학습과정(=파라마티 추정 방법) 에 대해 알아보고자 한다.
Neural Network
잠깐 다시 짚고 넘어가자면, 인공 신경망은 입력층, 은닉층(여러 개일 수 있다), 출력층을 가지고 있다.
이 인공 신경망에서 입력 데이터(i1, i2)를 받아 최적의 출력 데이터(o1, o2)를 계산할 수 있도록, 각 퍼셉트론의 가중치(w1~w8)들을 업데이트하는 과정을 신경망 학습이라고 한다.
Forward Propagation
순전파(Forward Propagation)는 입력 데이터를 은닉층을 거쳐 출력층으로 값을 도출하는 것을 의미한다. 순 전파의 과정을 설명하기 위해 입력층과 가중치에 임의의 값을 넣고 계산해보자.
먼저 출력층에서 은닉층까지의 계산 과정을 보자.
z1 = w1 * i1 + w2 * i2 + b1 * 1 = 0.05 * 0.15 + 0.1 * 0.2 + 0.35 * 1 = 0.3775
z2 = w3 * i1 + w4 * i2 + b1 * 1 = 0.05 * 0.25 + 0.1 * 0.3 + 0.35 * 1
z1, z2는 각각의 은닉층 뉴런에서 Sigmoid 함수를 지나 다음과 같이 계산된다.
h1 = sigmoid(z1) = 0.5932
h2 = sigmoid(z2) = 0.5968
이후 출력층도 마찬가지로 이어서 계산할 수 있다.
z3 = w5 * h1 + w6 * h2 + b2 * 1
z4 = w7 * h1 + w8 * h2 + b2 * 1
o1 = sigmoid(z3) = 0.7513 / 실제 값 : 0.01
o2 = sigmoid(z4) = 0.7729 / 실제 값 : 0.99
입력층에서 출력층까지 순 전파를 거쳐 나온 결과 값(예측값)이 실제값(Label값)과 차이가 나는 것을 볼 수 있다.
따라서, 신경망 학습을 통해 가중치(w)를 조정하여 이 차이가 최소가 되는 방향으로 값을 조정해 나간다. ( = 신경망 학습의 목표 )
Error 계산
예측값과 실제값의 오차(E)를 구해보면, 아래와 같다.
Back Propagation
역전파(Back Propagation)는 Loss Fucntion을 통해 나온 오차값(E)을 다시 뒤로 전파해가면서 오차값이 최소가 되도록 각 가중치(w)를 경신하는 알고리즘이다. 이를 위해 신경망의 역방향으로 오차의 기울기(Gradient)를 계산해 가중치를 업데이트해야한다.
step 1. 출력층과 은닉층 사이 오차의 기울기(Gradient) 계산 + chain rule
step 2. 가중치(w5~8) 업데이트
이제 위에서 계산한 에 대한 오차 의 편미분, 즉 기울기 값을 이용해 해당 가중치를 업데이트할 수 있습니다. 이를 수식으로 나타내면 다음과 같습니다.
이때 는 하이퍼파라미터로서 학습률(Learning rate)을 의미하며, 임의로 설정할 수 있습니다.
따라서 앞서 기울기값을 통해 w5, 6, 7, 8을 업데이트 할 수 있습니다.
step 3. 은닉층과 입력층 사이 오차 gradient 계산 후 가중치(w1~w4) 업데이트
이후 은닉층과 입력층에서도 같은 계산을 반복하여 가중치를 업데이트 해준다.
이렇게 모든 가중치를 업데이트하고, 다시 업데이트된 가중치로 순전파를 진행하여 오차를 구하면 이전 오차보다 줄어든 것을 확인할 수 있을 것이다.
결론
- 역전파(Back Propagation)는 신경망의 예측 결과와 실제 값 사이의 오차를 줄이기 위해 가중치를 업데이트하는 과정.
- 오차를 줄이기 위한 가중치 W는 가중치에 대한 손실함수의 최소 지점이어야함
- 극점에 접근하기 위해 경사 하강법( =기울기가 작아지는 방향으로 이동)활용.
- 오차에 대한 각 가중치의 기울기는 chain rule(연쇄 법칙)을 활용하여 계산.
이후 역전파 과정을 직접 계산해볼 수 있도록 하자 .
'데이터 스터디 > DL' 카테고리의 다른 글
RNN - 역전파와 한계점 (0) | 2023.11.10 |
---|---|
CNN - convolution 연산 이해하기 (0) | 2023.11.10 |
[코드 분석] Bag of Words for IMDB movie review (1) | 2023.02.01 |
TF-IDF (0) | 2022.07.17 |
N-gram 언어 모델 (0) | 2022.07.16 |