神经网络优化篇:详解RMSprop
RMSprop
知道了動量(Momentum)可以加快梯度下降,還有一個叫做RMSprop的算法,全稱是root mean square prop算法,它也可以加速梯度下降,來看看它是如何運作的。
回憶一下之前的例子,如果執行梯度下降,雖然橫軸方向正在推進,但縱軸方向會有大幅度擺動,為了分析這個例子,假設縱軸代表參數\(b\),橫軸代表參數\(W\),可能有\(W_{1}\),\(W_{2}\)或者其它重要的參數,為了便于理解,被稱為\(b\)和\(W\)。
所以,想減緩\(b\)方向的學習,即縱軸方向,同時加快,至少不是減緩橫軸方向的學習,RMSprop算法可以實現這一點。
在第\(t\)次迭代中,該算法會照常計算當下mini-batch的微分\(dW\),\(db\),所以會保留這個指數加權平均數,用到新符號\(S_{dW}\),而不是\(v_{dW}\),因此\(S_{dW}= \beta S_{dW} + (1 -\beta) {dW}^{2}\),澄清一下,這個平方的操作是針對這一整個符號的,這樣做能夠保留微分平方的加權平均數,同樣\(S_{db}= \beta S_{db} + (1 - \beta){db}^{2}\),再說一次,平方是針對整個符號的操作。
接著RMSprop會這樣更新參數值,\(W:= W -a\frac{dW}{\sqrt{S_{dW}}}\),\(b:=b -\alpha\frac{db}{\sqrt{S_{db}}}\),來理解一下其原理。記得在橫軸方向或者在例子中的\(W\)方向,希望學習速度快,而在垂直方向,也就是例子中的\(b\)方向,希望減緩縱軸上的擺動,所以有了\(S_{dW}\)和\(S_{db}\),希望\(S_{dW}\)會相對較小,所以要除以一個較小的數,而希望\(S_{db}\)又較大,所以這里要除以較大的數字,這樣就可以減緩縱軸上的變化??催@些微分,垂直方向的要比水平方向的大得多,所以斜率在\(b\)方向特別大,所以這些微分中,\(db\)較大,\(dW\)較小,因為函數的傾斜程度,在縱軸上,也就是b方向上要大于在橫軸上,也就是\(W\)方向上。\(db\)的平方較大,所以\(S_{db}\)也會較大,而相比之下,\(dW\)會小一些,亦或\(dW\)平方會小一些,因此\(S_{dW}\)會小一些,結果就是縱軸上的更新要被一個較大的數相除,就能消除擺動,而水平方向的更新則被較小的數相除。
RMSprop的影響就是的更新最后會變成這樣(綠色線),縱軸方向上擺動較小,而橫軸方向繼續推進。還有個影響就是,可以用一個更大學習率\(a\),然后加快學習,而無須在縱軸上垂直方向偏離。
要說明一點,一直把縱軸和橫軸方向分別稱為\(b\)和\(W\),只是為了方便展示而已。實際中,會處于參數的高維度空間,所以需要消除擺動的垂直維度,需要消除擺動,實際上是參數\(W_1\),\(W_2\)等的合集,水平維度可能\(W_3\),\(W_4\)等等,因此把\(W\)和\(b\)分開只是方便說明。實際中\(dW\)是一個高維度的參數向量,\(db\)也是一個高維度參數向量,但是的直覺是,在要消除擺動的維度中,最終要計算一個更大的和值,這個平方和微分的加權平均值,所以最后去掉了那些有擺動的方向。所以這就是RMSprop,全稱是均方根,因為將微分進行平方,然后最后使用平方根。
最后再就這個算法說一些細節的東西,然后再繼續。接下來,會將RMSprop和Momentum結合起來,在Momentum中采用超參數\(\beta\),為了避免混淆,現在不用\(\beta\),而采用超參數\(\beta_{2}\)以保證在Momentum和RMSprop中采用同一超參數。要確保的算法不會除以0,如果\(S_{dW}\)的平方根趨近于0怎么辦?得到的答案就非常大,為了確保數值穩定,在實際操練的時候,要在分母上加上一個很小很小的\(\varepsilon\),\(\varepsilon\)是多少沒關系,\(10^{-8}\)是個不錯的選擇,這只是保證數值能穩定一些,無論什么原因,都不會除以一個很小很小的數。所以RMSprop跟Momentum有很相似的一點,可以消除梯度下降中的擺動,包括mini-batch梯度下降,并允許使用一個更大的學習率\(a\),從而加快的算法學習速度。
所以學會了如何運用RMSprop,這是給學習算法加速的另一方法。關于RMSprop的一個有趣的事是,它首次提出并不是在學術研究論文中,而是在多年前Jeff Hinton在Coursera的課程上。想Coursera并不是故意打算成為一個傳播新興的學術研究的平臺,但是卻達到了意想不到的效果。就是從Coursera課程開始,RMSprop開始被人們廣為熟知,并且發展迅猛。
講過了Momentum,講了RMSprop,如果二者結合起來,會得到一個更好的優化算法
總結
以上是生活随笔為你收集整理的神经网络优化篇:详解RMSprop的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32CubeMX教程17 DAC
- 下一篇: 终端 timed out waiting