CNN 防止過擬合的方法


 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM