📌 이 글은 권철민님의 딥러닝 CNN 완벽 가이드를 바탕으로 정리한 내용입니다.


목차

  1. DNN은 합성 함수의 연쇄 결합이다.
  2. 간단한 신경망 Backpropagation
  3. Upstream gradient와 Local gradient

DNN은 합성 함수의 연쇄 결합이다.

DNN의 구조를 다시보자.

다시보니 그저 함수가 연결된 그물망처럼 보인다.

최종 출력을 풀면 Output = F3 x (W^3 x F2 x (W^2 x F1 x (W^1 X))) 이다.


간단한 신경망 Backpropagation

이제 간단한 신경망을 Backpropagation 해보자.

 

위의 과정에서

이 식을 풀고 싶다.

그런데 a^3은 g^3(z^3) 이고, 또 z^3은 θ2a2 이다. 

이렇게 계속 풀어야 되기 때문에 굉장히 복잡해질 수가 있다.

 

그러나 우리는 θ2 가 Chain Rule에 의해 아래와 같이 풀릴 수도 있을 거라고 예상할 수 있다.

어떤 치환식이 될지는 모르겠는데, 미분의 Chain Rule을 이용해서 구해보면

처음에는 Loss 함수와, 맨 마지막에는 θ2 에 대한 것이 나올 것이다.

 

 

Loss 함수가 a에 종속된 output으로 나올 것이라고 예상할 수 있다.

 

양파 껍질을 계속 까보면

이렇게 미분할 수 있다는 것을 확인할 수 있다.

 

하지만 결국에 우리가 구하고자 하는 것은 θ2에 대한 미분 값이 아니다!

우리가 구하고자 하는 것은 θ1에 대한 미분 값이다.

 

 

최종적으로 우리가 구하고자 하는 Loss function의 미분 식은 양파 껍질의 바깥쪽 개별적인 것들의 미분 결과값을 곱해서 구할 수가 있다. 

 

즉, Loss 함수 식을 θ1 기반으로 다 풀 필요가 없다라는 것이다!

위 그림에서 보다시피, 거꾸로 a3 양파 껍질 까고, z3 까고, 계속해서 까면 결국엔 θ1에 대한 미분값을 구할 수가 있다.


Upstream Gradient와 Local Gradient

즉, Upstream 들어온 것을 Local stream 으로 구할 수 있다.


두가지의 연쇄미분을 해주어야 한다.

 

 

path를 다 고려해서 최종적으로 업데이트되는 gradient를 생성하게 된다.

 

즉, 위의 내용을 종합하면,

Backpropagation을 하려면 아주 많은 여러가지의 weight에 대한 미분 값을 구해야 하는데,

미분을 하려면 Chain Rule을 적용해야 하고,

그 속에서 Chain Rule 의 첫번째 변수에 대해서 싹다 미분할 필요없이,

각 레이어의 Local 변수에 대해서 미분하면 계산이 가능하다는 것이다.

 

이게 바로 신경망의 Backpropagation의 핵심 메커니즘이다.

'🖼 Computer Vision > CNN' 카테고리의 다른 글

CNN - Loss function  (0) 2022.01.20
CNN - Activation function (활성화 함수)  (0) 2022.01.20
CNN - Backpropagation  (0) 2022.01.19
CNN - Deep Neural Network  (0) 2022.01.19
CNN - SGD, Mini-Batch GD  (0) 2022.01.19
복사했습니다!