1. Gradient vanishing / exploding 문제
딥러닝을 할 때 층을 여러 개 쌓아서 DNN 을 만든다.
학습을 위해 역전파를 할 때, gradient 를 사용해서 각 층의 parameter 를 업데이트 한다.
그런데 층이 깊어질수록,
gradient 가 점점 사라지거나 폭발적으로 증가하는 문제가 발생할 수 있다.
이러면 당연히 학습이 제대로 진행되지 않는다.
gradient 가 점점 사라지는 것을 gradient vanishing,
gradient 가 점점 커지는 것을 gradient exploding 이라고 부른다.
이 문제를 해결하기 위해 여러 솔루션들이 제안 되었는데,
대표적으로 아래 4가지 방법이 사용된다.
1) 각 층에 특정한 초기화 적용
각 층에 사용하는 활성화 함수에 따라
Glorot 초기화 / He 초기화 / LuCun 초기화를 사용하는 방법이다.
2) 특정 값으로 수렴하지 않는 활성화 함수 사용
ReLU 의 변형인 LeakyReLU / ELU / RReLU / PReLU 등을 사용하는 방법이다.
3) 배치 정규화
학습할 때 배치마다 다른 분포를 가지기 때문에 학습이 제대로 되지 않을 수 있다.
각 배치가 동일한 분포를 가지도록 정규화하는 방법이다.
4) Gradient clipping
gradient exploding 문제를 해결하는 방법인데,
gradient 가 특정 임계값을 넘어서면 잘라내는 방법이다.
자세한 내용은 앞으로 각각 다른 포스트에서 서술해 보고자 한다.
'머신러닝 & 딥러닝 > 이론' 카테고리의 다른 글
Convolution Layer (0) | 2023.04.12 |
---|