什么是過擬合?
從訓練樣本中盡可能學出適用于所有潛在樣本的“普遍規律”,這樣才能在遇到新樣本時做出正確的判別。然而,當學習器把訓練樣本學得“太好”了的時候,很可能已經把訓練樣本自身的一些特點當作了所有潛在樣本都會具有的一般性質,這樣就會導致泛化性能下降。這種現象在機器學習中稱為“過擬合”(overfitting)。
與過擬合相對的是“欠擬合”(underfitting),這是指對訓練樣本的一般性質尚未學好。
過擬合產生的原因:
1、訓練數據量的限制
2、訓練參數的增多
3、學習能力過于強大(由學習算法和數據內涵共同決定)
防止過擬合的方法:
1、數據增強(data augmentation):一般想要獲得更好的模型,需要大量的訓練參數,這也是為什么CNN網絡越來越深的原因之一,而如果訓練樣本缺乏多樣性,那再多的訓練參數也毫無意義,因為這造成了過擬合,訓練模型的泛化能力相應也會很差。大量數據帶來的特征多樣性有助于充分利用所有的訓練參數。辦法一般有:(1)收集更多的數據 (2)對已有的數據進行修剪(crop),翻動(flip),加光照等(3)利用生成模型(比如GAN)生成一些數據。
2、權重衰減(weight decay):常用的權重衰減有L1和L2正則化,L1較L2能夠獲得更稀疏的參數,但L1零點不可導。在損失函數中,權重衰減是放在正則項(regulation)前面的一個系數,正則項一般指示模型的復雜度,所以權重衰減的作用是調節模型復雜度對損失函數的影響,若權重衰減很大,則復雜的模型損失函數的值也就大。
3、提前終止:提前終止其實是另一種正則化方法,就是在訓練集和驗證集上,一次迭代之后計算各自的錯誤率,當在驗證集上的錯誤率最小,在沒開始增大之前就停止訓練,因為如果接著訓練,訓練集上的錯誤率一般是會繼續減小的,但驗證集上的錯誤率會上升,這就說明模型的泛化能力開始變差了,出現過擬合問題,及時停止能獲得泛化能力更好的模型。如下圖(左圖是訓練集錯誤率,右圖是驗證集錯誤率,在虛線處提前結束訓練):
4、退出(dropout):CNN訓練過程中使用dropout是在每次訓練中隨機將部分神經元的權重置為0,即讓一些神經元失效,這樣可以縮減參數量,避免過擬合。原因在于:(1)每次迭代隨機使部分神經元失效,使得模型的多樣性增強,獲得了類似于多個模型組合(ensemble,合唱)的效果,避免過擬合;(2)dropout其實也是一個數據增強的過程,它導致了稀疏性,使得局部數據簇差異性明顯增強,有效避免過擬合。
參考資料:
1、周志華.《機器學習》.清華大學出版社.第2章-模型評估與選擇.
2、https://blog.csdn.net/leo_xu06/article/details/71320727 卷積神經網絡(CNN)防止過擬合的方法.
3、 Krizhevsky A, Sutskever I, Hinton G E. ImageNet classification with deep convolutional neural networks[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2012:1097-1105.