research notes

오차역전파(Backpropagation)-2 본문

인공지능 수학/미분적분

오차역전파(Backpropagation)-2

forest62590 2022. 6. 12. 15:23
728x90

신경망 학습에 경사하강법을 사용하는 방법을 알아보기 위해 하나의 입력층, 은닉층, 출력층을 사용해 가장 단순한 신경망부터 시작

조금 더 복잡한 시나리오 구성을 위해 linear combination 및 activation을 추가하였으며, 순방향 전파 단계는(forwarded propagation) 단순히 하나의 출력이 다음 층의 입력으로 사용되는 것을 쉽게 알 수 있다.

 

 

신경망의 출력과(predict) 목표(target) 간의 차이를 최소화 하기 위해 모델의 각 매개변수가(가중치, weight) 오차함수의 결과에 얼마나 영향력을 미치는지 확인 후 해당 값을 이용해 반복적으로 경사하강법을 사용하여 가중치를 업데이트 한다. 오차함수에 대한 각 가중치의 영향력은 편미분 계산을 통해 확인할 수 있다.

아래 공식과 같이 편미분을 통해 각 모델의 파라미터가 오차결과에 얼마나 영향을 미쳤는지 확인 할 수 있으며 해당 값을 사용하여 경사하강법을 수행한다.

 

$$ \frac{\partial J(\theta )}{\partial \theta_{2}}=(\frac{\partial J(\theta )}{\partial a^{(3)}})(\frac{\partial a^{(3)}}{\partial z})(\frac{\partial z}{\partial \theta_{2}}) $$

 

$$ \frac{\partial J(\theta )}{\partial \theta_{1}}=(\frac{\partial J(\theta )}{\partial a^{(3)}})(\frac{\partial a^{(3)}}{\partial z^{(3)}})(\frac{\partial z^{(3)}}{\partial a^{(2)}})(\frac{\partial a^{(2)}}{\partial z^{(2)}})(\frac{\partial z^{(2)}}{\partial \theta_{1}}) $$

 

이제 약간 더 복잡한 예로 입력, 은닉, 출력층에 두 개의 뉴런이 있는 신경망을 사용해 동일한 접근 방식을 시도해 볼 수 있다. 또한, 일반적으로 딥러닝은 하나 이상의 출력을 가진 신경망 구조이며 오차함수는(\(J(\theta)=\frac{1}{2m}\sum_{}^{}(y_{i}-a_{i}^{(3)})^{2}\)) 모든 출력 결과의 오차에 대해 합산하는 구조를 가진다.

 

여기서  \(\frac{\partial J(\theta)}{\partial \theta_{11}^{(1)}}\)를 계산 한다고 할 때 \(\theta_{11}^{(1)}\)가 \(a_{1}^{(3)}\)와 \(a_{2}^{(3)}\)에 영향을 미치는 것을 확인 할 수 있다. 여기서 오차함수는 각 출력에 대한 개별 오차의 합계이기 때문에 각 경로로 파생된 체인을 계산하고 간단히 더할 수 있다.

이 때 파란색 경로에 대한 연쇄법칙:

$$ (\frac{\partial J(\theta )}{\partial a_{1}^{(3)}}) (\frac{\partial a_{1}^{(3)}}{\partial z_{1}^{(3)}}) (\frac{\partial z_{1}^{(3)}}{\partial a_{1}^{(2)}}) (\frac{\partial a_{1}^{(2)}}{\partial z_{1}^{(2)}}) (\frac{\partial z_{1}^{(2)}}{\partial \theta_{11}^{(1)}}) $$

 

오렌지색 경로에 대한 연쇄법칙:

$$ (\frac{\partial J(\theta )}{\partial a_{2}^{(3)}}) (\frac{\partial a_{2}^{(3)}}{\partial z_{2}^{(3)}}) (\frac{\partial z_{2}^{(3)}}{\partial a_{1}^{(2)}}) (\frac{\partial a_{1}^{(2)}}{\partial z_{1}^{(2)}}) (\frac{\partial z_{1}^{(2)}}{\partial \theta_{11}^{(1)}}) $$

 

위의 두 결과를 결합하여 \(\frac{\partial J(\theta)}{\partial \theta_{11}^{(1)}}\)에 대한 결과를 도출할 수 있다.

 

$$ \frac{\partial J(\theta)}{\partial \theta_{11}^{(1)}}= {(\frac{\partial J(\theta )}{\partial a_{1}^{(3)}}) (\frac{\partial a_{1}^{(3)}}{\partial z_{1}^{(3)}}) (\frac{\partial z_{1}^{(3)}}{\partial a_{1}^{(2)}}) (\frac{\partial a_{1}^{(2)}}{\partial z_{1}^{(2)}}) (\frac{\partial z_{1}^{(2)}}{\partial \theta_{11}^{(1)}})} + {(\frac{\partial J(\theta )}{\partial a_{2}^{(3)}}) (\frac{\partial a_{2}^{(3)}}{\partial z_{2}^{(3)}}) (\frac{\partial z_{2}^{(3)}}{\partial a_{1}^{(2)}}) (\frac{\partial a_{1}^{(2)}}{\partial z_{1}^{(2)}}) (\frac{\partial z_{1}^{(2)}}{\partial \theta_{11}^{(1)}})} $$

References:

[1] https://www.jeremyjordan.me/neural-networks-training/

728x90

'인공지능 수학 > 미분적분' 카테고리의 다른 글

오차역전파(Backpropagation)-1  (0) 2022.06.12
적분(integral) 정리  (0) 2022.06.01
테일러 급수(Taylor Series)  (0) 2022.05.22
Comments