본문 바로가기
Computer Science/AL, ML

[Optimization] Exponentially Weighted Average

by Gofo 2022. 4. 21.

Exponentially Weighted Average

평균을 취할 때 최근의 것의 비중을 크게하고 과거로 갈수록 비중을 작게하면서 평균을 취하는 방법이다.

 

$v_t = \beta v_{t-1} + (1-\beta)\theta _t$

* $\beta$ : hyperparameter

 

Exponentially weighted average를 통해 noise를 줄이면서 smoothing 할 수 있다.

 

Hyperparameter $/beta$

  • beta가 너무 작으면 : noise를 줄이지 못함
  • beta가 너무 크면 : delay가 너무 심함

 

여기서 사용된 $\beta$는 hyper parameter로 batch normalization에 사용된 $\beta$와 전혀 다른 것이다.

 

$\frac{1}{1-\beta}$개의 이전 데이터를 가지고 approximate average를 구하는 것으로 생각할 수 있다.

예를 들어 $\beta = 0.9$라면 10일간의 데이터를 가지고 approximate average를 구하는 것이다.

 

따라서 $\beta$가 클수록 더 이전의 데이터를 본다는 것이고 더 smooth하게 된다.

그러나 최근의 데이터보다는 이전의 데이터를 더 많이 보기 때문에 delay가 심해진다.

 

따라서 적당한 $\beta$의 값을 찾는 것이 좋다.

보통 0.9를 default로 사용한다.

 

 

Exponentially의 의미

$v_t = \beta v_{t-1} + (1-\beta)\theta _t$에서 $v_{t-1}$은 추정치, $\theta _t$는 실제 값을 의미한다.

 

이 식을 쭉 나열해서 보면 최근 데이터에 대한 가중치를 크게 주고 과거로 갈 수록 가중치가 exponential하게 줄어드는 것을 알 수 있다.

 

$\beta = 0.9$ 일 때 이를 쭉 나열해보면 아래와 같이 된다.

 


Bias Correction

문제

처음 데이터에 대해서는 이전의 데이터가 존재하지 않는다.

때문에 처음 데이터로 0에 대한 exponentially weighted average를 구하게 되면 초반 부분의 값이 과하게 작아진다.

 

이를 수정하는 방법이 bias correction이다.

다만 충분히 이후 데이터로 가게 되면 bias correction을 고려하지 않아도 된다.

 

 

Bias Correction

$v_t$ 대신에 $\frac{v_t}{1-\beta ^t}$을 사용한다.

따라서 $\frac{\beta v _{t-1} + (1-\beta) \theta _t}{1- \beta ^t}$ 가 추정치가 된다.

 

예를 들어 위 식의 $v_2$는 $v_2 / (1-\beta^2) = v_2 / 0.0396 = (0.0196 \theta _1 + 0.02 \theta _2) / 0.0396 = 0.49 \theta _1 + 0.51 \theta_2$ 가 된다.

 

 

'Computer Science > AL, ML' 카테고리의 다른 글

[Optimization] RMSProp  (0) 2022.04.21
[Optimization] Gradient Descent with Momentum  (0) 2022.04.21
Optimization  (0) 2022.04.21
[Batch Normalization] Covariate Shift Problem  (0) 2022.04.21
Batch Normalization  (0) 2022.04.21

댓글