
v1 RMSProp 은 의 지수이동평균 으로 최근 gradient 에 집중. AdaGrad (Duchi 2011) 는 더 단순 — 과거 전체 제곱합 누적:
| AdaGrad | RMSProp | |
|---|---|---|
| 업데이트 | 누적 | 지수 평활 |
| 장기 behavior | step ↓ 점점 0 | 안정적 |
| 적합 | sparse features (NLP embedding) | 비정상 목적 (RL, online) |
Sparse 특성 ( 자주) 은 가 거의 안 커짐 → step size 가 유지됨. 반면 dense 특성 (항상 update) 의 는 빠르게 쌓여 step ↓. 결과: rare & important 특성이 적절히 업데이트됨 — word2vec, fastText 류에서 유용.
장시간 학습 시 → step 이 너무 작아져 학습 stop. RMSProp/Adam 은 decay 로 이 문제 해결.
함수 adagrad_step(w, g, s, lr, eps) 를 완성하세요.
w, g, s: 같은 shape 배열.(w_new, s_new).| # | 이름 | 검증 |
|---|---|---|
| 1 | 반환 2-tuple | |
| 2 | s 누적: s_new = s + g² (decay 없음) | |
| 3 | w 업데이트 공식 | |
| 4 | RMSProp 과 다름 (β 미적용) | |
| 5 | 여러 step 누적 → step size 감소 | AdaGrad 특유 |
| 6 | sparse 특성: 덜 활성한 차원의 step 유지 | |
| 7 | torch.optim.Adagrad 와 일치 (있으면) |
코드를 작성하고 Run 을 눌러보세요.