機器學習中常見的過擬合解決方法


  在機器學習中,我們將模型在訓練集上的誤差稱之為訓練誤差,又稱之為經驗誤差,在新的數據集(比如測試集)上的誤差稱之為泛化誤差,泛化誤差也可以說是模型在總體樣本上的誤差。對於一個好的模型應該是經驗誤差約等於泛化誤差,也就是經驗誤差要收斂於泛化誤差,根據霍夫丁不等式可知經驗誤差在一定條件下是可以收斂於泛化誤差的。

  當機器學習模型對訓練集學習的太好的時候(再學習數據集的通性的時候,也學習了數據集上的特性,這些特性是會影響模型在新的數據集上的表達能力的,也就是泛化能力),此時表現為經驗誤差很小,但往往此時的泛化誤差會很大,這種情況我們稱之為過擬合,而當模型在數據集上學習的不夠好的時候,此時經驗誤差較大,這種情況我們稱之為欠擬合。具體表現如下圖所示,第一幅圖就是欠擬合,第三幅圖就是過擬合。

  

  再如下面這幅圖所示,只要我們願意,在訓練集上的誤差是可以無限小的,但是此時的泛化誤差會增大。

  

  對於欠擬合的問題比較好處理,只要增大模型的復雜度就行,而且欠擬合會在訓練過程中就表現出來(通過看訓練集的損失來判斷),更容易去控制。對於過擬合不會體現在訓練集上,因此常見的方式是采用交叉驗證來檢測過擬合。解決過擬合的兩條主線:一是增大數據集,二是降低模型的復雜度(根據VC維理論可知)。一般來說擴展數據集是比較難的,而且數據集大,模型復雜度高的時候即使能獲得好的泛化結果,也會增大計算量。所以常見的方式都是以降低模型的復雜度為主,接下來看看有哪些常見的方法可以自適應地降低模型的復雜度。

1、正則化

  正則化是機器學習中最常見的過擬合解決方法,在損失函數中加入正則項來懲罰模型的參數,以此來降低模型的復雜度,常見的添加正則項的正則化技術有L1,L2正則化。

  L1正則化

  

  L1正則化是基於L1范數的,J是我們的損失函數,在損失函數優化時,我們要使得損失函數無限小,要滿足這個結果,表達式中的第二項也必須無限小。關於L1正則化項的函數可以在二維平面圖中表示出來,令

   

 

  

  圖中的等值線(就是那些曲線)是J0的等值線,黑色方形是正則項函數L的圖形。在圖中。當J0等值線和L圖形首次相交的地方就是最優解(根據拉格朗日約束問題的最小值可知,L函數可以看作J0函數的約束,沒有該約束,J0函數的最小值應該是最里面的等值線,加上約束之后,就是首次相交的點處),從圖中可以看出在相交點這里有w1為0,這也是L1正則的特點。加入L1正則項之后,數據集中那些對模型貢獻不大的特征所對應的參數w可以為0,因此L1正則項得出的參數是稀疏的。

  L2正則化

  

  同樣可以畫出在二維平面中的圖形來描述

  

  原理和L1正則中差不多,但是L2正則化不會獲得稀疏解,只會將對模型貢獻不大的特征所對應的參數置於無限小的值,以此來忽略該特征對模型的影響。

  因此正則化都是在通過控制模型參數的大小來降低模型的復雜度。

 

2、剪枝處理

  剪枝是決策樹中一種控制過擬合的方法,我們知道決策樹是一種非常容易陷入過擬合的算法,剪枝處理主要有預剪枝和后剪枝這兩種,常見的是兩種方法一起使用。預剪枝通過在訓練過程中控制樹深、葉子節點數、葉子節點中樣本的個數等來控制樹的復雜度。后剪枝則是在訓練好樹模型之后,采用交叉驗證的方式進行剪枝以找到最優的樹模型。

 

3、提前終止迭代(Early stopping)

  該方法主要是用在神經網絡中的,在神經網絡的訓練過程中我們會初始化一組較小的權值參數,此時模型的擬合能力較弱,通過迭代訓練來提高模型的擬合能力,隨着迭代次數的增大,部分的權值也會不斷的增大。如果我們提前終止迭代可以有效的控制權值參數的大小,從而降低模型的復雜度。

 

4、權值共享

  權值共享最常見的就是在卷積神經網絡中,權值共享的目的旨在減小模型中的參數,同時還能較少計算量。在循環神經網絡中也用到了權值共享。

 

5、增加噪聲

  這也是深度學習中的一種避免過擬合的方法(沒辦法,深度學習模型太復雜,容易過擬合),添加噪聲的途徑有很多,可以在輸入數據上添加,增大數據的多樣性,可以在權值上添加噪聲,這種方法類似於L2正則化。

 

6、Batch Normalization

  BM算法是一種非常有用的正則化方法,而且可以讓大型的卷積神經網絡快速收斂,同時還能提高分類的准確率,而且可以不需要使用局部響應歸一化處理,也可以不需要加入Dropout。BM算法會將每一層的輸入值做歸一化處理,並且會重構歸一化處理之后的數據,確保數據的分布不會發生變化。

  而且有很多變種,比如Layer Normalization,在RNN或者Transformer中用的比較多。

  上面的幾種方法都是操作在一個模型上 ,通過改變模型的復雜度來控制過擬合。另一種可行的方法是結合多種模型來控制過擬合。

 

7、Bagging和Boosting

  Bagging和Boosting是機器學習中的集成方法,多個模型的組合可以弱化每個模型中的異常點的影響,保留模型之間的通性,弱化單個模型的特性。

 

8、Dropout

  Dropout是深度學習中最常用的控制過擬合的方法,主要用在全連接層處。Dropout方法是在一定的概率上(通常設置為0.5,原因是此時隨機生成的網絡結構最多)隱式的去除網絡中的神經元,具體如下圖

  

  Dropout控制過擬合的思想和機器學習中的集成方法中的bagging類似,在每個batch更新的網絡結構都有所不同,也就相當於在訓練時有很多個不同的子網絡,在每次迭代時dropout的神經元都不一樣,因此對於整個模型參數而言,每次都會有一些參數不被訓練到。Dropout會導致網絡的訓練速度慢2、3倍,而且數據小的時候,Dropout的效果並不會太好。因此只會在大型網絡上使用。


免責聲明!

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



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