07. Back Propagation - 역전파 이해하기
뉴럴 네트워크 모델을 설명하기 위한 파라미터들과, 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(연쇄 법칙)을 활용하여 계산.
이후 역전파 과정을 직접 계산해볼 수 있도록 하자 .