Linearism › 최적화 › OP.5

5장. 확률적 최적화와 Adam

최적화 · 2부. 반복 알고리즘

심화 · 약 15분 · 연습문제 5 · 그림 1

요약

유한합 문제와 SGD, 미니배치와 분산, 학습률 감소 조건, 모멘텀과 네스테로프 가속, AdaGrad·RMSProp·Adam, 가중치 감쇠와 AdamW, 학습률 스케줄

딥러닝 논문의 실험 설정에는 거의 항상 “Adam, learning rate 3e-4, β = (0.9, 0.999), weight decay 0.1, cosine schedule with warmup” 같은 한 줄이 있습니다. 이 장은 그 한 줄을 처음부터 이해하는 것이 목표입니다. 데이터가 수십억 개라 전체 그래디언트를 계산할 수 없으므로 일부만 뽑아 쓰는 확률적 경사하강법(SGD)에서 시작해, 관성을 주는 모멘텀, 좌표마다 학습률을 따로 맞추는 Adam까지 갑니다.

5.1 확률적 경사하강법

머신러닝의 손실은 데이터 nn개에 대한 평균입니다.

f(θ)=1n∑i=1nℓi(θ).f(\boldsymbol\theta) = \frac1n\sum_{i=1}^n\ell_i(\boldsymbol\theta).

정의 5.1 (SGD). 매 단계 데이터 BB개(미니배치)를 무작위로 뽑아 gk=1B∑i∈batch∇ℓi(θk)\mathbf g_k = \frac1B\sum_{i \in \text{batch}}\nabla\ell_i(\boldsymbol\theta_k)로 그래디언트를 어림하고 θk+1=θk−ηkgk\boldsymbol\theta_{k+1} = \boldsymbol\theta_k - \eta_k\mathbf g_k로 움직입니다.

  • gk\mathbf g_k는 참 그래디언트의 불편추정량입니다: E[gk]=∇f(θk)E[\mathbf g_k] = \nabla f(\boldsymbol\theta_k).
  • 분산은 σ2/B\sigma^2/B입니다(확률과 통계 6장). 배치를 4배로 늘리면 잡음의 표준편차가 절반이 됩니다.

한 단계는 n/Bn/B배 싸지만 잡음이 있습니다. 데이터가 많을 때는 정확한 한 걸음보다 부정확한 많은 걸음이 낫습니다.

학습률이 줄어야 하는 이유. 학습률이 일정하면 최솟값 근처에서도 잡음 때문에 계속 흔들립니다(흔들림의 크기 ∝ησ2\propto \eta\sigma^2). 정확히 수렴하려면 ∑ηk=∞\sum\eta_k = \infty(충분히 멀리 갈 수 있음)이고 ∑ηk2<∞\sum\eta_k^2 < \infty(잡음이 결국 사라짐)이어야 합니다. 예: ηk=η0/k\eta_k = \eta_0/k. 이 조건을 로빈스–먼로 조건(Robbins–Monro conditions)이라 합니다.

5.2 모멘텀

정의 5.2 (헤비볼 모멘텀).

vk+1=βvk+gk,θk+1=θk−ηvk+1.\mathbf v_{k+1} = \beta\mathbf v_k + \mathbf g_k, \qquad \boldsymbol\theta_{k+1} = \boldsymbol\theta_k - \eta\mathbf v_{k+1}.

v\mathbf v는 과거 그래디언트의 지수 가중 합, 곧 “속도”입니다. 언덕을 굴러가는 공처럼 관성이 생깁니다. 일정한 그래디언트 g\mathbf g가 계속되면 v→g/(1−β)\mathbf v \to \mathbf g/(1 - \beta)이므로, β=0.9\beta = 0.9이면 실제 걸음이 10배가 됩니다.

  • 길쭉한 골짜기에서 벽 사이를 오가는 성분은 부호가 바뀌어 상쇄되고, 바닥을 따라 가는 성분은 쌓입니다. 지그재그가 줄어듭니다.
  • 이차함수에서 최적의 η,β\eta, \beta를 고르면 수축률이 κ−1κ+1\frac{\sqrt\kappa - 1}{\sqrt\kappa + 1}이 됩니다. 3장의 κ−1κ+1\frac{\kappa - 1}{\kappa + 1}과 비교하면 κ\kappa가 κ\sqrt\kappa로 바뀌었습니다. κ=104\kappa = 10^4이면 반복 수가 약 100배 줄어듭니다.

네스테로프 가속(Nesterov accelerated gradient)은 그래디언트를 현재 점이 아니라 “관성으로 갈 점” θk−ηβvk\boldsymbol\theta_k - \eta\beta\mathbf v_k에서 계산합니다. 볼록 함수에서 O(1/k)O(1/k)를 O(1/k2)O(1/k^2)로 바꾸며, 이것이 1계 방법으로 가능한 최선의 속도임이 증명되어 있습니다.

5.3 적응적 학습률: AdaGrad, RMSProp, Adam

좌표마다 그래디언트의 크기가 다르면(희귀한 단어의 임베딩, 층마다 다른 크기) 학습률 하나로는 부족합니다. 그래디언트가 컸던 좌표는 작게, 작았던 좌표는 크게 움직입니다. 아래 식에서 제곱, 나눗셈, 제곱근은 모두 좌표별로 계산합니다.

  • AdaGrad: sk=sk−1+gk2\mathbf s_k = \mathbf s_{k-1} + \mathbf g_k^2, θ←θ−η gk/sk\boldsymbol\theta \leftarrow \boldsymbol\theta - \eta\,\mathbf g_k/\sqrt{\mathbf s_k}. 누적만 하므로 학습률이 계속 줄어 결국 멈춥니다.
  • RMSProp: sk=β2sk−1+(1−β2)gk2\mathbf s_k = \beta_2\mathbf s_{k-1} + (1 - \beta_2)\mathbf g_k^2. 지수 이동 평균이라 오래된 그래디언트는 잊습니다.

정의 5.3 (Adam). 모멘텀과 RMSProp을 합칩니다. β1=0.9\beta_1 = 0.9, β2=0.999\beta_2 = 0.999, ϵ=10−8\epsilon = 10^{-8}이 기본값입니다.

mk=β1mk−1+(1−β1)gk,m^k=mk/(1−β1k),sk=β2sk−1+(1−β2)gk2,s^k=sk/(1−β2k),θk=θk−1−η m^k/(s^k+ϵ).\begin{aligned} \mathbf m_k &= \beta_1\mathbf m_{k-1} + (1 - \beta_1)\mathbf g_k, & \hat{\mathbf m}_k &= \mathbf m_k/(1 - \beta_1^k),\\ \mathbf s_k &= \beta_2\mathbf s_{k-1} + (1 - \beta_2)\mathbf g_k^2, & \hat{\mathbf s}_k &= \mathbf s_k/(1 - \beta_2^k),\\ \boldsymbol\theta_k &= \boldsymbol\theta_{k-1} - \eta\,\hat{\mathbf m}_k/(\sqrt{\hat{\mathbf s}_k} + \epsilon). \end{aligned}

m\mathbf m은 그래디언트의 평균(1차 적률), s\mathbf s는 제곱의 평균(2차 적률)의 어림입니다. 이름 Adam은 adaptive moment estimation입니다.

편향 보정. m0=0\mathbf m_0 = \mathbf 0에서 시작하므로 처음에는 mk\mathbf m_k가 0쪽으로 치우칩니다. 그래디언트가 늘 gg이면 mk=(1−β1k)g\mathbf m_k = (1 - \beta_1^k)g이므로 1−β1k1 - \beta_1^k로 나누면 정확히 gg가 됩니다.

예제 5.4. 첫 단계(k=1k = 1)에서 m^1=g1\hat{\mathbf m}_1 = \mathbf g_1, s^1=g12\hat{\mathbf s}_1 = \mathbf g_1^2이므로 각 좌표의 걸음은 η g/∣g∣=±η\eta\,g/|g| = \pm\eta입니다(ϵ\epsilon 무시). 그래디언트의 크기와 상관없이 첫 걸음이 η\eta라는 점에서, Adam의 학습률은 “한 번에 움직일 최대 거리”에 가까운 의미를 가집니다.

굽은 골짜기에서 세 방법을 비교합니다. 같은 학습률에서 경사하강법(빨강)은 골짜기 바닥을 따라 느리게 기어가고, 모멘텀(파랑)은 관성으로 더 멀리 가며, Adam(초록)은 좌표마다 걸음을 맞춥니다. 학습률을 키우면 무엇이 먼저 발산하는지 봅니다

이 위젯은 JavaScript가 필요합니다

5.4 가중치 감쇠와 AdamW

L2 정규화 λ2∥θ∥2\frac\lambda2\|\boldsymbol\theta\|^2을 손실에 더하면 그래디언트에 λθ\lambda\boldsymbol\theta가 더해집니다. SGD에서는 이것이 매 단계 θ←(1−ηλ)θ−ηg\boldsymbol\theta \leftarrow (1 - \eta\lambda)\boldsymbol\theta - \eta\mathbf g, 곧 가중치를 조금씩 줄이는 가중치 감쇠(weight decay)와 같습니다.

Adam에서는 다릅니다. λθ\lambda\boldsymbol\theta도 s^\sqrt{\hat{\mathbf s}}로 나뉘므로 좌표마다 감쇠 정도가 달라집니다. AdamW는 감쇠를 Adam 갱신과 분리해 θ←θ−η(m^/(s^+ϵ)+λθ)\boldsymbol\theta \leftarrow \boldsymbol\theta - \eta(\hat{\mathbf m}/(\sqrt{\hat{\mathbf s}} + \epsilon) + \lambda\boldsymbol\theta)로 씁니다. 현재 대형 모델 학습의 표준입니다.

5.5 학습률 스케줄

  • 워밍업(warmup): 처음 몇천 단계 동안 학습률을 0에서 목표값까지 선형으로 올립니다. 초기에는 Adam의 s^\hat{\mathbf s} 어림이 불안정하고 매개변수가 엉망이라 큰 걸음이 위험하기 때문입니다.
  • 코사인 감소(cosine decay): ηt=ηmin⁡+12(ηmax⁡−ηmin⁡)(1+cos⁡(πt/T))\eta_t = \eta_{\min} + \frac12(\eta_{\max} - \eta_{\min})(1 + \cos(\pi t/T)). 처음엔 천천히, 중간엔 빠르게, 끝에서 다시 천천히 줄어듭니다.
  • 계단 감소(step decay): 정해진 시점마다 10분의 1로.

5.1절의 결론대로, 끝에서 학습률을 줄이면 잡음에 의한 흔들림이 줄어 손실이 한 번 더 떨어집니다.

5.6 이 장의 요약

  • SGD: 미니배치 그래디언트는 불편, 분산 σ2/B\sigma^2/B. 정확히 수렴하려면 학습률을 줄입니다.
  • 모멘텀: 그래디언트를 누적해 관성. 수렴이 κ→κ\kappa \to \sqrt\kappa로 빨라집니다.
  • Adam: 1·2차 적률의 이동 평균 + 편향 보정, 좌표별 학습률.
  • AdamW: 감쇠를 분리. 워밍업과 코사인 스케줄.

쓰이는 곳. 거의 모든 딥러닝 논문의 “Training details”(옵티마이저, 학습률, β, 배치 크기, 스케줄), 배치 크기와 학습률의 관계(선형 스케일링 규칙), 대형 모델 학습의 불안정성 논의(손실 급등, ε의 역할), 새 옵티마이저 논문(Lion, Sophia, Muon)이 이 장의 언어로 쓰입니다.

문제

5.1 [계산] · 확인 문제

미니배치 크기를 16에서 256으로 늘리면 미니배치 그래디언트의 표준편차는 몇 배가 될까요?

정답
0.25
풀이

분산이 1/B1/B에 비례하므로 표준편차는 16/256=1/4\sqrt{16/256} = 1/4배입니다.

5.2 [계산] · 확인 문제

모멘텀 β=0.95\beta = 0.95로 같은 그래디언트가 계속될 때, 속도 v\mathbf v는 그래디언트의 몇 배로 수렴하나요?

정답
20
풀이

v=βv+g\mathbf v = \beta\mathbf v + \mathbf g의 고정점은 g/(1−β)=20g\mathbf g/(1 - \beta) = 20\mathbf g입니다.

5.3 [계산] · 확인 문제

조건수 κ=100\kappa = 100일 때, 최적 학습률에서 이차함수의 수축률을 비교합니다.

방법 수축률
경사하강법 (κ−1)/(κ+1)(\kappa - 1)/(\kappa + 1) [?]
모멘텀 (κ−1)/(κ+1)(\sqrt\kappa - 1)/(\sqrt\kappa + 1) [?]
정답
99/101
9/11
풀이

99/101≈0.98099/101 \approx 0.980, 9/11≈0.8189/11 \approx 0.818입니다. 오차를 1/e1/e로 줄이는 데 약 50번 대 5번입니다.

5.4 [계산] · 확인 문제

Adam(β1=0.9\beta_1 = 0.9)에서 그래디언트가 매번 g=2g = 2로 일정할 때, 편향 보정 전 m3m_3은?

정답
0.542
풀이

mk=(1−0.9k)⋅2m_k = (1 - 0.9^k)\cdot2이므로 m3=(1−0.729)⋅2=0.542m_3 = (1 - 0.729)\cdot2 = 0.542입니다. 보정하면 0.542/0.271=20.542/0.271 = 2로 정확한 값이 됩니다.

5.5 [증명]

Adam에서 그래디언트가 매번 같은 값 g≠0g \ne 0이면, 모든 단계의 걸음 크기가 (ϵ\epsilon을 무시할 때) 정확히 η\eta임을 보입니다.

풀이

mk=(1−β1k)gm_k = (1 - \beta_1^k)g, sk=(1−β2k)g2s_k = (1 - \beta_2^k)g^2이므로 m^k=g\hat m_k = g, s^k=g2\hat s_k = g^2입니다. 걸음은 η m^k/s^k=η g/∣g∣\eta\,\hat m_k/\sqrt{\hat s_k} = \eta\,g/|g|이고 크기는 η\eta입니다.