CNN 防止過擬合的方法
因為數據量的限制以及訓練參數的增多,幾乎所有大型卷積神經網絡都面臨着過擬合的問題,目前常用的防止過擬合的方法有下面幾種:
1. data augmentation: 這點不需要解釋太多,所有的過擬合無非就是訓練樣本的缺乏和訓練參數的增加。
一般要想獲得更好的模型,需要大量的訓練參數,這也是為什么CNN網絡越來越深的原因之一,而如果訓練樣本缺乏多樣性,
那再多的訓練參數也毫無意義,因為這造成了過擬合,訓練的模型泛化能力相應也會很差。大量數據帶來的特征多樣性有助於充分利用所有的訓練參數。
data augmentation的手段一般有:
1)收集更多數據
2)對已有數據進行crop,flip,加光照等操作
3)利用生成模型(比如GAN)生成一些數據。
2. weight decay: 常用的weight decay有L1和L2正則化,L1較L2能夠獲得更稀疏的參數,但L1零點不可導。
在損失函數中,weight decay是放在正則項(regularization)前面的一個系數,正則項一般指示模型的復雜度,
所以weight decay的作用是調節模型復雜度對損失函數的影響,若weight decay很大,則復雜的模型損失函數的值也就大。
3. 提前終止: 提前停止其實是另一種正則化方法,就是在訓練集和驗證集上,一次迭代之后計算各自的錯誤率,當在驗證集上的錯誤率最小,
在沒開始增大之前停止訓練,因為如果接着訓練,訓練集上的錯誤率一般是會繼續減小的,但驗證集上的錯誤率會上升,這就說明模型的泛化能力開始變差了,
出現過擬合問題,及時停止能獲得泛化更好的模型。
如下圖(左邊是訓練集錯誤率,右圖是驗證集錯誤率,在虛線處提前結束訓練):

4. dropout : CNN訓練過程中使用dropout是在每次訓練過程中隨機將部分神經元的權重置為0,即讓一些神經元失效,這樣可以縮減參數量,避免過擬合。
關於dropout為什么有效,有兩種觀點:
1)每次迭代隨機使部分神經元失效使得模型的多樣性增強,獲得了類似多個模型ensemble的效果,避免過擬合
2)dropout其實也是一個data augmentation的過程,它導致了稀疏性,使得局部數據簇差異性更加明顯,這也是其能夠防止過擬合的原因。關於dropout的解釋可參考這篇博客。
轉自:http://blog.csdn.net/leo_xu06/article/details/71320727