防止或減輕過擬合的方法

HNU-Zhou發表於2020-11-21

過擬合是指模型在訓練集上表現很好,但是驗證集和測試集上表現一般,泛化能力差。

過擬合出現的可能原因:

  • 樣本規模:樣本數量太少、不足以覆蓋業務場景
  • 噪聲干擾:樣本存在大量噪聲,模型將噪聲的特徵也學到了
  • 模型能力:模型複雜度過高

解決辦法

  • 對於樣本較少的情況,可以考慮進行資料增強來生成一些資料,這樣也可以減小噪聲資料的佔比

  • 正則化策略,在目標函式或者代價函式後面加上一個正則項。常見的有L1和L2正則化。

    img img

    (左圖為L1正則化,右圖為L2正則化)

    L1正則化(拉普拉斯分佈)是指權值向量 W W W中各個元素的絕對值之和,L1正則化有利於得到稀疏模型

    • 稀疏模型避免了模型冗餘,只保留與響應變數最相關的解釋變數,簡化了模型;

    • L1正則化有助於生成一個稀疏權值矩陣,如左圖同時滿足約束條件:

      min ⁡ w ∑ n = 1 N ( h w ( x i ) − y i ) 2 \min _{w} \sum_{n=1}^{N}\left(h_{w}\left(x_{i}\right)-y_{i}\right)^{2} minwn=1N(hw(xi)yi)2
      s.t. ∣ w 1 ∣ + ∣ w 2 ∣ ≤ η \quad\left|w_{1}\right|+\left|w_{2}\right| \leq \eta w1+w2η

      的點一般在矩形頂點位置,也就是權重為0的位置

    • 可以理解為通過加入L1正則化實現了降維(一些特徵的權重變成了0)

    L2正則化(高斯分佈)是指權值向量 W W W中各個元素的平方和然後再求平方根傾向於讓權值儘可能小

    • 引數值小的模型比較簡單,或者理解為更“平滑”,如果模型的某個權重係數特別大,那麼某個特徵的任何輕微變動都將對結果產生嚴重影響。
    • L2正則化會限制住 w w w的大小,但是不會讓 w w w分量變成0,如右圖。
  • Dropout策略(Dropout在input layer 乘以伯努利隨機概率,如果p =0.5,那麼y就有50%的概率會變成0 )

    • 取平均,相當於每次都隨機產生了一個“新的模型”,不同的模型可能產生不能的過擬合,一般會得到n個不同的結果,此時我們可以採用 “n個結果取均值”或者“多數取勝的投票策略”去決定最終結果。
      • 類似的思路:Boosting基本思想: 通過改變訓練資料的概率分佈(訓練資料的權值分佈),學習多個弱分類器,並將它們線性組合,構成強分類器。
    • 減少神經元之間複雜的共適應關係: 因為dropout程式導致兩個神經元不一定每次都在一個dropout網路中出現。這樣權值的更新不再依賴於有固定關係的隱含節點的共同作用,阻止了某些特徵僅僅在其它特定特徵下才有效果的情況 。迫使網路去學習更加魯棒的特徵 ,這些特徵在其它的神經元的隨機子集中也存在。
    • Dropout主要用於全連線網路,而且一般認為設定為0.5或者0.3,而在卷積網路隱藏層中由於卷積自身的稀疏化以及稀疏化的ReLu函式的大量使用等原因,Dropout策略在卷積網路隱藏層中使用較少
  • **整合學習(模型融合)**將弱分類器融合之後形成一個強分類器也可以減輕過擬合。

    • Bagging(套袋法):從原始樣本集中抽取訓練集(Bootstraping方法抽取 ),k個子訓練集共得到k個模型,對分類問題:將上步得到的k個模型採用投票的方式得到分類結果;對迴歸問題,計算上述模型的均值作為最後的結果。

    • Boosting方法,boosting每次對訓練集進行轉換後重新訓練出基模型,最後再綜合所有的基模型預測結果。主要演算法有 AdaBoost 和 GBDT。

      AdaBoosting方式每次使用的是全部的樣本,每輪訓練改變樣本的權重。下一輪訓練的目標是找到一個函式 f f f來擬合上一輪的殘差。當殘差足夠小或者達到設定的最大迭代次數則停止。Boosting會減小在上一輪訓練正確的樣本的權重,增大錯誤樣本的權重。(對的殘差小,錯的殘差大)

  • 降低模型複雜度以降低其擬合能力

  • Early Stoping,比如驗證集指標超過10個epoch都沒有提升就提前停止

  • 其他:通過資料清洗減少重複樣本和髒資料的佔比;用hard negative mining(難例挖掘),只用負樣本的一部分參與訓練等

相關文章