-
딥러닝_경사하강법 옵티마이저Learning with class/Deep Learning 2022. 12. 5. 19:11
참고 : Smart Tiger's blog (eoriented.github.io)
Smart Tiger's blog
딥러닝(Deep Learning) 살펴보기 2탄 지난 포스트에 Deep learning 살펴보기 1탄을 통해 딥러닝의 개요와 뉴럴 네트워크, 그리고 Underfitting의 문제점과 해결방법에 관해 알아보았습니다. 그럼 오늘은 이
eoriented.github.io
참고 : Local Minima 문제에도 불구하고 딥러닝이 잘 되는 이유는? — PangLog_k.k (tistory.com)
Local Minima 문제에도 불구하고 딥러닝이 잘 되는 이유는?
목차 Local Minima 문제에도 불구하고 딥러닝이 잘 되는 이유는? GD(Gradient Descent)가 Local Minima 문제를 피하는 방법은? 찾은 해가 Global Minimum인지 아닌지 알 수 있는 방법은? local minima 문제란 ? 우리의
variety82p.tistory.com
✔ 경사하강법의 옵티마이저
최적값을 찾아가는 경사하강법에도 다양한 조정값이 존재한다.
손실함수(loss 함수)의 형태(그래프)에 따라 적절한 옵티마이저가 달라질 수 있다.
손실함수의 형태에 따라 학습시간이 달라지거나 Local Minima* 문제가 발생할 수 있기 떄문
*local minima 문제란 ?
우리의 목표는 loss가 최소가 되길 원하는데 자칫 잘못하면 우리가 원하는 목표가 아닌 곳에서 이 loss값이 제일 작다고 판별할 수 있다. (local minimum에서도 gradient가 0이라 업데이트가 되지 않을 수 있음)
👍 But, 2014년 논문에 따르면([Dauphin14] [Y. Dauphin, R. Pascanu, C. Gulcehre, K. Cho, S. Ganguli, Y. Bengio. Identifying and attacking the saddle point problem in high-dimensional non-convex optimization.](http://arxiv.org/pdf/1406.2572.pdf))
- local minima문제는 사실상 고차원공간에서 발생하기 힘든 현상이기 때문이다.
- 실제 딥러닝 모델에서는 엄청난 수의 weight가 있는데 이 weight들이 모두 local minima에 빠져야 weight update가 정지 되기 때문에 사실상 큰 문제가 되지 않는다
- 고차원 공간에서의 critical point는 대부분 saddle point(안장점)이다
- 또한 local minima가 발생한다 해도 이는 사실 global minimum이거나 global minimum과 유사한 에러값을 가져 문제가 되지 않는다(실험적 결과)
✔ 경사하강법(GD)와 확률적경사하강법(SGD)
# GD
가중치의 기울기(gradient)를 구하고 최적의 loss값을 구하도록 조정하는 방법
모든 데이터셋을 통해 최적값을 찾아 나가기 때문에 학습시간이 오래 걸리는 문제가 발생
=> #SGD(Stochastic Gradient Descent)의 필요성
배치 사이즈 구분(좌) / 최적값을 찾아가는 과정(우) - GD
- 모든 데이터를 계산한다 => 소요시간 1시간
- 최적의 한스텝을 나아간다.
- 6 스텝 * 1시간 = 6시간
- 확실한데 너무 느리다.
- SGD
- 일부 데이터만 계산한다 => 소요시간 5분
- 빠르게 전진한다.
- 10 스텝 * 5분 => 50분
- 조금 헤메지만 그래도 빠르게 간다!
하지만, 여전히 최적값을 찾기 위한 방향 설정이 뒤죽박죽이거나, 학습율(Learning rate)를 조정하는 어려움이 발생
=> 다양한 Optimzer의 필요성
최근에 가장 많이 사용되는 옵티마이저는 Adam
- 방향성 -Momentum
- NAG
- 스텝 사이즈
- Adagrad
- RMSPop
- AdaDelta
- 방향성 + 스텝사이즈
- Adam
- Nadam
*스텝 사이즈(학습율, Learning Rate 개념)
한걸음 나아가기 위한 보폭이 낮으면 학습하는데 오래 걸리고, 너무 크면 최적의 값을 찾지 못하는 문제가 발생함
적절한 스텝사이즈가 중요하다
*모멘텀('관성'의 개념)
모멘텀은 경사하강법 (Gradient Descent Method) 통해 W가 이동하는 과정에서 일종의 '관성'을 부여하는 것으로,
즉 W(가중치)를 업데이트 할 때에 이전 단계의 업데이트 방향을 반영하는 것.
Local Minimum 을 피할 수 있게 해주며, 이전 속도가 더 반영되므로 수렴속도도 빨라짐.
하지만 W를 업데이트 할 때마다, 과거에 이동했던 양을 변수별로 저장해야하므로 변수에 대한 메모리가 2배로 소모된다
'Learning with class > Deep Learning' 카테고리의 다른 글
GAN(Generative Adversarial Networks) 개요 (0) 2022.12.08 Loss와 Metric 매개변수의 차이 (0) 2022.12.08 데이터 분석에서 Numpy를 쓰는 이유 (0) 2022.12.08 텐서플로우 vs 케라스 (참고페이지) (0) 2022.12.07 딥러닝의 이해(2) - 가중치 (0) 2022.12.05