기울기 소실(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의 코드 참고
'AI > 모두의 딥러닝' 카테고리의 다른 글
[모두의 딥러닝] 14. 피마 인디언 당뇨병 예측 데이터 분석(pandas, seaborn 라이브러리 사용) (0) | 2023.05.24 |
---|---|
[모두의 딥러닝] 13. 폐암 수술 환자의 생존율 예측 데이터 분석 (0) | 2023.05.24 |
[모두의 딥러닝] 11. 오차 역전파(back propagation) (2) | 2023.05.22 |
[모두의 딥러닝] 10. 다층 퍼셉트론(multilayer perceptron), XOR 문제 해결 (0) | 2023.05.22 |
[모두의 딥러닝] 9. 인공 신경망(artificial neural network, ANN), XOR 문제 (0) | 2023.05.22 |