提高模型的泛化能力是深度神經網絡亙古不變的話題。
模型容量太小無法從輸入空間中學習映射規則;模型容量過大則可能導致過擬合。兩種情況都會導致模型的泛化能力很差。提高模型泛化能力的常用方法是使用較大的模型,在訓練過程中使用正則化方法來限制模型的權重,提高模型訓練速度,減少過擬合風險,進而提高模型性能。
1. 泛化與過擬合
直觀地理解,發生的了過擬合就會導致泛化能力很差。
- 欠擬合模型。無法充分學習問題,在訓練數據集上表現在新樣本上表現都不佳的模型。
- 過擬合模型。該模型對訓練數據集學習得太好,在訓練數據集上表現良好,但在新樣本上表現不佳。
- 良好擬合模型。在訓練集和驗證集上的表現都很好的模型。
欠擬合模型具有高偏差和低方差。無論訓練數據中的特定樣本如何,它都無法瞭解問題。過擬合模型具有低偏差和高方差。該模型學習的訓練數據太好,即使訓練數據集中添加了噪聲,因此在新的樣本上的性能與訓練數據上的性能差異很大。
可以通過增加模型容量來解決欠擬合問題。容量是指模型適應各種功能的能力;更大的容量意味着模型可以適應更多類型的函數,以將輸入映射到輸出。通過更改模型的結構,例如在層上添加更多的層或更多的節點,可以輕鬆實現模型容量的增加。
與欠擬合相比,過擬合是更常出現更需要注意解決的問題。
通過在訓練集和保持驗證集上對模型進行評估,可以通過監視模型的性能來輕鬆診斷過擬合模型。在訓練過程中繪製模型性能的折線圖(稱爲學習曲線)可以判斷模型是否發生了過擬合。例如,在訓練和驗證數據集上的損失(最小化的目標函數)的曲線圖中,訓練集的損失曲線下降並可能達到平穩狀態,而驗證集的損失曲線首先下降,然後下降某個點再次開始上升。
2. 通過限制模型容量減少過擬合
有兩種方法可以解決過擬合問題:
- 擴充數據集。
- 降低模型容量(模型複雜度)。
深度神經網絡的一個優勢是:隨着餵給模型的數據集越來越大,模型的性能會不斷提高。一個使用幾乎無數樣本訓練的模型,可以在網絡能夠學習的能力方面達到穩定。大部分情況下數據是不足的,因此深度神經網絡很容易發生過擬合。過擬合的原因是模型容量過大,減少模型的容量可以降低過擬合風險。
神經網絡模型的容量是由節點和層的結構以及權重的參數來定義的。因此,可以通過以下兩種方式之一來降低神經網絡模型的容量,以減少過度擬合:
- 調整網絡結構(權重數量)。
- 調整網絡參數(權重大小)。
控制模型複雜度的第二種主要方法是通過使用正則化,即在誤差函數中增加懲罰項。
常見的方法集中在約束神經網絡中權重大小上,可以定義一個比問題所需的容量大得多容量的模型,然後使用正則化限制模型容量,以確保模型不會過擬合。在這種情況下,由於附加功能可以集中在更好地學習問題中的可推廣概念上,因此性能甚至可以更好。
花書裏說,正則化是我們對學習算法所做的任何修改,旨在減少其泛化誤差,而不是其訓練誤差。正則化是機器學習領域的核心問題之一,它的重要性只有優化才能與之匹敵。
3. 神經網絡的正則化方法
在訓練過程中,根據權重的大小對模型進行懲罰。該方法鼓勵模型使用較小的權重,將輸入映射到訓練數據集的輸出。這種方法稱爲權重正則化或權重衰減(L2正則化),並且對於簡單的線性模型和神經網絡,數十年來已證明非常有效。
六種常用的正則化方法:
- 1.L1L2正則化:在訓練過程中,根據權重的大小對模型進行懲罰。
- 2.激活正規化:在訓練過程中根據激活的數量對模型進行懲罰。
- 3.Dropout:在訓練過程中可能會刪除輸入。
- 4.權重限制:將權重的大小限制在一定範圍內。
- 5.及時停止:監視驗證集中的模型性能,並在性能下降時停止訓練。
- 6.添加噪聲:在訓練過程中將統計噪聲添加到輸入中。
4. 正則化使用經驗
除非有非常大的數據集(以千萬計的示例或更多),否則應始終考慮使用正則化。
具體經驗爲:
- 經典方法:使用及時停止和權重衰減(L2正則化)。
- 替代方案:使用及時停止,添加噪聲和權重限制。
- 現代方法:使用權重限制,及時停止和Dropout。
這些建議將適合多層感知器和卷積神經網絡。
對於遞歸神經網絡(RNN)的一些經驗包括:
- 經典方法:使用及時停止,添加權重噪聲和最大範數等權重限制。
- 現代方法:使用及時停止,使用反向傳播的時間感知版本和權重約束。
關於正則化沒有靈丹妙藥,牆裂建議通過實驗對比(比如網格搜索,隨機搜索)尋找最佳的超參數。