
Adam 한 스텝 업데이트
71번 Bias-corrected EWMA 는 m^=m/(1−βt) 보정 공식을 익혔습니다. 이제 실제 Adam 옵티마이저 한 스텝에 조립합니다:
입력: 파라미터 θ, 그래디언트 g, 이전 상태 m,v, 스텝 수 t, 하이퍼파라미터 β1,β2,ϵ,η.
- m←β1m+(1−β1)g (1차 모멘트)
- v←β2v+(1−β2)g2 (2차 모멘트)
- m^=m/(1−β1t)
- v^=v/(1−β2t)
- θ←θ−η⋅m^/(v^+ϵ)
반환: 업데이트된 (θ,m,v).
직관
- m^: 방향 (그래디언트의 평활). momentum 과 유사.
- v^: 스케일 — 최근에 큰 gradient 가 자주 들어왔던 축은 크게 나눠 속도 감소. AdaGrad/RMSProp 아이디어.
- 합치면 각 파라미터마다 적응적 학습률.
과제
함수 adam_step(theta, grad, m, v, t, lr, b1, b2, eps) 를 완성하세요.
- 입력: 모두 같은 shape 배열 (또는 스칼라).
- 반환:
(new_theta, new_m, new_v) 튜플.
- 루프 없이 elementwise.
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | 반환 tuple | 3개 배열 |
| 2 | 첫 스텝 부호 | grad>0 → θ 감소 |
| 3 | v 누적 (제곱 항) | v1=(1−β2)g2 |
| 4 | 스케일 무관 (t=1, g 크기 바꿔도 step ~ ±lr) | Adam의 '적응' 성질 |
| 5 | m, v 업데이트 공식 일치 | 수치 |