吳恩達深度學習筆記(41)-深度解析指數加權平均數

理解指數加權平均數(Understanding exponentially weighted averages)

上個筆記中,我們講到了指數加權平均數,這是幾個優化算法中的關鍵一環,而這幾個優化算法能幫助你訓練神經網絡。本筆記中,我希望進一步探討算法的本質作用。

回憶一下這個計算指數加權平均數的關鍵方程。

v_t=βv_(t-1)+(1-β)θ_t

比如β=0.9的時候,得到的結果是紅線,如果它更接近於1,

比如β=0.98,結果就是綠線,如果β小一點,如果是0.5,結果就是黃線。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

我們進一步地分析,來理解如何計算出每日溫度的平均值。

同樣的公式,v_t=βv_(t-1)+(1-β)θ_t

使β=0.9,寫下相應的幾個公式,所以在執行的時候,t從0到1到2到3,t的值在不斷增加,為了更好地分析,我寫的時候使得t的值不斷減小,然後繼續往下寫。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

首先看第一個公式,理解v_100是什麼?我們調換一下這兩項(0.9v_99 0.1θ_100),v_100=0.1θ_100+0.9v_99。

那麼v_99是什麼?我們就代入這個公式(v_99=0.1θ_99+0.9v_98),所以:

v_100=0.1θ_100+0.9(0.1θ_99+0.9v_98)。

那麼v_98是什麼?你可以用這個公式計算(v_98=0.1θ_98+0.9v_97),把公式代進去,所以:

v_100=0.1θ_100+0.9(0.1θ_99+0.9(0.1θ_98+0.9v_97))。

以此類推,如果你把這些括號都展開,

吳恩達深度學習筆記(41)-深度解析指數加權平均數

吳恩達深度學習筆記(41)-深度解析指數加權平均數

所以這是一個加和並平均,100號數據,也就是當日溫度。

我們分析v_100的組成,也就是在一年第100天計算的數據,但是這個是總和,包括100號數據,99號數據,97號數據等等。畫圖的一個辦法是,假設我們有一些日期的溫度,所以這是數據,這是t,所以100號數據有個數值,99號數據有個數值,98號數據等等,t為100,99,98等等,這就是數日的溫度數值。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

然後我們構建一個指數衰減函數,從0.1開始,到0.1×0.9,到0.1×〖(0.9)〗^2,以此類推,所以就有了這個指數衰減函數。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

計算v_100是通過,把兩個函數對應的元素,然後求和,用這個數值100號數據值乘以0.1,99號數據值乘以0.1乘以〖(0.9)〗^2,這是第二項,以此類推,所以選取的是每日溫度,將其與指數衰減函數相乘,然後求和,就得到了v_100。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

結果是,稍後我們詳細講解,不過所有的這些係數(0.10.1×0.90.1×(0.9)^2 0.1×(0.9)^3…),相加起來為1或者逼近1,我們稱之為偏差修正

,下個筆記會涉及。

最後也許你會問,到底需要平均多少天的溫度。實際上〖(0.9)〗^10大約為0.35,這大約是1/e,e是自然算法的基礎之一

大體上說,如果有1-ε,在這個例子中,ε=0.1,所以1-ε=0.9,(1-ε)^(1/ε)約等於1/e,大約是0.34,0.35,換句話說,10天后,曲線的高度下降到1/3,相當於在峰值的1/e。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

又因此當β=0.9的時候,我們說彷彿你在計算一個指數加權平均數,只關注了過去10天的溫度,因為10天后,權重下降到不到當日權重的三分之一。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

相反,如果,那麼0.98需要多少次方才能達到這麼小的數值?

(0.98)^50大約等於1/e,所以前50天這個數值比1/e大,數值會快速衰減,所以本質上這是一個下降幅度很大的函數,你可以看作平均了50天的溫度。

因為在例子中,要代入等式的左邊,ε=0.02,所以1/ε為50,我們由此得到公式,我們平均了大約1/(1-β)天的溫度,這裡ε代替了1-β,也就是說根據一些常數,你能大概知道能夠平均多少日的溫度,不過這只是思考的大致方向,並不是正式的數學證明。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

最後講講如何在實際中執行,還記得嗎?我們一開始將v_0設置為0,然後計算第一天v_1,然後v_2,以此類推。

現在解釋一下算法,可以將v_0,v_1,v_2等等寫成明確的變量,不過在實際中執行的話,你要做的是,一開始將v初始化為0,然後在第一天使v:=βv+(1-β)θ_1,然後第二天,更新v值,v:=βv+(1-β)θ_2,以此類推,有些人會把v加下標,來表示v是用來計算數據的指數加權平均數。

吳恩達深度學習筆記(41)-深度解析指數加權平均數

再說一次,但是換個說法,v_θ=0,然後每一天,拿到第t天的數據,把v更新為v:=βv_θ+(1-β)θ_t。

指數加權平均數公式的好處之一在於,它佔用極少內存,電腦內存中只佔用一行數字而已,然後把最新數據代入公式,不斷覆蓋就可以了,正因為這個原因,其效率,它基本上只佔用一行代碼,計算指數加權平均數也只佔用單行數字的存儲和內存

當然它並不是最好的,也不是最精準的計算平均數的方法。如果你要計算移動窗,你直接算出過去10天的總和,過去50天的總和,除以10和50就好,如此往往會得到更好的估測。

但缺點是,如果保存所有最近的溫度數據,和過去10天的總和,必須佔用更多的內存,執行更加複雜,計算成本也更加高昂。

所以在接下來的筆記中,我們會計算多個變量的平均值,從計算和內存效率來說,這是一個有效的方法,所以在機器學習中會經常使用,更不用說只要一行代碼,這也是一個優勢。

現在你學會了計算指數加權平均數,你還需要知道一個專業概念,叫做偏差修正,下一個筆記我們會講到它,接著你就可以用它構建更好的優化算法,而不是簡單直接的梯度下降法。


分享到:


相關文章: