← 문제 목록/Adam 옵티마이저 한 스텝
문제 해설

Adam 옵티마이저 한 스텝

최적화 · easy

preview

Adam 한 스텝 업데이트

71번 Bias-corrected EWMAm^=m/(1βt)\hat m = m / (1 - \beta^t) 보정 공식을 익혔습니다. 이제 실제 Adam 옵티마이저 한 스텝에 조립합니다:

입력: 파라미터 θ\theta, 그래디언트 gg, 이전 상태 m,vm, v, 스텝 수 tt, 하이퍼파라미터 β1,β2,ϵ,η\beta_1, \beta_2, \epsilon, \eta.

  1. mβ1m+(1β1)gm \leftarrow \beta_1 m + (1 - \beta_1) g    (1차 모멘트)
  2. vβ2v+(1β2)g2v \leftarrow \beta_2 v + (1 - \beta_2) g^2    (2차 모멘트)
  3. m^=m/(1β1t)\hat m = m / (1 - \beta_1^t)
  4. v^=v/(1β2t)\hat v = v / (1 - \beta_2^t)
  5. θθηm^/(v^+ϵ)\theta \leftarrow \theta - \eta \cdot \hat m / (\sqrt{\hat v} + \epsilon)

반환: 업데이트된 (θ,m,v)(\theta, m, v).

직관

  • m^\hat m: 방향 (그래디언트의 평활). momentum 과 유사.
  • v^\sqrt{\hat v}: 스케일 — 최근에 큰 gradient 가 자주 들어왔던 축은 크게 나눠 속도 감소. AdaGrad/RMSProp 아이디어.
  • 합치면 각 파라미터마다 적응적 학습률.

과제

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

  • 입력: 모두 같은 shape 배열 (또는 스칼라).
  • 반환: (new_theta, new_m, new_v) 튜플.
  • 루프 없이 elementwise.

테스트 케이스

#이름검증
1반환 tuple3개 배열
2첫 스텝 부호grad>0 → θ 감소
3vv 누적 (제곱 항)v1=(1β2)g2v_1 = (1-β_2) g^2
4스케일 무관 (t=1, g 크기 바꿔도 step ~ ±lr)Adam의 '적응' 성질
5m, v 업데이트 공식 일치수치
코드 작성
Loading...
실행 결과

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