2.4 理解指数加权平均-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
| 2.3 指數加權平均 | 回到目錄 | 2.5 指數加權平均的偏差修正 |
理解指數加權平均 (Understanding Exponentially Weighted Averages)
上個視頻中,我們講到了指數加權平均數,這是幾個優化算法中的關鍵一環,而這幾個優化算法能幫助你訓練神經網絡。本視頻中,我希望進一步探討算法的本質作用。
回憶一下這個計算指數加權平均數的關鍵方程。
vt=βvt?1+(1?β)θtv_t=\beta v_{t-1}+(1-\beta)\theta_tvt?=βvt?1?+(1?β)θt?
β=0.9\beta=0.9β=0.9 的時候,得到的結果是紅線,如果它更接近于1,比如0.98,結果就是綠線,如果 β\betaβ 小一點,如果是0.5,結果就是黃線。
我們進一步地分析,來理解如何計算出每日溫度的平均值。
同樣的公式,vt=βvt?1+(1?β)θtv_t=\beta v_{t-1}+(1-\beta)\theta_tvt?=βvt?1?+(1?β)θt?
使 β=0.9\beta=0.9β=0.9 ,寫下相應的幾個公式,所以在執行的時候, ttt 從0到1到2到3, ttt 的值在不斷增加,為了更好地分析,我寫的時候使得 ttt 的值不斷減小,然后繼續往下寫。
首先看第一個公式,理解 v100v_{100}v100? 是什么?我們調換一下這兩項( 0.9v990.1θ1000.9v_{99}0.1\theta_{100}0.9v99?0.1θ100? ), v100=0.1θ100+0.9v99v_{100}=0.1\theta_{100}+0.9v_{99}v100?=0.1θ100?+0.9v99? 。
那么 v99v_{99}v99? 是什么?我們就代入這個公式( v99=0.1θ99+0.9v98v_{99}=0.1\theta_{99}+0.9v_{98}v99?=0.1θ99?+0.9v98? ),所以: v100=0.1θ100+0.9(0.1θ99+0.9v98)v_{100}=0.1\theta_{100}+0.9(0.1\theta_{99}+0.9v_{98})v100?=0.1θ100?+0.9(0.1θ99?+0.9v98?)
那么 v98v_{98}v98? 是什么?我們就代入這個公式( v98=0.1θ98+0.9v97v_{98}=0.1\theta_{98}+0.9v_{97}v98?=0.1θ98?+0.9v97? ),所以: v100=0.1θ100+0.9(0.1θ99+0.9(0.1θ98+0.9v97))v_{100}=0.1\theta_{100}+0.9(0.1\theta_{99}+0.9(0.1\theta_{98}+0.9v_{97}))v100?=0.1θ100?+0.9(0.1θ99?+0.9(0.1θ98?+0.9v97?))
以此類推,如果你把這些括號都展開,
v100=0.1θ100+0.1?0.9θ99+0.1?0.92θ98+0.1?0.93θ97+0.1?0.94θ96+?v_{100}=0.1\theta_{100}+0.1*0.9\theta_{99}+0.1*0.9^2\theta_{98}+0.1*0.9^3\theta_{97}+0.1*0.9^4\theta_{96}+\cdotsv100?=0.1θ100?+0.1?0.9θ99?+0.1?0.92θ98?+0.1?0.93θ97?+0.1?0.94θ96?+?
所以這是一個加和并平均,100號數據,也就是當日溫度。我們分析 v100v_{100}v100? 的組成,也就是在一年第100天計算的數據,但是這個是總和,包括100號數據,99號數據,97號數據等等。畫圖的一個辦法是,假設我們有一些日期的溫度,所以這是數據,這是 ttt ,所以100號數據有個數值,99號數據有個數值,98號數據等等, ttt 為100,99,98等等,這就是數日的溫度數值。
然后我們構建一個指數衰減函數,從0.1開始,到 0.1?0.90.1*0.90.1?0.9 ,到 0.1?0.920.1*0.9^20.1?0.92 ,以此類推,所以就有了這個指數衰減函數。
計算 v100v_{100}v100? 是通過,把兩個函數對應的元素,然后求和,用這個數值100號數據值乘以0.1,99號數據值乘以0.1乘以 0.920.9^20.92,這是第二項,以此類推,所以選取的是每日溫度,將其與指數衰減函數相乘,然后求和,就得到了 v100v_{100}v100? 。
結果是,稍后我們詳細講解,不過所有的這些系數( 0.10.1+0.90.1?0.920.1?0.93…0.10.1+0.90.1*0.9^20.1*0.9^3\dots0.10.1+0.90.1?0.920.1?0.93… ),相加起來為1或者逼近1,我們稱之為偏差修正,下個視頻會涉及。
最后也許你會問,到底需要平均多少天的溫度。實際上 0.9100.9^{10}0.910 大約為0.35,這大約是 1e\frac1ee1? , eee 是自然算法的基礎之一。大體上說,如果有 1??1-\epsilon1?? ,在這個例子中, ?=0.1\epsilon=0.1?=0.1 ,所以 1??=0.91-\epsilon=0.91??=0.9 , (1??)1?(1-\epsilon)^{\frac1\epsilon}(1??)?1? 約等于 1e\frac1ee1? ,大約是0.34,0.35,換句話說,10天后,曲線的高度下降到 13\frac1331? ,相當于在峰值的 1e\frac1ee1? 。
又因此當 β=0.9\beta=0.9β=0.9 的時候,我們說仿佛你在計算一個指數加權平均數,只關注了過去10天的溫度,因為10天后,權重下降到不到當日權重的三分之一。
相反,如果,那么0.98需要多少次方才能達到這么小的數值? 0.98500.98^{50}0.9850 大約等于 1e\frac1ee1? ,所以前50天這個數值比 1e\frac1ee1? 大,數值會快速衰減,所以本質上這是一個下降幅度很大的函數,你可以看作平均了50天的溫度。因為在例子中,要代入等式的左邊, ?=0.02\epsilon=0.02?=0.02 ,所以 1?\frac1\epsilon?1? 為50,我們由此得到公式,我們平均了大約 1(1?β)\frac1{(1-\beta)}(1?β)1? 天的溫度,這里 ?\epsilon? 代替了 1?β1-\beta1?β ,也就是說根據一些常數,你能大概知道能夠平均多少日的溫度,不過這只是思考的大致方向,并不是正式的數學證明。
最后講講如何在實際中執行,還記得嗎?我們一開始將 v0v_0v0? 設置為0,然后計算第一天 v1v_1v1? ,然后 v2v_2v2? ,以此類推。
現在解釋一下算法,可以將 v0v_0v0? , v1v_1v1? , v2v_2v2? 等等寫成明確的變量,不過在實際中執行的話,你要做的是,一開始將 vvv 初始化為0,然后在第一天使 v:=βv+(1?β)θ1v:=\beta v+(1-\beta)\theta_1v:=βv+(1?β)θ1? ,然后第二天,更新 vvv 值, v:=βv+(1?β)θ2v:=\beta v+(1-\beta)\theta_2v:=βv+(1?β)θ2? ,以此類推,有些人會把 vvv 加下標,來表示 vvv 是用來計算數據的指數加權平均數。
再說一次,但是換個說法, vθ=0v_\theta=0vθ?=0 ,然后每一天,拿到第 ttt 天的數據,把 vvv 更新為 vt=βvθ+(1?β)θtv_t=\beta v_{\theta}+(1-\beta)\theta_tvt?=βvθ?+(1?β)θt? 。
指數加權平均數公式的好處之一在于,它占用極少內存,電腦內存中只占用一行數字而已,然后把最新數據代入公式,不斷覆蓋就可以了,正因為這個原因,其效率,它基本上只占用一行代碼,計算指數加權平均數也只占用單行數字的存儲和內存,當然它并不是最好的,也不是最精準的計算平均數的方法。如果你要計算移動窗,你直接算出過去10天的總和,過去50天的總和,除以10和50就好,如此往往會得到更好的估測。但缺點是,如果保存所有最近的溫度數據,和過去10天的總和,必須占用更多的內存,執行更加復雜,計算成本也更加高昂。
所以在接下來的視頻中,我們會計算多個變量的平均值,從計算和內存效率來說,這是一個有效的方法,所以在機器學習中會經常使用,更不用說只要一行代碼,這也是一個優勢。
現在你學會了計算指數加權平均數,你還需要知道一個專業概念,叫做偏差修正,下一個視頻我們會講到它,接著你就可以用它構建更好的優化算法,而不是簡單直接的梯度下降法。
課程PPT
| 2.3 指數加權平均 | 回到目錄 | 2.5 指數加權平均的偏差修正 |
總結
以上是生活随笔為你收集整理的2.4 理解指数加权平均-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.3 指数加权平均-深度学习第二课《改
- 下一篇: 2.5 指数加权平均的偏差修正-深度学习