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