指數加權平均(exponentially weighted averges),也叫指數加權移動平均,是一種經常使用的序列數據處理方式。算法
它的計算公式以下:函數
其中,學習
例如:優化
咱們有這樣一組氣溫數據,圖中橫軸爲一年中的第幾天,縱軸爲氣溫:spa
直接看上面的數據圖會發現噪音不少,3d
這時,咱們能夠用 指數加權平均 來提取這組數據的趨勢,orm
按照前面的公式計算:blog
這裏先設置 β = 0.9,首先初始化 V_0 = 0,而後計算出每一個 V_t:io
將計算後獲得的 V_t 表示出來,就獲得紅色線的數值:form
能夠看出,紅色的數據比藍色的原數據更加平滑,少了不少噪音,而且刻畫了原數據的趨勢。
指數加權平均,做爲原數據的估計值,不只能夠 1. 撫平短時間波動,起到了平滑的做用,
能夠看出,紅色的數據比藍色的原數據更加平滑,少了不少噪音,而且刻畫了原數據的趨勢。
指數加權平均,做爲原數據的估計值,不只能夠 1. 撫平短時間波動,起到了平滑的做用,
上面提到了一些 指數加權平均 的應用,這裏咱們着重看一下在優化算法中的做用。
以 Momentum 梯度降低法爲例,
Momentum 梯度降低法,就是計算了梯度的指數加權平均數,並以此來更新權重,它的運行速度幾乎老是快於標準的梯度降低算法。
這是爲何呢?
讓咱們來看一下這個圖,
例如這就是咱們要優化的成本函數的形狀,圖中紅點就表明咱們要達到的最小值的位置,
假設咱們從左下角這裏出發開始用梯度降低法,那麼藍色曲線就是一步一步迭代,一步一步向最小值靠近的軌跡。
能夠看出這種上下波動,減慢了梯度降低法的速度,並且沒法使用更大的學習率,由於若是用較大的學習率,可能會偏離函數的範圍。
若是有一種方法,可使得在縱軸上,學習得慢一點,減小這些擺動,可是在橫軸上,學習得快一些,快速地從左向右移移向紅點最小值,那麼訓練的速度就能夠加快不少。
這個方法就是動量 Momentum 梯度降低法,它在每次計算梯度的迭代中,對 dw 和 db 使用了指數加權平均法的思想,
這樣咱們就能夠獲得如圖紅色線的軌跡:
根據前面的計算式子:
將 V_{100} 展開獲得:
這裏能夠看出,V_t 是對天天溫度的加權平均,之因此稱之爲指數加權,是由於加權係數是隨着時間以指數形式遞減的,時間越靠近,權重越大,越靠前,權重越小。
再來看下面三種狀況:
當 β = 0.9 時,指數加權平均最後的結果如圖紅色線所示,表明的是最近 10 天的平均溫度值;
當 β = 0.98 時,指結果如圖綠色線所示,表明的是最近 50 天的平均溫度值;
當 β = 0.5 時,結果以下圖黃色線所示,表明的是最近 2 天的平均溫度值;
β 越小,噪音越多,雖然可以很快的適應溫度的變化,可是更容易出現奇異值。
β 越大,獲得的曲線越平坦,由於多平均了幾天的溫度,這個曲線的波動更小。
但有個缺點是,由於只有 0.02 的權重給了當天的值,而以前的數值權重佔了 0.98 ,
曲線進一步右移,在溫度變化時就會適應地更緩慢一些,會出現必定延遲。
經過上面的內容可知,β 也是一個很重要的超參數,不一樣的值有不一樣的效果,須要調節來達到最佳效果,通常 0.9 的效果就很好。