overfitting怎麼解決

2021-08-26 08:09:46 字數 1342 閱讀 1512

overfitting就是過擬合, 其直觀的表現如下圖所示,隨著訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大——因為訓練出來的網路過擬合了訓練集, 對訓練集外的資料卻不work, 這稱之為泛化(generalization)效能不好。泛化效能是訓練的效果評價中的首要目標,沒有良好的泛化,就等於南轅北轍, 一切都是無用功。

( 實際訓練中, 降低過擬合的辦法一般如下:

正則化(regularization)

l2正則化:目標函式中增加所有權重w引數的平方之和, 逼迫所有w盡可能趨向零但不為零. 因為過擬合的時候, 擬合函式需要顧忌每乙個點, 最終形成的擬合函式波動很大, 在某些很小的區間裡, 函式值的變化很劇烈, 也就是某些w非常大. 為此, l2正則化的加入就懲罰了權重變大的趨勢.

l1正則化:目標函式中增加所有權重w引數的絕對值之和, 逼迫更多w為零(也就是變稀疏. l2因為其導數也趨0, 奔向零的速度不如l1給力了). 大家對稀疏規則化趨之若鶩的乙個關鍵原因在於它能實現特徵的自動選擇。一般來說,xi的大部分元素(也就是特徵)都是和最終的輸出yi沒有關係或者不提供任何資訊的,在最小化目標函式的時候考慮xi這些額外的特徵,雖然可以獲得更小的訓練誤差,但在**新的樣本時,這些沒用的特徵權重反而會被考慮,從而干擾了對正確yi的**。稀疏規則化運算元的引入就是為了完成特徵自動選擇的光榮使命,它會學習地去掉這些無用的特徵,也就是把這些特徵對應的權重置為0。

隨機失活(dropout)

在訓練的執行的時候,讓神經元以超引數p的概率被啟用(也就是1-p的概率被設定為0), 每個w因此隨機參與, 使得任意w都不是不可或缺的, 效果類似於數量巨大的模型整合。

逐層歸一化(batch normalization)

這個方法給每層的輸出都做一次歸一化(網路上相當於加了乙個線性變換層), 使得下一層的輸入接近高斯分布. 這個方法相當於下一層的w訓練時避免了其輸入以偏概全, 因而泛化效果非常好.

提前終止(early stopping)

理論上可能的區域性極小值數量隨引數的數量呈指數增長, 到達某個精確的最小值是不良泛化的乙個**. 實踐表明, 追求細粒度極小值具有較高的泛化誤差。

這是直觀的,因為我們通常會希望我們的誤差函式是平滑的, 精確的最小值處所見相應誤差曲面具有高度不規則性, 而我們的泛化要求減少精確度去獲得平滑最小值, 所以很多訓練方法都提出了提前終止策略.

典型的方法是根據交叉叉驗證提前終止: 若每次訓練前, 將訓練資料劃分為若干份, 取乙份為測試集, 其他為訓練集, 每次訓練完立即拿此次選中的測試集自測. 因為每份都有一次機會當測試集, 所以此方法稱之為交叉驗證. 交叉驗證的錯誤率最小時可以認為泛化效能最好, 這時候訓練錯誤率雖然還在繼續下降, 但也得終止繼續訓練了.

如何解決過擬合(overfitting)問題?

為了得到一致假設而使假設變得過度嚴格稱為過擬合。過擬合的模型一般對訓練資料表現很好,而對測試資料表現很差。early stopping 可以設定乙個迭代截斷的閾值,到了這個閾值迭代終止 也可以設定兩次迭代之間的accuracy提高很小的時候,停止迭代。l1 l2正則化 使整體cost取較大值,避免某...

過度擬合 Over fitting

一 說明 過度擬合是指模型與訓練資料擬合較好,訓練誤差很小或沒有訓練誤差,但不能很好地推廣到不可見資料。或者說在實際的整個資料分布 包含訓練集以外例項 上表現不好時,稱之為該模型存在過度擬合。由於測試學習演算法是否成功在於演算法對於訓練中未見過的資料的 執行能力。因此換句話說,模型的訓練誤差小,泛化...

機器學習(八) Overfitting

什麼是overfitting 從overfitting這個詞的字面上看來就是過度擬合,我們知道的,不管什麼東西,過度了一般都是不好的。overfitting 如果我們選取了太多太多的特徵,那麼通過學習的模型將會幾乎完美的擬合我們的訓練集,但是同時這將導致模型不能很好的擬合新的樣本。泛化能力低下 當然...