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