** 本文內容來自於吳恩達深度學習公開課
1、概述
加權移動平均法,是對觀察值分別給予不同的權數,按不同權數求得移動平均值,並以最后的移動平均值為基礎,確定預測值的方法。采用加權移動平均法,是因為觀察期的近期觀察值對預測值有較大影響,它更能反映近期變化的趨勢。
指數移動加權平均法,是指各數值的加權系數隨時間呈指數式遞減,越靠近當前時刻的數值加權系數就越大。
指數移動加權平均較傳統的平均法來說,一是不需要保存過去所有的數值;二是計算量顯著減小。
2、算法理解
引入一個例子,例子為美國一年內每天的溫度分布情況,具體如下圖所示

EWMA 的表達式如下:
$v_t = \beta v_{t-1} + (1 - \beta) \theta_t$
上式中 $ \theta_t$ 為時刻 $ t$ 的實際溫度;系數 $\beta$ 表示加權下降的速率,其值越小下降的越快;$v_t$ 為 $t$ 時刻 EWMA 的值。
在上圖中有兩條不同顏色的線,分別對應着不同的 $\beta$ 值。
當 $\beta = 0.9$ 時,有 $v_t = 0.9 v_{t-1} + 0.1 \theta_t$ ,對應着圖中的紅線,此時雖然曲線有些波動,但總體能擬合真實數據
當 $\beta = 0.98$ 時,有 $v_t = 0.98 v_{t-1} + 0.02 \theta_t$ ,對應着圖中的綠線,此時曲線較平,但卻有所偏離真實數據
在 $t=0$ 時刻,一般初始化 $v_0 = 0$ ,對 EWMA 的表達式進行歸納可以將 $t$ 時刻的表達式寫成:
$ v_t = (1-\beta) (\theta_t + \beta\theta_{t-1}+ ... + \beta^{t-1}\theta_1) $
從上面式子中可以看出,數值的加權系數隨着時間呈指數下降。在數學中一般會以 $\frac {1} {e}$ 來作為一個臨界值,小於該值的加權系數的值不作考慮,接着來分析上面 $\beta = 0.9 $ 和 $\beta = 0.98$ 的情況。
當 $\beta = 0.9$ 時,$0.9^{10}$ 約等於 $\frac {1} {e}$ ,因此認為此時是近10個數值的加權平均。
當 $\beta = 0.98$ 時,$0.9^{50}$ 約等於 $\frac {1} {e}$,因此認為此時是近50個數值的加權平均。這種情況也正是移動加權平均的來源。
具體的分析如下圖所示:

3、偏差修正
在初始化 $ v_0 = 0$ 時實際上會存在一個問題。具體的如下圖所示:

從上圖中可以看出有一條綠色和紫色的曲線,都是對應於 $\beta = 0.98$ 時的曲線。理想狀況下應該是綠色的曲線,但當初始化 $v_0 = 0$ 時卻會得到紫色的曲線,這是因為初始化的值太小,導致初期的數值都偏小,而隨着時間的增長,初期的值的影響減小,紫色的曲線就慢慢和綠色的曲線重合。我們對公式做一些修改:
$ v_t = \frac {\beta {v_{t-1}} + {(1 - \beta)} \theta_t} {1 - \beta^t} $
當 $t$ 很小時,分母可以很好的放大當前的數值;當 $t$ 很大時,分母的數值趨於1,對當前數值幾乎沒有影響。
EWMA 主要是被應用在動量優化算法中,比如Adam算法中的一階矩和二階矩都采用了上面修改后的EWMA算法。
