
Bias-corrected EWMA (Adam 스타일)
70번 EWMA 는 초기값 y0=x0 로 시작했지만, Adam 옵티마이저 는 y0=0 으로 시작하기 때문에 초기 스텝에서 값이 0 쪽으로 편향 됩니다:
yt=β⋅yt−1+(1−β)⋅xt,y0=0
t=1: y1=(1−β)x1 — x1 에 비해 작음. 지수 가중 합이 ∑k=1t(1−β)βt−k=1−βt 뿐이기 때문.
편향 보정
y^t=1−βtyt
- t 가 작을 때 분모 <1 → y^t 를 키워줌.
- t→∞: 분모 →1 → 보정 없음.
이게 Adam의 m^t=mt/(1−β1t) 와 v^t=vt/(1−β2t) 수식의 정체.
과제
함수 ewma-v1_bias_corrected(x, beta) 를 완성하세요.
- 1D 배열
x, 스칼라 β∈(0,1).
- 각 t=1…T 에 대해:
- yt=βyt−1+(1−β)xt (초기 y0=0)
- y^t=yt/(1−βt)
- 반환: 길이 T 의 y^ 배열.
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | 첫 값 = x[0] | bias 보정의 핵심 |
| 2 | 상수 신호 → 상수 출력 | 정상상태에서 bias 없음 |
| 3 | β=0 → x 그대로 | smoothing 없음 |
| 4 | t→∞ 에서 일반 EWMA 와 수렴 | |
| 5 | shape 유지 | |