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