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

2021-09-13 09:42:20 字數 3070 閱讀 8139

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

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

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

對於欠擬合的問題比較好處理,只要增大模型的複雜度就行,而且欠擬合會在訓練過程中就表現出來(通過看訓練集的損失來判斷),更容易去控制。對於過擬合不會體現在訓練集上,因此常見的方式是採用交叉驗證來檢測過擬合。解決過擬合的兩條主線:一是增大資料集,二是降低模型的複雜度(根據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的效果並不會太好。因此只會在大型網路上使用。

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

模型的誤差是偏差和方差相加而成的。偏差 又稱訓練誤差,經驗誤差 反映了模型在訓練集樣本上的期望輸出與真實結果之間的差距,即模型本身的精確度,反映的是模型本身的擬合能力。偏差過高反映了模型存在欠擬合現象,表明模型過於簡單,沒有很好的擬合訓練集變數之間的特徵,需要進一步提公升模型的複雜度。方差 又稱泛化...

過擬合的解決方法

overfitting就是過擬合,其直觀的表現如下圖所示,隨著訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大 因為訓練出來的網路過擬合了訓練集,對訓練集外的資料卻不work,這稱之為泛化 generalization 效能...

過擬合及解決方法

在機器學習演算法中,我們經常將原始資料集分為三部分 訓練集 training data 驗證集 validation data 測試集 testing data 1.validation data是什麼?它事實上就是用來避免過擬合的。在訓練過程中,我們通經常使用它來確定一些超引數 比方,依據vali...