← 문제 목록/Nesterov Accelerated Gradient (NAG) [medium]
문제 해설

Nesterov Accelerated Gradient (NAG) [medium]

최적화 · medium

preview

Nesterov Accelerated Gradient [medium]

v1 Momentum 은 classical Polyak momentum. Nesterov momentum (Nesterov 1983) 은 한 단계 "look-ahead":

개념적 형태: vt=βvt1+f(wt1ηβvt1)(look-ahead 지점의 gradient)v_t = \beta v_{t-1} + \nabla f(w_{t-1} - \eta \beta v_{t-1}) \quad\text{(look-ahead 지점의 gradient)} wt=wt1ηvtw_t = w_{t-1} - \eta v_t

미리 관성 방향으로 "점프" 한 지점에서 gradient 를 잰다 → 더 정확한 미래 예측.

PyTorch 형식 (gradient 재사용)

실전에선 현재 지점 gradient gg 만 주어지므로, 수학적으로 동등한 형태:

vt=βvt1+gtv_t = \beta v_{t-1} + g_t wt=wt1η(βvt+gt)w_t = w_{t-1} - \eta \, (\beta v_t + g_t)

이 공식은 고전 momentum 과 같은 g,vg, v 만으로도 계산 가능. (torch.optim.SGD(nesterov=True) 가 이 방식).

v1 vs v3 차이

  • v1: wwηvneww \gets w - \eta v_{\text{new}}
  • v3 (NAG): wwη(g+βvnew)w \gets w - \eta (g + \beta v_{\text{new}})

= v1 update 에 "gg 한 번 더" 가산 → 더 공격적.

이론적 이점

  • Convex 문제에서 O(1/t2)O(1/t^2) 수렴 (고전 GD 는 O(1/t)O(1/t)).
  • Curvature 큰 방향의 가속 + 평평한 방향의 smoothing.

과제

함수 nesterov_step(w, g, v, lr, beta) 를 완성하세요.

  • 반환: (w_new, v_new).
  • 공식: vnew=βv+gv_{\text{new}} = \beta v + g, wnew=wη(βvnew+g)w_{\text{new}} = w - \eta (\beta v_{\text{new}} + g).

테스트 케이스

#이름검증
1반환 2-tuple
2v_new = β·v + gclassical momentum 과 동일
3w_new 공식: lr·(β·v_new + g)차이 핵심
4β=0 → plain SGD (Nesterov 무효)
5v1 momentum 과 w_new 비교 → 다름 (β>0)
6shape 유지 (고차원)
72차 quadratic 최적화: Nesterov 가 classical 보다 빨리 수렴
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.