避免神經網絡過擬合的5種技術
本文介紹了5種在訓練神經網絡中避免過擬合的技術。
最近一年我一直致力于深度學習領域。這段時間里,我使用過很多神經網絡,比如卷積神經網絡、循環神經網絡、自編碼器等等。我遇到的最常見的一個問題就是在訓練時,深度神經網絡會過擬合。
當模型試著預測噪聲較多的數據的趨勢時,由于模型參數過多、過于復雜,就會導致過擬合。過擬合的模型通常是不精確的,因為這樣的預測趨勢并不會反映數據的真實情況。我們可以通過模型在已知的數據(訓練集)中有好的預測結果,但在未知的數據(測試集)中較差的表現來判斷是否存在過擬合。機器學習模型的目的是從訓練集到該問題領域的任何數據集上均有泛化的較好表現,因為我們希望模型能夠預測未知的數據。
在本文中,我將展示5種在訓練神經網絡時避免過擬合的技術。
一、簡化模型
處理過擬合的第一步就是降低模型復雜度。為了降低復雜度,我們可以簡單地移除層或者減少神經元的數量使得網絡規模變小。與此同時,計算神經網絡中不同層的輸入和輸出維度也十分重要。雖然移除層的數量或神經網絡的規模并無通用的規定,但如果你的神經網絡發生了過擬合,就嘗試縮小它的規模。
二、早停
在使用迭代的方法(例如梯度下降)來訓練模型時,早停是一種正則化的形式。因為所有的神經網絡都是通過梯度下降的方法來學習的,所以早停是一種適用于所有問題的通用技術。使用這種方法來更新模型以便其在每次迭代時能更好地適應訓練集。在一定程度上,這種方法可以改善模型在測試集上的表現。但是除此之外,改善模型對訓練集的擬合會增加泛化誤差。早停規則指定了模型在過擬合之前可以迭代的次數。

早停
上圖展示了這種技術。正如我們看到的,在幾次迭代后,即使訓練誤差仍然在減少,但測驗誤差已經開始增加了。
三、使用數據增強
在神經網絡中,數據增強只意味著增加數據規模,也就是增加數據集里中圖像的數量。一些熱門的圖像增強技術有翻轉、平移、旋轉、縮放、改變亮度、添加噪聲等等。獲取更全面的參考,可訪問:
Albumentations:
https://github.com/albumentations-team/albumentations
Imgaug:
https://github.com/aleju/imgaug

數據增強
如上圖所示,使用數據增強可以生成多幅相似圖像。這可以幫助我們增加數據集規模從而減少過擬合。因為隨著數據量的增加,模型無法過擬合所有樣本,因此不得不進行泛化。
四、使用正則化
正則化是一種降低模型復雜度的方式。它是通過在損失函數中添加一個懲罰項來實現正則化。最常見的技術是L1和L2正則化:
- L1懲罰項的目的是使權重絕對值最小化。公式如下:

L1正則化
- L2懲罰項的目的是使權重的平方最小化。公式如下:

L2正則化
以下表格對兩種正則化方法進行了對比。
L1正則化
L2正則化
1. L1懲罰權重絕對值的總和
1. L2懲罰權重平方和的總和
2. L1生成簡單、可解釋的模型
2. L2正則化能夠學習復雜數據模式
3. L1受極端值影響較小
3. L2受極端值影響較大
L1正則化vs L2正則化
那么哪一種方式更有利于避免過擬合呢?答案是——看情況。如果數據過于復雜以至于無法準確地建模,那么L2是更好的選擇,因為它能夠學習數據中呈現的內在模式。而當數據足夠簡單,可以精確建模的話,L1更合適。對于我遇到的大多數計算機視覺問題,L2正則化幾乎總是可以給出更好的結果。然而L1不容易受到離群值的影響。所以正確的正則化選項取決于我們想要解決的問題。
五、使用丟棄法(Dropouts)
丟棄法是一種避免神經網絡過擬合的正則化技術。像L1和L2這樣的正則化技術通過修改代價函數來減少過擬合。而丟棄法修改神經網絡本身。它在訓練的每一次迭代過程中隨機地丟棄神經網絡中的神經元。當我們丟棄不同神經元集合的時候,就等同于訓練不同的神經網絡。不同的神經網絡會以不同的方式發生過擬合,所以丟棄的凈效應將會減少過擬合的發生。

使用丟棄法
如上圖所示,丟棄法被用于在訓練神經網絡的過程中隨機丟棄神經網絡中的神經元。這種技術被證明可以減少很多問題的過擬合,這些問題包括圖像分類、圖像切割、詞嵌入、語義匹配等問題。
結論
簡單回顧下上述內容,我解釋了什么是過擬合以及為什么它是神經網絡當中常見的問題。接下來我又給出了五種最常見的在訓練神經網絡過程中避免過擬合的方法——簡化模型、早停、數據增強、正則化以及丟棄法。