神經網絡中正則化方法的快速指南

  • L1 / L2
  • Weight Decay
  • Dropout
  • Batch Normalization
  • Data Augmentation
  • Early Stopping

下面的故事聽起來很熟悉。想象一下,我們必須用經典的機器學習算法來解決數據問題。一種典型的方法是通過降維來提高模型的性能並減少其訓練時間。

如今,在使用深度學習時,優化過程的繁重任務已被留在後臺,尤其是由於GPU的出現以及對它們的便捷訪問。當我們依靠更多的資源時,我們不再願意犧牲輸入數據中的任何細節,所以我們將所有的特性都引入到網絡中,不管它們有多少。我們還努力將誤差降低到最小,這就轉化爲網絡層和參數的不受控制的增加,這總是受到萬能近似定理的影響(Universal Approximation Theorem)。

這種增長增加了網絡的複雜性,也增加了過擬合的風險,特別是當我們的訓練樣本很少的時候(輸入樣本的數量遠少於網絡用來調整自己以適應如此少的信息的參數的數量)。

解決這個問題正是正則化技術試圖實現的。本文簡要回顧了目前最常用的一些正則化方法,主要是由於它們的良好性能。

L2正則化(Ridge)

這種正則化背後的主要思想是減少參數值,從而減少方差。

這種技術在原始的損失函數(LL)中引入了額外的懲罰項,並增加了平方參數(ww)的總和。

但是這個懲罰項可能太大,以至於網絡會試圖通過使其參數非常接近於零來最小化損失函數,這一點也不方便。這就是爲什麼我們將這個數字乘以一個小的常數(λ\lambda),該常數的值可以任意選擇(0.1,0.01,……)。

損失函數公式爲:
在這裏插入圖片描述
梯度下降算法每次迭代的權值更新爲:
在這裏插入圖片描述
增大λλ的值足以應用更多的正則化。

使用L2正則化的模型叫做Ridge迴歸(嶺迴歸)

L1正則化(Lasso)

還有一種與L2非常相似的技術,叫做L1正則化,懲罰項中的網絡參數不平方,而是用其絕對值代替:
在這裏插入圖片描述
在這裏插入圖片描述
這種變體將參數推向更小的值,甚至完全消除了一些輸入特性對網絡輸出的影響,這意味着將自動選擇特性。結果是一個更好的泛化,但僅限於一定程度(在這種情況下,λλ的選擇變得尤爲重要)。

使用L1正則化的模型叫做Lasso迴歸

權重衰減(Weight Decay)

該技術與L2正則化相同,但應用於不同的地方:它不是在損失函數中引入一個和,而是在權值更新公式中增加一個額外的項:
在這裏插入圖片描述
我們可以注意到,這個更新實際上與L2正則化相同,只是在這種情況下,λλ常數不是乘以2(因此,如果我們對這兩種方法進行編碼,則λλ的值在這種情況下都應爲double值,這與L2中的結果相同)。

丟棄法(Dropout)

該技術不同於現有技術。該過程很簡單:對於訓練階段中網絡的每個新輸入,根據先前定義的丟棄概率,將每個隱藏層中一定比例的神經元隨機停用。 對於整個網絡,這可以相同,也可以在每一層中不同。

在這裏插入圖片描述
通過使用dropout,我們避免了神經元會記住部分輸入,這正是網絡過擬合時所發生的情況。

擬合模型後,我們就必須以某種方式補償訓練時網絡的一部分不活躍的事實。當進行預測時,每個神經元都處於活躍狀態,因此會有更多的激活(層輸出)對網絡輸出有所貢獻,從而擴大了其範圍。一個簡單的解決方案是將所有參數乘以不被丟棄的概率。

批量歸一化(Batch Normalization)

這項技術的歷史相當奇怪。它被提出作爲一種減少內部協變量偏移的解決方案,但最近的研究表明這並不是它真正的作用。然而,它是神經網絡訓練的基本技術,如下所述。

批量歸一化基本上意味着在神經元和激活函數之間添加一個額外的步驟,目的是對輸出激活進行歸一化。理想情況下,應該使用整個訓練集的均值和方差進行歸一化,但是如果我們使用批量梯度下降(mini-batch gradient descent)算法來訓練我們的網絡,則應該使用每個mini-batch輸入的均值和方差。

注意:每個神經元的每個輸出將獨立歸一化,這意味着在每次迭代中,將爲當前的mini-batch計算每個輸出的平均值和方差。

歸一化後,將使用兩個附加參數:一個偏置作爲加法,另一個類似於偏置乘以每個激活的常數。其目的是方便地將輸入範圍擴大到輸出範圍,這將極大地幫助我們的網絡根據輸入數據調整其參數,並減少損失函數的振盪。因此,我們還可以提高學習速度(最終陷入局部最小值的風險更小),並更快地實現向全局最小值的收斂。

在這裏插入圖片描述
批量歸一化本身與其說是一種正則化策略,不如說是一種訓練輔助技術。後者實際上是通過應用稱爲Momentum的優化技術實現的。由於整體的原因,過擬合得到了顯著的緩解。

數據增強(Data Augmentation)

該技術的思想是對原始數據集應用各種轉換,獲得略有不同但本質上相同的樣本,從而使網絡的表現更好。

該技術在計算機視覺領域得到了廣泛的應用,因爲它的效果非常好。在這種情況下,神經網絡將對單個輸入圖像的處理次數與我們運行的次數一樣多,如果訓練時間過長,則該網絡會記住部分圖像。解決方案:每次將圖像重新引入網絡時都應用隨機變換。

這些轉換的例子有:

  • 水平/垂直翻轉圖像
  • 旋轉圖像X度
  • 調整,擴展,調整大小等
  • 應用透視變形
  • 調整亮度、對比度、飽和度等
  • 添加一些噪音、缺陷等
  • 以上方法的組合

在這裏插入圖片描述
通過應用數據擴充,我們將有更多的信息可供學習,而不需要獲得額外的樣本,也不需要延長訓練時間。此外,無論我們的網絡是專用於對圖像進行分類還是對目標進行檢測,這種技術都能使模型在不同角度或不同光照條件下獲得良好的結果(過擬合較少,因此它的泛化效果更好)。

早停法(Early Stopping)

最後要套用一個規則集,以便知道何時該停止訓練,這樣就不會出現過擬合和欠擬合的情況。

最常見的方法是對模型進行培訓,監控其性能並在每個時期結束時保存其參數。我們將一直這樣做,直到確認誤差穩步增加(由於算法的隨機性而出現惡化)。我們將保留之前得到的模型。
在這裏插入圖片描述
此時有必要記住選擇一個好的驗證集的重要性。

發佈了80 篇原創文章 · 獲贊 10 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章