← 문제 목록/AdaGrad Step (decay 없는 누적) [medium]
문제 해설

AdaGrad Step (decay 없는 누적) [medium]

최적화 · medium

preview

AdaGrad [medium]

v1 RMSPropss지수이동평균 으로 최근 gradient 에 집중. AdaGrad (Duchi 2011) 는 더 단순 — 과거 전체 제곱합 누적:

st=st1+gt2(decay 없음)s_t = s_{t-1} + g_t^2 \quad (\text{decay 없음}) wt=wt1ηst+ϵgtw_t = w_{t-1} - \frac{\eta}{\sqrt{s_t} + \epsilon} g_t

RMSProp vs AdaGrad

AdaGradRMSProp
ss 업데이트s+g2s + g^2 누적βs+(1β)g2\beta s + (1-\beta) g^2 지수 평활
장기 behaviorstep ↓ 점점 0안정적
적합sparse features (NLP embedding)비정상 목적 (RL, online)

핵심 강점: 희귀 특성

Sparse 특성 (g=0g = 0 자주) 은 ss 가 거의 안 커짐 → step size 가 유지됨. 반면 dense 특성 (항상 update) 의 ss 는 빠르게 쌓여 step ↓. 결과: rare & important 특성이 적절히 업데이트됨 — word2vec, fastText 류에서 유용.

한계

장시간 학습 시 ss \to \inftystep 이 너무 작아져 학습 stop. RMSProp/Adam 은 decay 로 이 문제 해결.

과제

함수 adagrad_step(w, g, s, lr, eps) 를 완성하세요.

  • w, g, s: 같은 shape 배열.
  • 반환: (w_new, s_new).
  • snew=s+g2s_{\text{new}} = s + g^2 (decay 없음, β\beta 없음!).
  • wnew=wηg/(snew+ϵ)w_{\text{new}} = w - \eta g / (\sqrt{s_{\text{new}}} + \epsilon).

테스트 케이스

#이름검증
1반환 2-tuple
2s 누적: s_new = s + g² (decay 없음)
3w 업데이트 공식
4RMSProp 과 다름 (β 미적용)
5여러 step 누적 → step size 감소AdaGrad 특유
6sparse 특성: 덜 활성한 차원의 step 유지
7torch.optim.Adagrad 와 일치 (있으면)
코드 작성
Loading...
실행 결과

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