그래디언트의 반대 방향($-\nabla f$)으로 반복 이동하며 함수의 최솟값을 찾는 최적화 알고리즘.
$\|\nabla L(\mathbf{\theta})\| < \epsilon$ (그래디언트가 충분히 작아지면 정지)
전체 데이터셋으로 그래디언트 계산. 정확하지만 대용량 데이터에서 느림.
샘플 하나씩 업데이트. 빠르지만 노이즈가 크고 진동함.
배치 크기 $B$. GPU 병렬처리에 적합. 실전에서 가장 많이 씀.
이전 이동 방향을 관성처럼 유지해 진동을 줄이고 수렴을 가속한다.
$\beta \approx 0.9$ 가 일반적. $\beta = 0$이면 기본 GD와 동일.
파라미터마다 누적 그래디언트 제곱합으로 학습률을 조정. 자주 등장하는 특성은 학습률이 줄어든다.
$$G_t = G_{t-1} + g_t^2 \qquad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{G_t + \epsilon}}\,g_t$$AdaGrad의 학습률이 너무 빨리 줄어드는 문제를 지수 이동 평균으로 해결.
$$v_t = \beta v_{t-1} + (1-\beta)g_t^2 \qquad \theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{v_t + \epsilon}}\,g_t$$모멘텀(1차 모멘트) + RMSProp(2차 모멘트)를 결합. 현재 딥러닝의 기본 옵티마이저.
$$m_t = \beta_1 m_{t-1} + (1-\beta_1)g_t \qquad \text{(1차 모멘트)}$$ $$v_t = \beta_2 v_{t-1} + (1-\beta_2)g_t^2 \qquad \text{(2차 모멘트)}$$ $$\hat{m}_t = \frac{m_t}{1-\beta_1^t}, \quad \hat{v}_t = \frac{v_t}{1-\beta_2^t} \qquad \text{(편향 보정)}$$ $$\theta_{t+1} = \theta_t - \frac{\eta}{\sqrt{\hat{v}_t}+\epsilon}\hat{m}_t$$일반적 하이퍼파라미터: $\eta=0.001$, $\beta_1=0.9$, $\beta_2=0.999$, $\epsilon=10^{-8}$
| 볼록 (Convex) | 비볼록 (Non-convex) | |
|---|---|---|
| 극소 = 전역 최소 | 항상 | 보장 없음 |
| GD 수렴 | 전역 최소로 수렴 | 지역 최소/안장점에 갇힐 수 있음 |
| 예 | 선형회귀, 로지스틱 회귀 | 신경망 |