關於過擬合的問題


關於過擬合的問題

1、什么是過擬合?

過擬合(overfitting)是指學習時選擇的模型所包含的參數過多(即模型容量很大),以至於出現這一模型對已知數據預測得很好,但對未知數據預測得很差的現象。

2、產生過擬合的原因

產生過擬合的主要原因可以有以下三點:

 

1) 數據有噪聲

為什么數據有噪聲,就可能導致模型出現過擬合現象呢?這是因為,當噪聲數量在訓練集中占有相當大的比例時,就會與正常數據一起影響訓練集的分布,機器學習算法在學習過程中,把正常數據和噪聲數據同時擬合,學習到了一個正常數據與噪聲數據共同決定的模型,用此模型去預測從正常數據分布上取的未知數據,就很有可能得到不理想的泛化效果。

 

2) 訓練數據不足,有限的訓練數據

即使得到的訓練數據沒有噪聲,當我們訓練數據不足的時候,訓練出來的模型也可能產生過擬合現象。這是因為訓練數據有限,無法體現數據整體的分布。用給定的不充分的數據集上學習到的模型,去預測未知數據集上的數據,很大可能產生過擬合現象。如給定數據僅能夠擬合出一個線性模型,而訓練集和測試集總體服從非線性分布,用線性模型去預測非線性分布的數據,泛化能力顯然不好。

3) 訓練模型過度導致模型非常復雜

在有噪聲的訓練數據中,我們要是訓練過度,會讓模型學習到噪聲的特征,無疑是會造成在沒有噪聲的真實測試集上准確率下降。

3、為什么要解決過擬合現象?

因為我們擬合的模型一般是用來預測未知數據(不在訓練數據集內),過擬合雖然在訓練集上效果很好,但是在實際使用時(測試集)效果很差,同時,在很多問題上,我們無法窮盡所有狀態,不可能將所有情況都包含在訓練集上。所有必須解決過擬合問題。

 

4、如何解決過擬合現象?

4.1 Early stop(提前停止)

提前停止就是在驗證誤差開始上升之前,就把網絡的訓練停止了具體做法是每次在給定的迭代次數K內,把出現比之前驗證誤差更小的參數(模型)記錄下來。如果從上次記錄最小值開始,迭代了K次仍然沒有發現新的更小的驗證誤差,那就認為已經過擬合,把當前驗證誤差最小的模型當做最優模型。

4.2 Data expending(數據集擴增

過擬合是因為模型學習到了訓練集的獨有特性,那么如果我們的訓練集能夠涵蓋所有樣本空間,那么它就會學習到樣本特征空間的普遍特性,而獨特性將不復存在,因為測試集不會超出樣本的特征空間,所以結果和訓練集應該一致。

4.3 regularization(正則化)

正則化方法是指在進行目標函數或代價函數優化時,在目標函數或代價函數后面加上一個正則項,一般有L1正則與L2正則等

相關問題:

什么是L1L2正則?

l L1,L2服從什么分布?

l L1,L2的聯系與區別。

4.4 Bagging(bootstrap aggregating引導聚集)

Bagging亦稱為Ensemble(集成方法),這是一種通過結合幾個模型降低泛化誤差的技術。主要想法是通過對訓練數據有放回的采樣來訓練多個模型,然后讓所有模型表決(采用投票多數表決,取所有模型分類結果最多的分類作為結果)測試樣例的輸出。這種方法雖然在准確率和穩定性都會有提高,但是訓練多個模型的計算成本也是非常高的。

參考:花書《深度學習》

4.5 DroupOut(隨機失活)

假設我們選取一個隱層,在每一次梯度迭代中,讓隱層的每一個單元以一定的概率失活,這相當於訓練一個新的子網絡。下一次迭代繼續上述過程。Dropout的底層思想其實也是把多個模型的結果放到一起,只不過實現方式是在一個模型內部,而不是像Bagging一樣,真正地去訓練多個模型。定性地理解一下,dropout實現的相當於每次迭代都在一個隨機挑選的特征子空間進行。在實現dropout的時候,因為訓練時對單元按照一定概率p進行隨機置零,所以訓練結束后到了預測階段需要對參數的值乘上一個1-p,才能保證結果的正確性。

更多的內容,可以查看吳恩達深度學習筆記中的session 1.6、1.7。

4.6 BatchNorm (批量標准化)

可參考博文:https://blog.csdn.net/qq_25737169/article/details/79048516 以及deeplearn深度學習筆記的3.5 3.63.7

 

4.7 其它方法

除了以上方法,可以參考花書的第七章。

 

 

 

 

 

 


免責聲明!

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



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