1. 程式人生 > >神經網路之過擬合(附程式碼)

神經網路之過擬合(附程式碼)

摘要

監督機器學習問題無非就是“minimizeyour error while regularizing your parameters”,也就是在規則化引數的同時最小化誤差。最小化誤差是為了讓我們的模型擬合我們的訓練資料,而規則化引數是防止我們的模型過分擬合我們的訓練資料。


什麼是過擬合

過擬合

過擬合

一個假設在訓練資料上能夠獲得比其他假設更好的擬合,但是在訓練資料外的資料集上卻不能很好地擬合數據,此時認為這個假設出現了過擬合的現象。
模型把資料學習的太徹底,以至於把噪聲資料的特徵也學習到了。訓練集的準確率很高,但是在測試集準確率卻不高,無法泛化到實際應用中。

為什麼會出現過擬合

樣本問題

  • 選取的樣本資料不足以代表預定的分類規則

    樣本數量太少
    選樣方法錯誤
    樣本標籤錯誤

  • 樣本資料存在分類決策面不唯一,隨著學習的進行,BP演算法使權值可能收斂過於複雜的決策面

    一個樣本實際可以分成多類,但在樣本標註時只標註了一個分類

  • 樣本噪聲干擾過大,使得機器將部分噪音認為是特徵從而擾亂了預設的分類規則

模型問題

  • 假設的模型無法合理存在,或者說是假設成立的條件實際並不成立;
  • 模型引數太多,模型複雜度過高

    類比高次曲線擬合

  • 權值學習迭代次數太多,擬合了訓練資料中的噪聲和訓練樣例中沒有代表性的特徵

例項

a neural network playground

如何防止過擬合

資料集

  • 重新清洗資料
  • 增加訓練用資料量
  • 保留驗證資料集,對訓練成果進行驗證
  • 獲取額外資料進行交叉驗證

降低模型複雜度

模型調整

  • 採用更小的特徵集(神經元和層數)
    一般,減小特徵集的方法有:特徵選擇和特徵抽取。
    特徵選擇是指在原有的特徵中選擇一部分特徵來用,拋棄不重要的特徵,新的特徵集是原特徵集的子集
    特徵抽取是指通過原有的高維特徵構建新的特徵,新的特徵維度遠遠低於原有特徵的維度,新的每一維特徵都是原有所有特徵的加權組合。最常見的特徵抽取方法有主成分分析(PCA)和因子分析。

訓練調整

  • 使用權值衰減的方法,即每次迭代過程中以某個小因子降低每個權值
  • 選取合適的停止訓練標準,使對機器的訓練在合適的程度

正則化

在進行目標函式或代價函式優化時,在目標函式或代價函式後面加上一個正則項,用於規範引數的分佈。一般有L1正則與L2正則等
假設模型引數服從先驗概率,即為模型引數新增先驗,只是不同的正則化方式的先驗分佈是不一樣的。這樣就規定了引數的分佈,使得模型的複雜度降低

損失函式正則化

  • L0

    L0範數是指向量中非0的元素的個數。讓引數W是稀疏的,很難優化求解

  • L1

資料清洗

L1範數是指向量中各個元素絕對值之和,也叫“稀疏規則運算元”。L1範數是L0範數的最優凸近似,而且它比L0範數要容易優化求解

  • L2

資料清洗

L2範數是指向量各元素的平方和然後求平方根。使得引數w變小加劇的效果。更小的引數值w意味著模型的複雜度更低,對訓練資料的擬合剛剛好(奧卡姆剃刀),不會過分擬合訓練資料,從而使得不會過擬合,以提高模型的泛化能力。
使矩陣可逆(存在唯一解)

網路結構正則化

  • dropout

資料清洗

過擬合,可以通過阻止某些特徵的協同作用來緩解。在訓練時候以一定的概率p來跳過一定的神經元

例項

a neural network playground

具體程式碼見GITHUB
- 訓練框架:TensorFlow
- 資料集:numpy 生成上下半圓分類資料
- 神經網路型別:3隱藏層,tanh啟用
- 訓練次數:20000
- 針對原始狀態、資料清洗、增加資料量、變化學習率、簡化模型、L1正則化、L2正則化、dropout等在同樣訓練次數下的訓練集和測試集loss值對比

序號 方法 100*訓練集loss值 100*測試集loss值
1 原始狀態 0.377945 0.884091
2 資料清洗 0.031726 0.207343
3 增加資料量 0.499281 0.467030
4 變化學習率 0.456729 0.502236
5 簡化模型 0.351006 0.493120
6 L1正則化 0.681640 0.729197
7 L2正則化 0.595900 0.742676
8 dropout 0.606940 0.614125

原始狀態擬合圖

原始狀態

使用資料清洗擬合圖

資料清洗

使用增加資料量擬合圖

增加資料量

使用變化學習率擬合圖

變化學習率

使用簡化模型擬合圖

簡化模型

使用L1正則化擬合圖

L1正則化

使用L2正則化擬合圖

L2正則化

使用dropout擬合圖

dropout

結論

從資料、模型、訓練方法三個方向入手
模型、訓練方法上需要增加調整引數,且增加的調整引數變化對結果影響較大。需要持續找出引數與原有分佈的規律


參考資料
- 百度百科
- 維基百科Overfitting
- Regularization(正則化)與Dropout
- 5 Ways How to Reduce Overfitting
- 特徵選擇常用演算法綜述
- 機器學習中的範數規則化之(一)L0、L1與L2範數
- 利用TensorFlow訓練簡單的二分類神經網路模型