← 문제 목록/AdamW 한 스텝 (decoupled weight decay)
문제 해설

AdamW 한 스텝 (decoupled weight decay)

최적화 · easy

preview

AdamW 한 스텝 (Decoupled Weight Decay)

74번 Adam 은 gradient gg 만 받아 업데이트. L2 정규화 를 쓰면 보통 gg+λwg \leftarrow g + \lambda w 로 gradient 에 더하는데, Adam의 적응적 스케일링 이 이 항에도 적용되어 가중치 감쇠 효과가 왜곡 됩니다.

AdamW (Loshchilov & Hutter 2019) 해결책: weight decay 를 update 에 직접 더함:

1–4: Adam 과 동일 (m,v,m^,v^m, v, \hat m, \hat v). 5: θθη(m^v^+ϵ+λθ)\theta \leftarrow \theta - \eta \cdot \left( \dfrac{\hat m}{\sqrt{\hat v} + \epsilon} + \lambda \, \theta \right)

가중치 감쇠가 v^\sqrt{\hat v} 로 나누어지지 않음 → 모든 축에 균일하게 적용.

왜 중요한가

  • 대부분의 현대 Transformer (BERT, GPT 계열) 학습에 AdamW 사용.
  • Adam+L2 보다 generalization 이 실제로 더 좋음 (논문 결과).
  • PyTorch torch.optim.AdamW 는 AdamW 기본.

Adam + L2 vs AdamW

항목Adam + L2AdamW
g 에 λw 더함?아니오
update 에 λθ 더함?아니오
λ 가 v\sqrt v 로 나뉨?아니오

과제

함수 adamw_step(theta, grad, m, v, t, lr, b1, b2, eps, wd) 를 완성하세요.

  • wd = weight decay 계수 λ\lambda.
  • Adam 로직 + 마지막에 ηλθ-\eta \cdot \lambda \cdot \theta 추가 감소.
  • 반환: (new_theta, new_m, new_v).

테스트 케이스

#이름검증
1wd=0 → Adam 과 동일74번 결과 일치
2grad=0, wd>0 → θ 축소θθ(1lrwd)\theta \leftarrow \theta(1 - lr \cdot wd)
3m, v 업데이트는 Adam 과 동일
4부호grad>0, wd>0 둘 다 θ 감소
5shape 유지
코드 작성
Loading...
실행 결과

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