역전파란?
MLP(multi-layer-perceptron)와 같은 여러 층이 존재하는 모델에서
gradient descent를 하기 위해
gradient 값을 구하는 수학적 방법.
모든 기계학습에서는
loss 함수 최적화를 위해 모수 w에 대한 gradient 값이 필요했었습니다.
그런데 인공신경망과 같은 여러 층을 가지는 모델에서는
어떤 하나의 w에 대한 미분 값을 단순하게 구할 수 없는데,
어떤 w가 다른 w에 대한 함수로 정의되어 있기 때문입니다.
이러한 multi layer에서 gradient descent 하는 방법이 바로
역전파 입니다.
(gradient descent 참고)
아래 예시를보자.
가령, w1에 대한 update를 진행하고 싶다면.
현재 E(목적함수) 함수를 직접적으로 w1에 대해 미분할 수 없음은 자명합니다.
이처럼 하위층에 존재하는 모수 w를 update하기 위해서
chain rule을 사용합니다.
chain rule은 뭐였나
일반적으로 합성함수 미분법으로 알고 있는 방법이었다.
이 방법을 활용해보자.
예시로 돌아와서 출력 층에 존재하는 w5의 gradient를 구한다고 하자.
아래와 같이 chain rule을 활용해서 계산할 수 있다.
이번에는 입력 층에 존재하는 w1의 gradient를 구해보자.
이렇게 기존에는 직접적으로 gradient를 구할 수 없었던 w1도
chain rule로 구할 수 있게 됩니다.
이렇게 구한 gradient를
아래와 같이 사용하여
w1을 update 하면 최종적으로 역전파 방식으로 Gradient descent를 해내게 된 것이다.
그런데 이 방식도 문제가 있습니다.
Vanishing gradient problem

이게 왜 문제인가요
아래와 같이 어떤 특정 모수를 update 할 때 최종적으로 gradient에 해당하는 값이 0이 되면서
모수의 update가 일어나지 않게 됩니다.
그래서 해결 방안
활성화 함수를 다른 걸 씁니다.
Relu를 이용
아래의 빨간색 그래프가 Relu 함수.
파란색 그래프는 Relu를 미분한 함수다.
이 활성화 함수는 input이 양수일 때는
Relu의 미분 값이 항상 1
input이 음수일 때는
Relu의 미분 값은 0으로 된다.
즉, input이 양수일 때는 gradient 값이 1이므로
활성화 함수를 시그모이드 함수를 썼을 때
전체 gradient 값이 0으로 가는
Vanishing gradient problem을 어느정도 해결할 수 있다.
'인공신경망' 카테고리의 다른 글
AdaGrad/RMSprop/Adam 이란? (2) | 2024.11.03 |
---|---|
Stochastic gradient descent (SGD) (0) | 2024.10.30 |
오버피팅(overfitting) 해결 및 방지 방법 (0) | 2024.10.29 |
MLP(multi-layer perceptron) (0) | 2024.10.15 |