目錄
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(重點)
8)Adam optimization algorithm(重點)
10)The problem of local optima
以下筆記是吳恩達老師深度學習課程第二門課第二週的的學習筆記: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算法;
- 還介紹了學習率衰減和局部最優等問題。