改善深層神經網絡的優化算法:mini-batch梯度下降、指數加權平均、動量梯度下降、RMSprop、Adam優化、學習率衰減


1.mini-batch梯度下降

在前面學習向量化時,知道了可以將訓練樣本橫向堆疊,形成一個輸入矩陣和對應的輸出矩陣:

當數據量不是太大時,這樣做當然會充分利用向量化的優點,一次訓練中就可以將所有訓練樣本涵蓋,速度也會較快。但當數據量急劇增大,達到百萬甚至更大的數量級時,組成的矩陣將極其龐大,直接對這么大的的數據作梯度下降,可想而知速度是快不起來的。故這里將訓練樣本分割成較小的訓練子集,子集就叫mini-batch。例如:訓練樣本數量m=500萬,設置mini-batch=1000,則可以將訓練樣本划分為5000個mini-batch,每個mini-batch中含有1000個樣本數據,當然,輸出矩陣也要做同樣的划分。這張圖可以直觀的理解:


在實際的訓練中,會通過循環來遍歷所有的mini-batch,對每一個mini-batch都會做和原來一樣的步驟,即:前向傳播、計算損失函數、反向傳播、更新參數。



這張圖可以大致反應兩種梯度下降方法其損失函數的變化過程:在batch梯度下降中,由於每次訓練迭代都是遍歷的整個訓練集,故損失函數的曲線應是一個較為平滑的下降過程,如出現明顯的抖動,很大程度可能是學習率α過大。但在mini-batch梯度下降中可以看到,並不是每次迭代其損失函數都是下降的,這是因為訓練集不完整的原因。但總體趨勢還是下降的,抖動程度取決於設置的mini-batch的大小。
綜合來說,如果訓練集較小,那么直接使用batch梯度下降法,可以快速的處理整個數據集,一般來說是少於2000個樣本。如果訓練集再大一點,就可以考慮使用mini-batch梯度下降法,一般mini-batch的大小為64 - 512(考慮到電腦內存,設置為2的n次方,運算速度會快些)。另外,當mini-batch設置為1時,又叫做隨機梯度下降法

2.指數加權平均

舉個例子:下圖是一年內某地氣溫的變化情況:

可以看到數據點比較的雜亂,但是大體趨勢還是存在的。為了更好的表現氣溫變化情況,這里做一下這樣的處理:



我們看到這個高值的β=0.98得到的曲線要平坦一些,是因為你多平均了幾天的溫度.所以波動更小,更加平坦.缺點是曲線向右移動,這時因為現在平均的溫度值更多,所以會出現一定的延遲.對於β=0.98這個值的理解在於有0.98的權重給了原先的值,只有0.02的權重給了當日的值.我們現在將β=0.5作圖運行后得到黃線,由於僅平均了兩天的溫度,平均的數據太少,所以得到的曲線有更多的噪聲,更有可能出現異常值,但是這個曲線能更快的適應溫度變化,所以指數加權平均數經常被使用. 在統計學中,它常被稱為指數加權移動平均值

3.動量梯度下降

動量梯度下降(Gradient Descent with Momentum)是計算梯度的指數加權平均數,並利用該值來更新參數值。其中的動量衰減參數β一般取0.9進行一般的梯度下降將會得到圖中的藍色曲線,而使用Momentum梯度下降時,通過累加減少了抵達最小值路徑上的擺動,加快了收斂,得到圖中紅色的曲線。當前后梯度方向一致時,Momentum梯度下降能夠加速學習;前后梯度方向不一致時,Momentum梯度下降能夠抑制震盪。



進行一般的梯度下降將會得到圖中的藍色曲線,由於存在上下波動,減緩了梯度下降的速度,因此只能使用一個較小的學習率進行迭代。如果用較大的學習率,結果可能會像紫色曲線一樣偏離函數的范圍。而使用動量梯度下降時,通過累加過去的梯度值來減少抵達最小值路徑上的波動,加速了收斂,因此在橫軸方向下降得更快,從而得到圖中紅色的曲線。當前后梯度方向一致時,動量梯度下降能夠加速學習;而前后梯度方向不一致時,動量梯度下降能夠抑制震盪。另外,在 10 次迭代之后,移動平均已經不再是一個具有偏差的預測。因此實際在使用梯度下降法或者動量梯度下降法時,不會同時進行偏差修正。

  • 動量梯度下降法的形象解釋
    將成本函數想象為一個碗狀,從頂部開始運動的小球向下滾,其中 dw,db 想象成球的加速度;而 vdw、vdb 相當於速度。小球在向下滾動的過程中,因為加速度的存在速度會變快,但是由於 β 的存在,其值小於 1,可以認為是摩擦力,所以球不會無限加速下去。最后要說一點,如果你查閱了動量梯度下降法相關資料,你經常會看到 1-β 被刪除了,即
    vdW[l]=βvdW[l]+dW[l]
    vdb[l]=βvdb[l]+db[l]
    所以V_dw縮小了1-β倍,所以你要用梯度下降最新值的話,a也要相應變化。實際上這2種方法效果都不錯,只會影響到學習率a的最佳值。

4.Adagrad

Adagrad在每一個更新步驟中對於每一個模型參數Wi使用不同的學習速率ηi,

可以看到,式中學習率會除以該權值歷史所有梯度的平方根,由於梯度會累加得越來越大,也就可以達到衰減學習率的效果。 其中,e是一個平滑參數,為了使得分母不為0(通常e=1e−8),另外,如果分母不開根號,算法性能會很糟糕。其優點很明顯,可以使得學習率越來越小,而且每個權值根據其梯度大小不同可以獲得自適應的學習率調整。其缺點在於需要計算參數梯度序列平方和,並且學習速率趨勢會較快衰減達到一個非常小的值

5.RMSprop

為了緩解Adagrad學習率衰減過快,首先當然就是想到降低分子里的平方和項,RMSprop是通過將平方和變為加權平方和.也就是說平方和項隨着時間不斷衰減,過遠的梯度將不影響學習率。
RMSprop算法,全稱是root mean square prop算法,它也可以加速梯度下降,我們來看看它是如何運作的。你們知道了動量(Momentum)可以加快梯度下降,還有一個叫做RMSprop的算法,全稱是root mean square prop算法,它也可以加速梯度下降,我們來看看它是如何運作的。我們來理解一下其原理。我們希望W學習速度快,而在垂直方向,也就是例子中的b方向,我們希望減緩縱軸上的擺動,所以有了和S_dw, S_db .我們希望S_dw會相對較小,所以我們要除以一個較小的數,而希望S_db又較大,所以這里我們要除以較大的數字,這樣就可以減緩縱軸上的變化。因為函數的傾斜程度,在縱軸上,也就是b方向上要大於在橫軸上,也就是W方向上。db的平方較大,所以S_db也會較大,而相比之下,dw會小一些,亦或平方會小一些,因此S_dw會小一些,結果就是縱軸上的更新要被一個較大的數相除,就能消除擺動,而水平方向的更新則被較小的數相除。RMSprop的影響就是你的更新最后會變成這樣(綠色線),縱軸方向上擺動較小,而橫軸方向繼續推進。還有個影響就是,你可以用一個更大學習率,然后加快學習,而無須在縱軸上垂直方向偏離。

6.Adam優化

Adam 優化算法(Adaptive Moment Estimation,自適應矩估計)基本上就是將 Momentum 和 RMSProp 算法結合在一起,通常有超越二者單獨時的效果。在深度學習的歷史上,包括許多知名研究者在內,提出了優化算法,並很好地解決了一些問題,但隨后這些優化算法被指出並不能一般化,並不適用於多種神經網絡。
RMSprop以及Adam優化算法,就是少有的經受住人們考驗的兩種算法,已被證明適用於不同的深度學習結構,這個算法我會毫不猶豫地推薦給你,因為很多人都試過,並且用它很好地解決了許多問題。

Adam 優化算法有很多的超參數,其中
學習率 α:需要嘗試一系列的值,來尋找比較合適的;
β1:常用的缺省值為 0.9;
β2:Adam 算法的作者建議為 0.999;
ϵ:不重要,不會影響算法表現,Adam 算法的作者建議為 10−8;
β1、β2、ϵ 通常不需要調試。

7.學習率衰減

為什么要計算學習率衰減?

假設你要使用mini-batch梯度下降法,mini-batch數量不大,大概64或者128個樣本,在迭代過程中會有噪音(藍色線),下降朝向這里的最小值,但是不會精確地收斂,所以你的算法最后在附近擺動,並不會真正收斂,因為你用的α是固定值,不同的mini-batch中有噪音。


8.局部最優的問題

在低緯度的情形下,我們可能會想象到一個Cost function 如左圖所示,存在一些局部最小值點,在初始化參數的時候,如果初始值選取的不得當,會存在陷入局部最優點的可能性。但是,如果我們建立一個神經網絡,通常梯度為零的點,並不是如左圖中的局部最優點,而是右圖中的鞍點(叫鞍點是因為其形狀像馬鞍的形狀)。

在一個具有高維度空間的函數中,如果梯度為 0,那么在每個方向,Cost function 可能是凸函數,也有可能是凹函數。但如果參數維度為 2萬維,想要得到局部最優解,那么所有維度均需要是凹函數,其概率為2^−20000,可能性非常的小。也就是說,在低緯度中的局部最優點的情況,並不適用於高緯度,我們在梯度為 0 的點更有可能是鞍點。

在高緯度的情況下:

  • 幾乎不可能陷入局部最小值點;
  • 處於鞍點的停滯區會減緩學習過程,利用如 Adam 等算法進行改善。

參考文獻
[1] Optimization Algorithms優化算法
[2] 改善深層神經網絡(吳恩達)_優化算法
[3] 動量梯度下降法(Gradient descent with Momentum)-吳恩達 深度學習 course2 2.6筆記
[4] 局部最優的問題
[5] 卷積神經網絡(五):SGD、adagrad與RMSprop,梯度下降法總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM