본문 바로가기
TIL

[TIL] Gradient Vanishing 문제와 활성화 함수

by 다람이도토리 2021. 9. 20.

(면접에서 틀렸던 문제다... 진짜..)

Gradient Vanishing이란?

신경망 학습 과정에서는, 가중치를 back-propagation 하는 과정에서 가중치가 발산하거나 곡선의 기울기가 0이 되면서 학습이 제대로 되지 않는 현상이 발생할 수 있다.

원인은 활성화함수에서

사실, 선형 함수의 경우는 미분해봤자 계수가 되기 때문에 선형함수에서는 그 원인을 찾을 수 없다. 즉, 원인을 찾기 위해서는 비선형 함수를 만들어주는 활성화함수에서 찾아야 할 것이다. 

미분계수가 0에 수렴이 되면, 기울기에 의해서 값을 찾아가야 하는데 제대로 오차가 감소되지 않거나, local minima에 빠지는 문제가 발생할 것이다. 

Sigmoid function

시그모이드는 로지스틱 회귀와 연관된 함수로, 0과 1 사이의 실수를 뱉어주는 함수이다.
문제는, 여러번 미분하면 할수록, 미분계수가 0에 수렴되어 버리는 문제가 발생한다.

ReLU 함수의 도입

이를 해결하기 위해 ReLU 함수를 사용하게 된다. ReLU를 사용하면, Vanishing Gradient는 발생하지 않다.

그러나, ReLU는 값이 0이하가 되면 뉴런이 0이 되어 학습이 안되는 현상이 발생해버린다.

이를 위해, LeakyReLU를 쓰기도 한다. (무조건 성능이 좋다는 것은 아니다!)