神经网络优化篇:理解指数加权平均数(Understanding exponentially weighted averages)
理解指數加權平均數
回憶一下這個計算指數加權平均數的關鍵方程。
\({{v}_{t}}=\beta {{v}_{t-1}}+(1-\beta ){{\theta }_{t}}\)
\(\beta=0.9\)的時候,得到的結果是紅線,如果它更接近于1,比如0.98,結果就是綠線,如果\(\beta\)小一點,如果是0.5,結果就是黃線。
進一步地分析,來理解如何計算出每日溫度的平均值。
同樣的公式,\({{v}_{t}}=\beta {{v}_{t-1}}+(1-\beta ){{\theta }_{t}}\)
使\(\beta=0.9\),寫下相應的幾個公式,所以在執行的時候,\(t\)從0到1到2到3,\(t\)的值在不斷增加,為了更好地分析,寫的時候使得\(t\)的值不斷減小,然后繼續往下寫。
首先看第一個公式,理解\(v_{100}\)是什么?調換一下這兩項(\(0.9v_{99}0.1\theta_{100}\)),\(v_{100}= 0.1\theta_{100} + 0.9v_{99}\)。
那么\(v_{99}\)是什么?就代入這個公式(\(v_{99} = 0.1\theta_{99} +0.9v_{98}\)),所以:
\(v_{100} = 0.1\theta_{100} + 0.9(0.1\theta_{99} + 0.9v_{98})\)。
那么\(v_{98}\)是什么?可以用這個公式計算(\(v_{98} = 0.1\theta_{98} +0.9v_{97}\)),把公式代進去,所以:
\(v_{100} = 0.1\theta_{100} + 0.9(0.1\theta_{99} + 0.9(0.1\theta_{98} +0.9v_{97}))\)。
以此類推,如果把這些括號都展開,
\(v_{100} = 0.1\theta_{100} + 0.1 \times 0.9 \theta_{99} + 0.1 \times {(0.9)}^{2}\theta_{98} + 0.1 \times {(0.9)}^{3}\theta_{97} + 0.1 \times {(0.9)}^{4}\theta_{96} + \ldots\)
所以這是一個加和并平均,100號數據,也就是當日溫度。分析\(v_{100}\)的組成,也就是在一年第100天計算的數據,但是這個是總和,包括100號數據,99號數據,97號數據等等。畫圖的一個辦法是,假設有一些日期的溫度,所以這是數據,這是\(t\),所以100號數據有個數值,99號數據有個數值,98號數據等等,\(t\)為100,99,98等等,這就是數日的溫度數值。
然后構建一個指數衰減函數,從0.1開始,到\(0.1 \times 0.9\),到\(0.1 \times {(0.9)}^{2}\),以此類推,所以就有了這個指數衰減函數。
計算\(v_{100}\)是通過,把兩個函數對應的元素,然后求和,用這個數值100號數據值乘以0.1,99號數據值乘以0.1乘以\({(0.9)}^{2}\),這是第二項,以此類推,所以選取的是每日溫度,將其與指數衰減函數相乘,然后求和,就得到了\(v_{100}\)。
結果是,稍后詳細講解,不過所有的這些系數(\(0.10.1 \times 0.90.1 \times {(0.9)}^{2}0.1 \times {(0.9)}^{3}\ldots\)),相加起來為1或者逼近1,稱之為偏差修正。
最后也許會問,到底需要平均多少天的溫度。實際上\({(0.9)}^{10}\)大約為0.35,這大約是\(\frac{1}{e}\),e是自然算法的基礎之一。大體上說,如果有\(1-\varepsilon\),在這個例子中,\(\varepsilon=0.1\),所以\(1-\varepsilon=0.9\),\({(1-\varepsilon)}^{(\frac{1}{\varepsilon})}\)約等于\(\frac{1}{e}\),大約是0.34,0.35,換句話說,10天后,曲線的高度下降到\(\frac{1}{3}\),相當于在峰值的\(\frac{1}{e}\)。
又因此當\(\beta=0.9\)的時候,說仿佛在計算一個指數加權平均數,只關注了過去10天的溫度,因為10天后,權重下降到不到當日權重的三分之一。
相反,如果,那么0.98需要多少次方才能達到這么小的數值?\({(0.98)}^{50}\)大約等于\(\frac{1}{e}\),所以前50天這個數值比\(\frac{1}{e}\)大,數值會快速衰減,所以本質上這是一個下降幅度很大的函數,可以看作平均了50天的溫度。因為在例子中,要代入等式的左邊,\(\varepsilon=0.02\),所以\(\frac{1}{\varepsilon}\)為50,由此得到公式,平均了大約\(\frac{1}{(1-\beta)}\)天的溫度,這里\(\varepsilon\)代替了\(1-\beta\),也就是說根據一些常數,能大概知道能夠平均多少日的溫度,不過這只是思考的大致方向,并不是正式的數學證明。
最后講講如何在實際中執行,還記得嗎?一開始將\(v_{0}\)設置為0,然后計算第一天\(v_{1}\),然后\(v_{2}\),以此類推。
現在解釋一下算法,可以將\(v_{0}\),\(v_{1}\),\(v_{2}\)等等寫成明確的變量,不過在實際中執行的話,要做的是,一開始將\(v\)初始化為0,然后在第一天使\(v:= \beta v + (1 - \beta)\theta_{1}\),然后第二天,更新\(v\)值,\(v: = \beta v + (1 -\beta)\theta_{2}\),以此類推,有些人會把\(v\)加下標,來表示\(v\)是用來計算數據的指數加權平均數。
再說一次,但是換個說法,\(v_{\theta} =0\),然后每一天,拿到第\(t\)天的數據,把\(v\)更新為\(v: = \beta v_{\theta} + (1 -\beta)\theta_{t}\)。
指數加權平均數公式的好處之一在于,它占用極少內存,電腦內存中只占用一行數字而已,然后把最新數據代入公式,不斷覆蓋就可以了,正因為這個原因,其效率,它基本上只占用一行代碼,計算指數加權平均數也只占用單行數字的存儲和內存,當然它并不是最好的,也不是最精準的計算平均數的方法。如果要計算移動窗,直接算出過去10天的總和,過去50天的總和,除以10和50就好,如此往往會得到更好的估測。但缺點是,如果保存所有最近的溫度數據,和過去10天的總和,必須占用更多的內存,執行更加復雜,計算成本也更加高昂。
總結
以上是生活随笔為你收集整理的神经网络优化篇:理解指数加权平均数(Understanding exponentially weighted averages)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试官:String长度有限制吗?是多少
- 下一篇: 下一代APP Store——GPT应用商