: 기울기를 이용하여 손실함수를 최소화하는 방향으로 파라미터를 업데이트하는 알고리즘

1. SGD (Stochastic Gradient Descent)
전체 학습 데이터에서 미리 정의한 N개 만큼의 데이터를 랜덤으로 뽑아 학습하는 방법

Zigzag Oscillation : 지그재그로 학습되는 문제
(이것을 해결하려는 Optimizer 등장 -> Momentum)
2. Momentum
이전 단계에서 이동 방향을 기억하고, 현재 기울기에 관성을 더하는 방식
(과거에 이동하던 방향을 재활용하여 두 벡터의 합산으로 위치 업데이트)


(이것을 해결하려는 Optimizer 등장 -> NAG)
3. NAG (Nesterov Accelerated Gradient)
Momentum의 개선 버전으로 다음 위치를 미리보고, 기울기 계산하는 방식
(큰 차이 없지만 momentum 이용해서 한 단계 더 보고 이동)
동일한 Learning rate를 사용하는 것은 그렇게 좋은 성능을 내지 않음
이것을 해결하기 위해 나온 Optimizer -> AdaGrad
4. Adagrad (Adaptive Gradient)
각 파라미터마다 자동으로 학습률을 다르게 조정하는 방식


(이것을 해결하려는 Optimizer 등장 -> RMSProp)
5. RMSProp (Root Mena Square Propagation)
Adagrad의 기울기 제곱 누적으로 학습률이 너무 작아지는 것을 해결하기 위해, 지수 이동 평균으로 업데이트한 방식
Adagrad는 시간에 따른 단조증가 함수
-> RMSProp은 exponential average

6. Adam (Adaptive Moment Estimation)
Momentum과 Rmsprop의 장점을 합친 방식
적응형 학습률 조정, 방향성 조절 모두 가능하여 성능 가장 좋음
(최근에 가장 많이 사용하는 Optimizer)


Optimizer 비교