目錄
1 指數權重移動平均
2 TensorFlow中滑動平均模型
3 偏差修正
1 指數權重移動平均
指數權重移動平均exponentially weighted moving average (EWMA),又叫指數移動平均exponential moving average (EMA)。
- 算術平均(權重相等)—>權重平均(權重不等)—>移動平均(大約是隻取最近的N次資料進行計算)—> 批量歸一化(BN)及各種優化算法的基礎
- EMA:是以指數式遞減權重的移動平均,各數值的權重影響力随時間呈指數式遞減,時間越靠近目前時刻的資料權重影響力越大
對于序列Y,EMA公式為:
這裡,α是一個介于(0,1)之間的權重系數;Yt是目前時刻t的值;St是目前時刻序列Y的指數移動平均值(EMA);S(t-1)是上一個時刻Y的EMA。
由該公式可以看出,EMA的一個好處就是,可以由目前時刻的Y值和上一時刻的EMA值,計算出目前時刻的EMA值,相比需要知道所有序列值,才能計算出的算術平均值,EMA節省了很多存儲空間,且計算簡單。
将EMA公式對Y序列展開,如下:
可以看出離目前時刻 t 越遠的Y值,其權重(1-α)成指數型衰減。
從這裡可以看出EMA名字的來源。
2 TensorFlow中滑動平均模型
TensorFlow中的滑動平均模型使用的是滑動平均(Moving Average)算法,又稱為指數權重移動平均算法(exponenentially weighted average),這也是ExponentialMovingAverage()函數的名稱由來。
先來看一個簡單的例子,這個例子來自吳恩達老師的DeepLearning課程。
首先這是一年365天的溫度散點圖,以天數為橫坐标,溫度為縱坐标,你可以看見各個小點分布在圖上,有一定的曲線趨勢,但是并不明顯:
接着,如果我們要看出這個溫度的變化趨勢,很明顯需要做一點處理,也即是我們的主題,用滑動平均算法處理。
首先給定一個值 v0,然後我們定義每一天的溫度是 a1,a2,a3·····,接着,我們計算出v1,v2,v3····來代替每一天的溫度,也就是上面的a1,a2,a3。
EWMA 的表達式如下:
上式中 θt 為時刻 t 的實際溫度;系數 β 表示權重下降的速率,其值越小下降的越快;vt 為 t 時刻 EWMA 的值。
在下圖中有兩條不同顔色的線,分别對應着不同的 β 值。
當 β=0.9 時,有
,對應着圖中的紅線,此時雖然曲線有些波動,但總體能拟合真實資料
當 β=0.98β=0.98 時,有
,對應着圖中的綠線,此時曲線較平,但卻有所偏離真實資料
在 t=0 時刻,一般初始化 v0=0 ,對 EWMA 的表達式進行歸納可以将 t 時刻的表達式寫成:
從上面式子中可以看出,數值的權重系數随着時間呈指數下降。在數學中一般會以
來作為一個臨界值,小于該值的權重系數的值不作考慮,接着來分析上面 β=0.9 和 β=0.98 的情況。
當 β=0.9 時,
約等于
,是以認為此時是近10個數值的權重平均。
當 β=0.98 時,
約等于
,是以認為此時是近50個數值的權重平均。這種情況也正是移動權重平均的來源。
具體的分析如下圖所示:
然後說一下這個滑動平均模型和深度學習有什麼關系:通常來說,我們的資料也會像上面的溫度一樣,具有不同的值,如果使用滑動平均模型,就可以使得整體資料變得更加平滑——這意味着資料的噪音會更少,而且不會出現異常值。但是同時β太大也會使得資料的曲線右移,和資料不拟合。需要不斷嘗試出一個β值,既可以拟合資料集,又可以減少噪音。
滑動平均模型在深度學習中還有另一個優點:它隻占用極少的記憶體。當你在模型中計算最近十天(有些情況下遠大于十天)的平均值的時候,你需要在記憶體中加載這十天的資料然後進行計算,但是指數權重平均值約等于最近十天的平均值,而且根據vt = v(t-1) * β + at * (1-β),你隻需要提供at這一天的資料,再加上v(t-1)的值和β值,相比起十天的資料這是相當小的資料量,同時占用更少的記憶體。
3 偏差修正
在初始化 v0=0 時實際上會存在一個問題。具體的如下圖所示:
從上圖中可以看出有一條綠色和紫色的曲線,都是對應于 β=0.98 時的曲線。理想狀況下應該是綠色的曲線,但當初始化 v0=0 時卻會得到紫色的曲線,這是因為初始化的值太小,導緻初期的數值都偏小,而随着時間的增長,初期的值的影響減小,紫色的曲線就慢慢和綠色的曲線重合。我們對公式做一些修改:
當 t 很小時,分母可以很好的放大目前的數值;當 t 很大時,分母的數值趨于1,對目前數值幾乎沒有影響。
EWMA 主要是被應用在動量優化算法中,比如Adam算法中的一階矩和二階矩都采用了上面修改後的EWMA算法。
指數權重移動平均法(EWMA):https://www.pianshen.com/article/6077318422/
AI數學基礎21——指數權重移動平均:https://www.jianshu.com/p/c1c5c5be02dc
指數權重移動平均法(EWMA):https://www.cnblogs.com/jiangxinyang/p/9705198.html