深度學習中的過擬合

2021-09-18 00:13:39 字數 1494 閱讀 6778

這篇⽂章主要是介紹⼀下神經⽹絡中的過擬合問題,並總結⼀下⽬前都有哪些有效的⽅法來緩解過擬合問題。

過擬合表現

在深度學習任務中,過擬合最直觀的表現就是,模型在測試集的表現遠遠差於訓練集,也就是模型的泛化效能太差。

直觀分析為什麼在測試集上的表現差於訓練集?最簡單的回答,因為模型就是在訓練集上訓練出來的,它對訓練集接觸

的⽐較多,好!那為什麼測試集和訓練集是同⼀類資料(訓練集和測試集同⼀分布),表現就這麼差了呢?難

道模型從訓練集學錯東西了?沒有去學習資料內在真實的規律(分布)?

我們都知道設計模型是為了讓模型⾃⼰歸納出資料的內在規律,那麼我們現在有理由懷疑⽹絡⾃⼰"學壞了",沒有按照我們的期望去學習。

那更正式的解釋呢?我們所有的訓練集都是對真實樣本的抽樣,不管是圖⽚資料,還是語⾳等,獲得的樣本是 x =x(真實值)+u(隨機誤差) ,⽽我們的神經⽹絡優化的損失函式是模型的輸出與 x 之間的誤差,所以模型擬合的是x的分布,⽽我們期望的是⽹絡盡可能的找到 x(真實值) 的分布,所以當⽹絡錯誤的過分擬合 x 時(即也強⾏擬合了u(隨機誤差)),當使⽤測試集時,就算對於同⼀類圖⽚,當隨機誤差不⼀樣時,模型也認為它們是不同類的。

其次,我們還可以想到,也有可能是訓練資料太少了,不具有代表性,為什麼呢?周所周知,機器學習或者深度學習任務中,⼀個前提是訓練集在待解決問題上必須有⾜夠的代表性,當資料太少時,

⽹絡往往只學習到了⼀部分,⼤數定理也告訴我們,當樣本⾜夠多時,我們可以近似認為樣本分佈就是真實分布。

神經⽹絡中導致過擬合的操作

訓練集⼤⼩相對於⽹絡規模偏⼩。

怎麼定義這個⼩?⽬前我是不清楚有什麼公式或者量化的⽅式在訓練前知道是否會過擬合,通常我的做法就是設計⽹

絡結構時根據經驗,先從⼩⽹絡開始,畢竟⼩⽹絡訓練快,⼀步⼀步增加⽹絡規模,直到發現訓練集誤差⽐上個模型⼩,但是測試集誤差卻變⼤,這⾥就可以初步知道對於該問題,神經⽹絡的⼤致規模。

緩解過擬合的⽅法

獲取更多、質量更⾼的資料。

直接採集新的資料,對於圖⽚資料,上⽹爬,⾃⼰去拍等。

資料增強(要根據實際問題選取其中的⼀部分操作,不能⽆腦⽤):標準化、隨機旋轉、隨機裁剪、隨機亮度、隨機雜訊、隨機平移,隨機縮放,mixup等。⽣成式資料:利⽤ gan來根據已有的資料⽣成新的資料,沒⽤過,聽說效果不太好。

減⼩模型的規模,上⾯也說了,模型規模太⼤,導致模型完美地擬合了訓練集,包括雜訊。

正則化l1、l2範數,對權重施加懲罰項,⼀般使⽤l2範數,求導容易,⽅便優化dropout

bnearly stopping

整合學習⽅法

bagging:每次有放回的從訓練集抽取⼀個⼦集訓練模型,經過n次抽取,會訓練出n個模型,測試時分別使⽤n個模型,最後再綜合決策出結果。

boosting:同樣也是訓練n個分類器,不過是根據樣本的權重,依次遞進的訓練,它訓練出的分類器成為弱分類器,最後將弱分類器按照各⾃的"效能得分"組合成⼀個強分類器。

深度學習過擬合

過擬合是深度學習中十分常見的問題,乙個模型如果過擬合了就無法很好的適用於實際的業務場景中。防止過擬合的方法 1 引入正則化 2 dropout 3 提前終止訓練 4 增加樣本量 下面一一作出詳細的介紹 模型過擬合極有可能是模型過於複雜造成的。模型在訓練的時候,在對損失函式進行最小化的同時,也需要對引...

深度學習中過擬合與防止過擬合的方法

1.什麼是過擬合?過擬合 overfitting 是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是最終模型在訓練集上效果好 在測試集上效果差。模型泛化能力弱。2.過擬合產生的原因?1 在對模型進行訓練時,有可...

深度學習中過擬合與防止過擬合的方法

過擬合 overfitting 是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是最終模型在訓練集上效果好,在測試集上效果差,模型泛化能力弱。1 在對模型進行訓練時,有可能遇到訓練資料不夠,即訓練資料無法對整個...