開始我是很難弄懂什麼是過擬合,什麼是欠擬合以及造成兩者的各自原因以及相應的解決辦法,學習了一段時間機器學習和深度學習後,分享下自己的觀點,方便初學者能很好很形象地理解上面的問題。
無論在機器學習還是深度學習建模當中都可能會遇到兩種最常見結果,一種叫過擬合(over-fitting )另外一種叫欠擬合(under-fitting)。
首先談談什麼是過擬合呢?什麼又是欠擬合呢?網上很直接的理解如下:
所謂過擬合(over-fitting)其實就是所建的機器學習模型或者是深度學習模型在訓練樣本中表現得過於優越,導致在驗證資料集以及測試資料集中表現不佳。過擬合就是學到了很多沒必要的特徵,比如你說的長得像貓的狗,和長得像狗的貓,其實這只是特例,但神經網路為了更好的降低loss,就只能被迫學習這些特徵用來區分貓和狗。但是學習的太過了,(舉個例子:乙個男人穿著藍色的衣服,神經網路可能把是否穿藍色衣服作為區分男人女人的特徵,這就是過擬合)遇到了新樣本這些錯誤的特徵就沒有什麼用了。所以過擬合就是表現為訓練的時候效果很好(因為神經網路已經學到了很多有用沒用的特徵),但是在測試樣本上的效果就很差(有的特徵完全沒用啊,完全就是為了降低loss而得出來的特徵)。至於為什麼會產生過擬合,一般是因為引數過多,為了降低loss(神經網路的任務就是為了最小化loss),後者樣本過少。總之就是引數/樣本的比太大。
所謂欠擬合呢(under-fitting)?相對過擬合欠擬合還是比較容易理解。還是拿剛才的模型來說,可能訓練樣本被提取的特徵比較少,導致訓練出來的模型不能很好地匹配,表現得很差,甚至樣本本身都無法高效的識別。
那麼問題來了,我們需要怎麼去解決過擬合和欠擬合的問題呢??
現在常用的判斷方法是從訓練集中隨機選一部分作為乙個驗證集,採用k折交叉驗證的方式,用訓練集訓練的同時在驗證集上測試演算法效果。在缺少有效預防欠擬合和過擬合措施的情況下,隨著模型擬合能力的增強,錯誤率在訓練集上逐漸減小,而在驗證集上先減小後增大;當兩者的誤差率都較大時,處於欠擬合狀態(high bias, low variance);當驗證集誤差率達到最低點時,說明擬合效果最好,由最低點增大時,處與過擬合狀態(high variance, low bias)。下圖的橫座標用擬合函式多項式的階數籠統地表徵模型擬合能力:
過擬合:
首先我們從上面我們可以知道,造成過擬合的原因有可以歸結為:引數過多。那麼我們需要做的事情就是減少引數,這裡有兩種辦法:
1、回想下我們的模型,假如我們採用梯度下降演算法將模型中的損失函式不斷減少,那麼最終我們會在一定範圍內求出最優解,最後損失函式不斷趨近0。那麼我們可以在所定義的損失函式後面加入一項永不為0的部分,那麼最後經過不斷優化損失函式還是會存在。其實這就是所謂的「正則化」。
下面這張就是加入了正則化(regulation)之後的損失函式。這裡m是樣本數目,λ表示的是正則化係數。
注意:當 λ 過大時,則會導致後面部分權重比加大,那麼最終損失函式過大,從而導致欠擬合
當 λ 過小時,甚至為0,導致過擬合。
2、對於神經網路,引數膨脹原因可能是因為隨著網路深度的增加,同時引數也不斷增加,並且增加速度、規模都很大。那麼可以採取減少神經網路規模(深度)的方法。也可以用一種叫dropout的方法。dropout的思想是當一組引數經過某一層神經元的時候,去掉這一層上的一部分神經元,讓引數只經過一部分神經元進行計算。注意這裡的去掉並不是真正意義上的去除,只是讓引數不經過一部分神經元計算而已。
3.提前停止訓練:
也就是減少訓練的迭代次數。從上面的誤差率曲線圖可以看出,理論上能夠找到乙個訓練程度,此時驗證集誤差率最低,視為擬合效果最好的點。
另外增大訓練樣本規模同樣也可以防止過擬合。
欠擬合:
其實個人覺得欠擬合基本上都會發生在訓練剛開始的時候,經過不斷訓練之後欠擬合應該不怎麼考慮了。。但是如果真的還是存在的話,可以通過增加網路複雜度或者在模型中增加多點特徵點,這些都是很好解決欠擬合的方法。
過擬合和欠擬合
嘗試不同的模型 既然有一種可靠的方法來測量模型精度,那麼可以嘗試使用其他模型,並檢視哪種模型可以提供最佳 但是對模型有什麼選擇?可以在scikit learn的文件中看到決策樹模型有很多選項 比您長期想要或需要的更多 最重要的選項決定了樹的深度。回想一下這個微課程的第一課,樹的深度是衡量它在進行 之...
欠擬合和過擬合
解決欠擬合問題,可以從以下三個方面入手 1 增加特徵項 在大多數情況下出現過擬合是因為沒有準確把握資料的主要特徵,可以嘗試在模型中加入更多的和原始資料有重要相關性的特徵來尋連搭建的模型,著牙嗎嗯得到的模型可能會有更好的泛化能力。2 構造複雜的多項式 3 減少正則化引數 解決過擬合問題 1 增大訓練的...
過擬合和欠擬合
乙個假設在訓練資料上,能夠獲得比其他假設更好的擬合,但是在訓練資料外的資料集上卻不能很好的擬合資料,此事認為這個模型出現了過擬合現象 模型過於複雜 原因 原始特徵過多,存在一些嘈雜特徵,模型過於複雜是因為模型嘗試去兼顧各個測試資料點 解決辦法 乙個假設在訓練集上不能獲得更好的擬合,但是在訓練資料集以...