[모두의 딥러닝] 12. 기울기 소실(vanishing gradient) 문제, 활성화 함수(ReLU, softplus 등), 고급 경사 하강법(SGD, Adam 등)

기울기 소실(vanishing gradient) 문제

 

- 문제 : 은닉층이 늘어나면서 출력층에서 시작된 가중치 업데이트가 처음 층까지 전달되지 않음

- 원인 : 활성화 함수로 사용된 시그모이드 함수 미분 값의 최대치가 0.25이므로 계속 곱하다보면 0에 가까워진다는 것

- 해결책 : 활성화 함수로 시그모이드가 아닌 다른 함수 탐색

 

 

 

활성화 함수

- 딥러닝에서는 activation이라는 객체에 이름을 넣어 사용

 

  • 하이퍼볼릭 탄젠트(hyperbolic tangent)

: 시그모이드 함수의 범위를 -1에서 1로 확장

: but, 1보다 작은 값 존재하므로 여전히 기울기 소실 문제 존재

 

  • 렐루(ReLU)

: x가 0보다 작을 때는 모든 값을 0으로 처리하고, 0보다 큰 값은 x를 그대로 사용

: x가 0보다 크기만 하면 미분 값이 1이 됨

: 여러 번 오파 역전파가 진행되어도 맨 처음 층까지 값이 남아있게 됨

 

  • 소프트플러스(softplus)

: 렐루의 0이 되는 순간을 완화함

 

 

 

고급 경사 하강법

- 딥러닝에서는 텐서플로에 포함된 옵티마이저(optimizers)라는 객체에 넣어 사용 

 

 

확률적 경사 하강법(Stochastic Gradient Descent, SGD)

: 랜덤하게 추출한 일부 데이터를 사용해서 빠르게 최적의 해에 접근

: 경사 하강법의 느린 속도 문제 개선

진폭이 커 불안정해 보이지만 빠른 속도로 최적의 해에 접근

 

 

모멘텀(Momemtum)

: 매번 기울기를 구하면서 오차 수정 전에 직전 수정 값과 방향(+, -)을 반영하여 같은 방향으로 일정한 비율만 수정되게 함

: 이동 방향이 일정하게 유지되고, 지역 최솟값에 빠지지 않고 전역 최솟값을 더 빠르게 찾을 수 있음

 

 

아담(Adam)

: 모든 매개변수에 대해 개별적인 학습률을 계산하고, 지난 그래디언트를 이용하여 모멘텀을 적용

: 가장 많이 사용되는 고급 경사 하강법

 

 

고급 경사 하강법 정리

 

 

 

'모두의 딥러닝 개정 3판'의 내용과 https://github.com/taehojo/deeplearning의 코드 참고