改善深層神經網路:超引數除錯、正則化以及優化 優化演算法 第二週
改善深層神經網路:超引數除錯、正則化以及優化 優化演算法 第二課
1. Mini-batch
Batch vs Mini-batch gradient descent
Batch就是將所有的訓練資料都放到網路裡面進行訓練,計算量大,硬體要求高。一次訓練只能得到一個梯度。
Mini-batch是將訓練集分為若干小部分,每次訓練都將小部分放到網路裡面進行訓練。速度快,每個Mini-batch都可以得到一個梯度。
上圖是Batch和Mini-batch在訓練過程中損失函式的變化趨勢,由於Batch使用了全部的訓練集來訓練網路因此每次都可以找到一個全域性最優梯度,Mini-batch每次使用了一部分的資料來訓練網路,每一部分的分佈存在著差距所以他的損失函式會上下波動,但是整體趨勢是變小的。
上圖就是Mini-batch的大小對網路的影響。當Mini-batch大小為訓練集大小之後(相當於Batch)就會出現藍色線那種情況。當Mini-batch為1的時候就會出現紫色線那種情況,每次訓練一個樣本所以它的梯度方向變化很大。綠色的是Mini-batch選擇適當的時候梯度下降。
2. 指數加權平均
舉例子,記錄半年內倫敦市的氣溫變化,並在二維平面上繪製出來,如下圖所示。看上去,溫度資料似乎有noise,而且抖動較大。如果我們希望看到半年內氣溫的整體變化趨勢,可以通過移動平均(moving average)的方法來對每天氣溫進行平滑處理。
例如我們可以設V0=0,當成第0天的氣溫值。
第一天的氣溫與第0天的氣溫有關:V1=0.9V0+0.1θ1V1=0.9V0+0.1θ1
第二天的氣溫與第一天的氣溫有關:V2=0.9V1+0.1θ2
第三天的氣溫與第二天的氣溫有關:V3=0.9V2+0.1θ3
即第t天與第t-1天的氣溫迭代關係為:Vt=0.9Vt−1+0.1θt
經過移動平均處理得到的氣溫如上圖紅色曲線所示。
這種滑動平均演算法稱為指數加權平均(exponentially weighted average)。根據之前的推導公式,其一般形式為:
上面的例子中,β=0.9。β值決定了指數加權平均的天數,近似表示為:
例如,當β=0.9,表示將前10天進行指數加權平均。當β=0.98,表示將前50天進行指數加權平均。β值越大,則指數加權平均的天數越多,平均後的趨勢線就越平緩,但是同時也會向右平移。下圖綠色曲線和黃色曲線分別表示了β=0.98和β=0.5時,指數加權平均的結果。
偏差修正問題:
如上圖所示紫色和綠色相比在初始化階段存在的誤差比較大。就是在網路初始化尋來你的時候會出現偏差比較大的問題,隨著訓練的增加偏差會慢慢的變小。一般的機器學習都不會在意偏差問題。
這是因為開始時我們設定V0=0,所以初始值會相對小一些,直到後面受前面的影響漸漸變小,趨於正常。修正這種問題的方法是進行偏移校正(bias correction),即在每次計算完Vt後,對Vt進行下式處理:
當Vt較小的時候可以將Vt修正的xian相對較大一些。隨著Vt的增加1-β越來越趨近於1並不會受到影響。
3.各種優化演算法加快梯度下降
3.1動量
上圖動量公式使用了指數加權平均的演算法。β一般設為0.9,平均計算了前10次迭代的平均值。α表示的是學習率。
3.2 RMSprop
為了方便分析我們將w設為橫座標,b為縱座標。從圖中可以看出,梯度下降(藍色折線)在垂直方向(b)上振盪較大,在水平方向(W)上振盪較小,表示在b方向上梯度較大,即db較大,而在W方向上梯度較小,即dW較小。因此,上述表示式中Sb較大,而SW較小。也就是說我們要將W變化得多一些,b變化得少一些。即加快了W方向的速度,減小了b方向的速度,減小振盪,實現快速梯度下降演算法,其梯度下降過程如綠色折線所示。總得來說,就是如果哪個方向振盪大,就減小該方向的更新速度,從而減小振盪。
3.3 Adam演算法
Adam演算法結合了動量和RMSprop演算法。並計算了他們的修正偏差。增加了網路訓練速度,廣泛適用於各種網路結構。
4.學習率衰減
Learning rate decay就是隨著迭代次數增加,學習因子α逐漸減小。如果學習率不改變,我們的演算法就會在最優值來回大幅震盪。但是如果我們的學習率逐漸減小,可以使我們的演算法震盪幅度變小,近似得到最優值。
學習率的計算公式主要是:
其中,deacy_rate是引數(可調),epoch是訓練完所有樣本的次數。隨著epoch增加,α會不斷變小。
其他的計算公式有:
5.區域性最優問題
在使用梯度下降演算法不斷減小cost function時,可能會得到區域性最優解(local optima)而不是全域性最優解(global optima)。有可能我們找的區域性最優點是鞍點如下圖所示。
類似馬鞍狀的plateaus會降低神經網路學習速度。Plateaus是梯度接近於零的平緩區域,如下圖所示。在plateaus上梯度很小,前進緩慢,到達saddle point需要很長時間。到達saddle point後,由於隨機擾動,梯度一般能夠沿著某一方向離開saddle point,繼續前進,只是在plateaus上花費了太多時間。
有兩點總結:
-
只要選擇合理的強大的神經網路,一般不太可能陷入local optima
-
Plateaus可能會使梯度下降變慢,降低學習速度