[DL] Backpropagation 역전파 - 전체적 흐름과 예시

Develop My Life·2022년 3월 21일
0

Deep Learning

목록 보기
1/2

Backpropagation 역전파 개념

  • Loss를 구하기 위한 추론 연산은 Forwardpropagation 순전파라고 하고 Loss를 줄이기 위한 w와 b 업데이트 연산을 Backpropagation 역전파라고 한다.

Backpropagation 흐름

  1. y에 관한 식이 있다고 할 때 x 값과 x 값에서의 기울기만 알고 있다면 y를 최소화하기 위해 x를 어떻게 업데이트 할 것인가?
  2. x:=xdydxx:= x-{dy\over dx}를 이용한 x 업데이트는 오히려 y 값을 커지게 하는 현상 발생
  3. Learning Rate를 도입하여 x:=xαdydxx:= x-\alpha{dy\over dx}로 y를 최소화하도록 x를 업데이트 가능 (α\alpha는 Learning Rate)
  4. 결국 여기서 y는 Loss이고 x를 w와 b라고 한다면 딥러닝 학습 과정이라고 할 수 있다.

Example

  • Learning Rate를 도입하지 않은 경우 y가 감소하지 않고 커지는 현상 발생
  • Learning Rate를 도입하니 y가 감소하는 것을 확인할 수 있다.

    결국 Mean Squared Error, Binary Cross Entropy Error, Class Cross Entropy Error로 구해진 Loss를 최소화 하는 것이 딥러닝 학습의 핵심이며 이는 역전파를 통해서 할 수 있다.

Backpropagation 계산

  • forward 연산 후에는 Loss 값(JJ)과 최종 출력 값(Y^\hat{Y})을 알 수 있다.
  • 결국 각 Layer의 W와 b에 대한 Loss의 변화량(JW{\partial J}\over{\partial W}, Jb{\partial J}\over{\partial \overrightarrow{b}})을 알고 있으면 W와 b 값을 업데이트 할 수 있다.
  1. Loss 값(JJ)과 최종 출력 값(Y^\hat{Y}) 알고 있다.
  2. 이전 Layer 출력(Z[5]Z^{[5]})을 알고 있기 때문에 Y^Z[5]{\partial \hat{Y}}\over{\partial Z^{[5]}}를 알 수 있다.
  3. 이전 Layer 출력(A[4]A^{[4]})을 알고 있고 Z[5]A[4]{\partial Z^{[5]}}\over{\partial A^{[4]}}, Z[5]W[5]{\partial Z^{[5]}}\over{\partial W^{[5]}}, Z[5]b[5]{\partial Z^{[5]}}\over{\partial \overrightarrow{b^{[5]}}}를 알고 있기 때문에 chain rule을 이용하여 JA[4]{\partial J}\over{\partial A^{[4]}}, JA[4]{\partial J}\over{\partial A^{[4]}}, Jb[5]{\partial J}\over{\partial \overrightarrow{b^{[5]}}}를 알 수 있다.
  4. 계속해서 이전 Layer로 내려가면서 chain rule을 이용하여 역전파를 계산한다.

    결국 Loss JJ를 알고 있다면 Backpropagation을 통해 해당 WWbb 에 대한 JJ 편미분 값인 JW{\partial J}\over{\partial W}, Jb{\partial J}\over{\partial \overrightarrow{b}}를 알 수 있다. 이 때 WW는 matrix이고 bb는 vector이기 때문에 matrix와 vector에 대한 미분하는 방법을 알아야한다.

0개의 댓글