2.2)深度学习笔记:优化算法
目錄
1)Mini-batch gradient descent(重點)
2)Understanding mini-batch gradient descent
3)Exponentially weighted averages
4)Understanding exponetially weighted averages
5)Bias correction in exponentially weighted average
6)Gradient descent with momentum(重點)
7)RMSprop(重點)
8)Adam optimization algorithm(重點)
9)Learning rate decay
10)The problem of local optima
11)Summary
以下筆記是吳恩達老師深度學習課程第二門課第二周的的學習筆記:Optimization algorithms。筆記參考了黃海廣博士的內容,在此表示感謝。?
深度學習難以在大數據領域發揮最佳效果的一個原因是:在巨大的數據集上進行訓練速度很慢。而優化算法能夠幫助快速訓練模型,大大提高效率。本周,我們將討論深度神經網絡中的一些優化算法,通過使用這些技巧和方法來提高神經網絡的訓練速度。?
1)Mini-batch gradient descent(重點)
我們之前一直使用的梯度下降算法是同時處理整個訓練集,在更新參數的時候使用所有樣本來進行更新;即每一步梯度下降需要對整個訓練集進行一次處理,如果訓練數據集很大的時候,處理速度就會比較慢。這種梯度下降算法被稱為?Batch Gradient Descent。
為了解決批量梯度下降算法處理慢的問題,我們可以把訓練樣本劃分為若干個子集,即 mini-batchs。然后在單一子集上進行神經網絡訓練,速度就會大大提升,這種梯度下降算法稱為?Mini-batch Gradient Descent。
吳恩達老師在課程里介紹:假設我們有 m=5000000 個訓練樣本,維度為?,將其分成 5000 個子集,每個子集含有 1000 個樣本。我們將每個 mini-batch 記為,維度為?;相應的每個mini-batch的輸出為?,維度為?。
針對每一個 Mini-batch,神經網絡進行一次訓練,包含前向傳播,計算代價函數,反向傳播。經過多次訓練之后,所有m個訓練樣本都進行了梯度下降計算。對所有訓練樣本進行一次梯度下降計算,稱為一個 epoch。
2)Understanding mini-batch gradient descent
我們先來看一下批量梯度下降和小批量梯度下降的成本曲線圖:
可以看出,對于Batch梯度下降而言,Mini-batch梯度下降隨著迭代次數增加,cost不是單調下降,而是存在噪聲,出現噪聲的原因可能是不同的Mini-batch之間存在差異。
我們來看看不同的Mini-batch大小帶來的影響。下圖為:Batch,Mini-batch,SGD梯度下降的影響:
batch 梯度下降法:
- 對所有 m 個訓練樣本執行一次梯度下降,每一次迭代時間較長,訓練過程慢;
- 相對噪聲低一些,幅度也大一些;
- 成本函數總是向減小的方向下降。
隨機梯度下降法:
- 對每一個訓練樣本執行一次梯度下降,訓練速度快,但丟失了向量化帶來的計算加速;
- 有很多噪聲,減小學習率可以適當;
- 成本函數總體趨勢向全局最小值靠近,但永遠不會收斂,而是一直在最小值附近波
不同的Mini-batch大小對梯度下降的影響是不同的,一般Mini-batch大小的選擇建議是這樣的:
- 如果訓練樣本的大小比較小,如 m ? 2000 時,選擇 batch 梯度下降法;
- 如果訓練樣本的大小比較大,選擇 Mini-Batch 梯度下降法。為了和計算機的信息存儲方式相適應,代碼在 mini-batch 大小為 2 的冪次時運行要快一些。典型的大小為?;
- mini-batch 的大小要符合 CPU/GPU 內存。
3)Exponentially weighted averages
這一節我們介紹指數加權平均的概念。
如圖所示,為倫敦城市的氣溫變化:
看上去,溫度變化噪聲很大,如果想看到氣溫的整體變化趨勢,可以通過移動平均的方法對氣溫進行平滑處理。
設第t天與第t-1天的氣溫變化關系為:,經過處理后得到的氣溫如下圖紅色曲線所示:
這種方法稱為指數加權平均法,一般形式為:,其中??決定了指數加權平均的天數,近似表示為:
,當??為0.9時,表示將前10天的數據進行指數加權平均,為0.98是,表示將前50天的數據進行指數加權平均。下圖黃色和綠色曲線分別標識了??和? 的指數加權平均結果。
4)Understanding exponetially weighted averages
指數加權平均公式的一般形式為:
由公式可得,?為原始數據,??類似于指數曲線,的值就是這兩個式子的點乘。
指數平均加權并不是最精準的計算平均數的方法,你可以直接計算過去 10 天或 50 天的平均值來得到更好的估計,但缺點是保存數據需要占用更多內存,執行更加復雜,計算成本更加高昂。
指數加權平均數公式的好處之一在于它只需要一行代碼,且占用極少內存,因此效率極高,且節省成本。
5)Bias correction in exponentially weighted average
上文中提到當β=0.98時,指數加權平均結果如下圖綠色曲線所示。但是實際上,真實曲線如紫色曲線所示。
我們注意到,紫色曲線與綠色曲線的區別是,紫色曲線開始的時候相對較低一些。這是因為開始時我們設置,所以初始值會相對小一些,直到后面受前面的影響漸漸變小,趨于正常。
修正這種問題的方法是進行偏移校正(bias correction),即在每次計算完后,進行下式處理:。隨著 t 的增大,β 的 t 次方趨近于 0。因此當 t 很大的時候,偏差修正幾乎沒有作用,但是在前期學習可以幫助更好的預測數據。在實際過程中,一般會忽略前期偏差的影響。
6)Gradient descent with momentum(重點)
動量梯度下降(Gradient Descent with Momentum)是計算梯度的指數加權平均數,并利用該值來更新參數值。具體過程為:
其中,將動量衰減參數 β 設置為 0.9 是超參數的一個常見且效果不錯的選擇。當 β 被設置為 0 時,顯然就成了 batch 梯度下降法。
7)RMSprop(重點)
RMSprop是另外一種優化梯度下降速度的算法。每次迭代訓練過程中,其權重W和常數項b的更新表達式為:
,
下面簡單解釋一下RMSprop算法的原理,仍然以下圖為例,為了便于分析,令水平方向為W的方向,垂直方向為b的方向。
RMSProp 有助于減少抵達最小值路徑上的擺動,并允許使用一個更大的學習率 α,從而加快算法學習速度。并且,它和 Adam 優化算法已被證明適用于不同的深度學習網絡結構。注意,β 也是一個超參數。
還有一點需要注意的是為了避免RMSprop算法中分母為零,通??梢栽诜帜冈黾右粋€極小的常數ε:
其中,ε,或者其它較小值。
8)Adam optimization algorithm(重點)
Adam 優化算法(Adaptive Moment Estimation,自適應矩估計)基本上就是將 Momentum 和 RMSProp 算法結合在一起,
算法流程為,初始化:
用每一個 mini-batch 計算 dW、db,第 t 次迭代時:
一般使用 Adam 算法時需要計算偏差修正:
,;
所以,更新 W、b 時有:
,
Adam 優化算法有很多的超參數,其中
學習率 α:需要嘗試一系列的值,來尋找比較合適的;
:常用的缺省值為 0.9;
:Adam 算法的作者建議為 0.999;
?:不重要,不會影響算法表現,Adam 算法的作者建議為 $10^{-8}$;
β1、β2、? 通常不需要調試
9)Learning rate decay
如果設置一個固定的學習率 α,在最小值點附近,由于不同的 Mini-batch 中存在一定的噪聲,因此不會精確收斂,而是始終在最小值周圍一個較大的范圍內波動。
而如果隨著時間慢慢減少學習率 α 的大小,在初期 α 較大時,下降的步長較大,能以較快的速度進行梯度下降;而后期逐步減小 α 的值,即減小步長,有助于算法的收斂,更容易接近最優解。
最常用的學習率衰減方法:
其中,為衰減率(超參數),為將所有的訓練樣本完整過一遍的次數。 .
指數衰減方法:
其它方法:
除此之外,還可以設置α為關于t的離散值,隨著t增加,α呈階梯式減小。當然,也可以根據訓練情況靈活調整當前的α值,但會比較耗時間。
10)The problem of local optima
在使用梯度下降算法不斷減小cost function時,可能會得到局部最優解(local optima)而不是全局最優解(global optima)。之前我們對局部最優解的理解是形如碗狀的凹槽,如下圖左邊所示。但是在神經網絡中,local optima的概念發生了變化。準確地來說,大部分梯度為零的“最優點”并不是這些凹槽處,而是形如右邊所示的馬鞍狀,稱為saddle point。也就是說,梯度為零并不能保證都是convex(極小值),也有可能是concave(極大值)。特別是在神經網絡中參數很多的情況下,所有參數梯度為零的點很可能都是右邊所示的馬鞍狀的saddle point,而不是左邊那樣的local optimum。
-
鞍點(saddle)是函數上的導數為零,但不是軸上局部極值的點。當我們建立一個神經網絡時,通常梯度為零的點是上圖所示的鞍點,而非局部最小值。減少損失的難度也來自誤差曲面中的鞍點,而不是局部最低點。因為在一個具有高維度空間的成本函數中,如果梯度為 0,那么在每個方向,成本函數或是凸函數,或是凹函數。而所有維度均需要是凹函數的概率極小,因此在低維度的局部最優點的情況并不適用于高維度。
結論:
- 在訓練較大的神經網絡、存在大量參數,并且成本函數被定義在較高的維度空間時,困在極差的局部最優中是不大可能的;
- 鞍點附近的平穩段會使得學習非常緩慢,而這也是動量梯度下降法、RMSProp 以及 Adam 優化算法能夠加速學習的原因,它們能幫助盡早走出平穩段。
值得一提的是,上文介紹的動量梯度下降,RMSprop,Adam算法都能有效解決plateaus下降過慢的問題,大大提高神經網絡的學習速度。
11)Summary
本周我們學習深度學習中的優化算法:
- Mini-batch梯度下降算法,動量梯度下降算法,RMSprop算法和Adam算法;
- 還介紹了學習率衰減和局部最優等問題。
總結
以上是生活随笔為你收集整理的2.2)深度学习笔记:优化算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Apollo进阶课程 ③ | 开源模块讲
- 下一篇: PointNet:3D点集分类与分割深度