前言:
機器學習的模式是通過大量的資料餵給一個模型,模型會根據資料不斷調整自身引數,最終具備判別這些資料的模式或特徵的能力。若模型無法從這些資料中訓練出一個很好的效果,則認為它是欠擬合。若模型在訓練的時候達到很好的效果,而在未參與訓練的資料上測試,效果不好,則認為它是過擬合。
在本文,將介紹欠擬合與過擬合的概念、特點、產生的原因、解決的方法。在認真閱讀本文後,讀者將會對欠擬合與過擬合有個全面的認識。
關注公眾號CV技術指南,及時獲取更多計算機視覺技術總結文章。
欠擬合與過擬合的概念
在訓練模型的過程中,我們通常希望達到以下兩個目的:
1. 訓練的損失值儘可能地小。
2. 訓練的損失值與測試的損失值之間的差距儘可能地小。
當第一個目的沒有達到時,則說明模型沒有訓練出很好的效果,模型對於判別資料的模式或特徵的能力不強,則認為它是欠擬合的。
當第一個目的達到,第二個沒有達到時,說明模型訓練出了很好的效果,而測試的損失值比較大,則說明模型在新的資料上的表現很差,此時可認為模型過度擬合訓練的資料,而對於未參與訓練的資料不具備很好的判別或擬合能力,這種情況下,模型是過擬合的。
用一個通俗的例子來說明:
假定你家裡安排你去相親,告訴你女方在某某餐廳等你。
若你家裡人告訴你,女方穿裙子,披肩長髮。結果你進去,發現有好幾個位置都是穿裙子、披肩長髮的女生,此時你無法判斷是哪一個,這說明你瞭解女生身上的特徵不夠多,是欠擬合的。
若你家裡人告訴你,女方穿裙子,戴了個帽子,披肩長髮,手機殼是哆啦A夢,眉角有顆痣。結果女方覺得餐廳太熱,進餐廳沒多久就脫了帽子,你進去後發現有一個女生其它條件都符合,就是沒戴帽子,你就因此認定她不是你相親物件,這說明你瞭解的女生的特徵太多,對於稍微有點不同的特徵,你就做出了錯誤判斷,這是過擬合的。
若家裡人告訴你,女方穿裙子,披肩長髮,眉角有顆痣。你進去後發現,雖然穿裙子的有好幾個,披肩長髮的也不少,但眉角有痣的就那一位,即便那位還戴了個帽子,也不妨礙你認為她就是你相親物件,於是你準確地走到了她面前開始了尷尬的交流,這是合理的擬合。
在這個例子中,裙子,披肩長髮都是女生很普遍的特徵,眉角的痣和裙子、披肩長髮的組合是她特有的特徵,手機殼和戴帽子這屬於偶然的特徵,不能因為她換了手機殼或沒戴帽子就不認識這人了。過擬合在於將偶然的特徵也作為識別身份的標誌,而欠擬合在於瞭解的特徵的特徵不夠多,在機器學習中表示模型的學習能力不夠,無法學到足夠的資料特徵。
欠擬合的特點:訓練的損失值很大,且測試的損失值也很大。
過擬合的特點:訓練的損失值足夠小,而測試的損失值很大。
對於一個足夠複雜度或足夠引數量的模型或神經網路來說,隨著訓練的進行,會經歷一個“欠擬合-適度擬合-過擬合”的過程。
對於一個複雜度不夠的模型或引數量太少的神經網路來說,只有欠擬合。
欠擬合產生的原因與解決方法
根據欠擬合的特點來看,產生欠擬合的主要原因有兩個:
1. 模型的容量或複雜度不夠,對神經網路來說是引數量不夠或網路太簡單,沒有很好的特徵提取能力。通常為了避免模型過擬合,會新增正則化,當正則化懲罰太過,會導致模型的特徵提取能力不足。
2. 訓練資料量太少或訓練迭代次數太少,導致模型沒有學到足夠多的特徵。
根據欠擬合產生的原因來分析,解決方法有兩個:
1. 換個更復雜的模型,對神經網路來說,換個特徵提取能力強或引數量更大的網路。或減少正則化的懲罰力度。
2. 增加迭代次數或想辦法弄到足夠的訓練資料或想辦法從少量資料上學到足夠的特徵。如適度增大epoch,資料增強,預訓練,遷移學習,小樣本學習,無監督學習等。
過擬合產生的原因與解決方法
根據過擬合的特點來看,過擬合產生的原因有以下四個:
1. 模型太複雜,對神經網路來說,引數太多或特徵提取能力太強,模型學到了一些偶然的特徵。
2. 資料分佈太單一,例如訓練用的所有鳥類都在籠子裡,模型很容易把籠子當成識別鳥的特徵。
3. 資料噪聲太大或干擾資訊太多,如人臉檢測,訓練影像的解析度都是幾百乘幾百,而人臉只佔了幾十到幾百個畫素,此時背景太大,背景資訊都屬於干擾資訊或噪聲。
4. 訓練迭代次數太多,對資料反覆地訓練也會讓模型學到偶然的特徵。
根據過擬合產生的原因來看,解決方法有以下四個:
1. 換一個複雜度低一點的模型或正則化,對神經網路來說,使用引數量少一點的網路,或使用正則化。
2. 使用不同分佈的資料來訓練。如資料增強,預訓練等。
3. 使用影像裁剪等方法對影像進行預處理。
4. 及時地停止訓練。如何判斷什麼時候該停止訓練?使用K折交叉驗證,若訓練損失還在減少,而驗證損失開始增加,則說明開始出現過擬合。
其他文章
本文來源於公眾號CV技術指南的技術總結系列。