吳恩達【深度學習工程師】專項課程包含以下五門課程:
1、神經網絡和深度學習;
2、改善深層神經網絡:超參數調試、正則化以及優化;
3、結構化機器學習項目;
4、卷積神經網絡;
5、序列模型。
今天介紹《改善深層神經網絡:超參數調試、正則化以及優化》系列第二講:優化算法。
主要內容:1、Mini-batch梯度下降法;
2、指數加權平均;
3、momentum、RMSProp、Adam優化算法;
4、學習率衰減.
1、 Mini-batch 梯度下降法
神經網絡訓練過程是對所有m個樣本,稱爲batch,通過向量化計算方式,同時進行運算。這種梯度下降算法被稱爲Batch Gradient Descent。
我們可以把m個訓練樣本分成若干個子集,稱爲mini-batch,這樣每個子集包含的數據量就小了,每次在單一子集上進行神經網絡訓練,網絡收斂的速度就會大大提高。這種梯度下降算法被稱爲Mini-batch Gradient Descent。
假設總的訓練樣本個數m=5 000 000,其維度爲
Mini-batch Gradient Descent的實現過程是:將訓練樣本分成 N 個 mini-batches,對每個mini-batch進行神經網絡訓練,經過N次循環之後,所有m個訓練樣本都進行了梯度下降計算,我們稱之爲經歷了一個epoch。使用Batch Gradient Descent時,一個epoch只進行一次梯度下降算法;而使用Mini-BatchGradient Descent時,一個epoch會進行 N 次梯度下降算法。
使用Batch gradient descent,隨着迭代次數增加,cost是不斷減小的;使用Mini-batch gradient descent,隨着在不同的mini-batch上迭代訓練,由於不同的mini-batch之間是有差異,因此其cost不是單調下降,而是出現振盪,但整體趨勢是下降的。
mini-batch 大小參數通常設置爲 64, 128, 256, 512。
2、指數加權平均
舉個例子,記錄半年內倫敦市的氣溫變化,並在二維平面上繪製出來,如下圖所示:
溫度數據抖動較大。如果我們希望看到半年內氣溫的整體變化趨勢,可以通過移動平均(moving average)的方法來對每天氣溫進行平滑處理。
例如我們可以設
第一天的氣溫與第0天的氣溫有關:
第二天的氣溫與第一天的氣溫有關:
即第t天與第t-1天的氣溫迭代關係爲:
經過移動平均處理得到的氣溫紅色曲線:
這種滑動平均算法稱爲指數加權平均(exponentially weighted average)。其一般形式爲:
上面的例子中,
例如,當
當
其中,紫色曲線開始的時候相對較低一些。這是因爲開始時我們設置
修正這種問題的方法是進行偏移校正(bias correction),即在每次計算完
在剛開始的時候,t比較小,
但是偏移校正並不總是必須的。因爲,在一次次迭代後,
3、momentum
動量梯度下降算法,是指在每次訓練時,對梯度進行指數加權平均處理,然後用處理後的梯度值更新權重W和常數項b。
原始的梯度下降算法在梯度下降過程中,梯度下降的振盪較大。每一點處的梯度只與當前方向有關,產生類似折線的效果,前進緩慢。而如果對梯度進行指數加權平均,這樣使當前梯度不僅與當前方向有關,還與之前的方向有關,這樣處理讓梯度前進方向更加平滑,減少振盪,能夠更快地到達最小值處。
權重W和常數項b的指數加權平均表達式如下:
從動量的角度來看,以權重W爲例,
初始時令
關於偏移校正可以不使用。因爲經過10次迭代後,隨着滑動平均的過程,偏移情況會逐漸消失。
補充一下,在其它文獻資料中,動量梯度下降還有另外一種寫法:
即消去了
4、RMSprop
RMSprop梯度下降算法。每次迭代訓練過程中,權重W和常數項b的更新表達式爲:
在RMSprop算法中,如果梯度下降在垂直方向(b)上振盪較大,在水平方向(W)上振盪較小,表示在b方向上梯度較大,即
爲了避免RMSprop算法中分母爲零,通常可以在分母增加一個極小的常數
其中,
5、 Adam優化算法
Adam(Adaptive Moment Estimation)算法結合了動量梯度下降算法和RMSprop算法。其算法流程爲:
Adam算法包含了幾個超參數,分別是:
6、學習率衰減
學習率衰減 (learning rate decay)是一種隨着迭代次數的增加,逐步減小學習因子 α 的方法。
隨着訓練次數增加,
其中,deacy_rate是參數,epoch是訓練完所有樣本的次數。隨着epoch增加,
除了上面計算
其中,k爲可調參數,t爲mini-bach number。
除此之外,還可以設置