
v1 Bias-corrected EWMA 는 Adam 의 1차 모멘트 () 만. 전체 Adam step (Kingma & Ba 2015) 은 2차 모멘트 () 도 추적해서 각 파라미터 별 적응적 학습률 을 제공:
m_t &= \beta_1 m_{t-1} + (1 - \beta_1) g_t \\ v_t &= \beta_2 v_{t-1} + (1 - \beta_2) g_t^2 \\ \hat{m}_t &= m_t / (1 - \beta_1^t) \\ \hat{v}_t &= v_t / (1 - \beta_2^t) \\ x_t &= x_{t-1} - \eta \cdot \frac{\hat{m}_t}{\sqrt{\hat{v}_t} + \epsilon} \end{aligned}$$ ## 핵심 아이디어 - $\hat{m}_t$: 그래디언트의 smoothed 평균 (momentum). - $\hat{v}_t$: 그래디언트의 smoothed 제곱 평균 (variance estimate). - 나누기: **작은 variance** (저노이즈) → 큰 업데이트, **큰 variance** (고노이즈) → 작은 업데이트. - $\epsilon$: 0 division 방지 (보통 $10^{-8}$). ## 하이퍼파라미터 표준값 - $\eta = 0.001$ (learning rate) - $\beta_1 = 0.9$ (momentum decay) - $\beta_2 = 0.999$ (variance decay) - $\epsilon = 10^{-8}$ ## 과제 함수 `adam_step(x, grad, m, v, t, lr=0.001, beta1=0.9, beta2=0.999, eps=1e-8)` 를 완성하세요. - 입력: 현재 param `x` (배열), gradient `grad` (같은 shape), 상태 `m`, `v` (같은 shape), 스텝 `t` (1-based). - 반환: `(x_new, m_new, v_new)` — 업데이트된 파라미터와 상태. - 힌트: bias correction 을 정확히 적용할 것. ## 테스트 케이스 | # | 이름 | 검증 | |---|---|---| | 1 | 반환 3-tuple, 모두 shape 유지 | | | 2 | m, v 상태 업데이트 공식 검증 | | | 3 | t=1 에서 bias correction 정확 | | | 4 | 큰 t 에서 correction factor → 1 (SGD 와 근사) | | | 5 | 제로 gradient → x 변화 없음 | | | 6 | 일관된 signal → x 가 정상 방향 이동 | | | 7 | PyTorch `torch.optim.Adam` 과 일치 (있으면) | |코드를 작성하고 Run 을 눌러보세요.