過擬合 準確率大幅下降 常見的過擬合解決方法

2021-10-11 23:09:16 字數 2234 閱讀 2467

1.l1和l2正則化

l1和l2正則化來避免過擬合是大家都知道的事情,而且我們都知道l1正則化可以得到稀疏解,l2正則化可以得到平滑解,這是為什麼呢?有幾種解釋吧,可以參考( 。主要有幾個方面:

1)直觀的從影象上觀察結論

2)通過對梯度的求解進行解釋

3)通過l1正則和l2正則假設的引數先驗上進行解釋。

(l1正則化可通過假設權重w的先驗分布為拉普拉斯分布,由最大後驗概率估計匯出。

l2正則化可通過假設權重w的先驗分布為高斯分布,由最大後驗概率估計匯出。)

因為拉普拉斯的分布相比高斯要更陡峭,它們的分布類似下圖,紅色表示拉普拉斯,黑色表示高斯。

可以看出拉普拉斯的小w的數目要比高斯的多,w的分布陡峭,而高斯的w分布較為均勻。也就是說,l1正則化更容易獲得稀疏解,還可以挑選重要特徵。l2正則有均勻化w的作用。

2.資料增強

獲取更多資料,這是最直觀也是最有效的方式之一,有了足夠的資料網路也不太容易過擬合了;

1)從資料源頭採集更多資料

2)複製原有資料並加上隨機雜訊

3)重取樣

4)根據當前資料集估計資料分布引數,使用該分布產生更多資料等

3.early stopping

early stopping便是一種迭代次數截斷的方法來防止過擬合的方法,即在模型對訓練資料集迭代收斂之前停止迭代來防止過擬合。因為在初始化網路的時候一般都是初始為較小的權值,訓練時間越長,部分網路權值可能越大。如果我們在合適時間停止訓練,就可以將網路的能力限制在一定範圍內。

early stopping可以得到與l2類似的引數平滑效果,可以通過定性和定量兩個方面進行分析,具體參考

4.dropout

dropout是指在深度學習網路的訓練過程中,對於神經網路單元,按照一定的概率將其暫時從網路中丟棄。dropout為什麼能防止過擬合,可以通過以下幾個方面來解釋:

它強迫乙個神經單元,和隨機挑選出來的其他神經單元共同工作,達到好的效果。消除減弱了神經元節點間的聯合適應性,增強了泛化能力。

類似於bagging的整合效果

對於每乙個dropout後的網路,進行訓練時,相當於做了data augmentation,因為,總可以找到乙個樣本,使得在原始的網路上也能達到dropout單元後的效果。 比如,對於某一層,dropout一些單元後,形成的結果是(1.5,0,2.5,0,1,2,0),其中0是被drop的單元,那麼總能找到乙個樣本,使得結果也是如此。這樣,每一次dropout其實都相當於增加了樣本。

dropout在測試時,並不會隨機丟棄神經元,而是使用全部所有的神經元,同時,所有的權重值都乘上1-p,p代表的是隨機失活率。

測試時為什麼要乘1-p呢?

可以像上圖這樣理解,p為0.5時,在測試階段得到的值會等於訓練時的兩倍,所以乘上1-p的係數就可使二者近似相等。

5.交叉驗證

交叉驗證的基本思想就是將原始資料(dataset)進行分組,一部分做為訓練集來訓練模型,另一部分做為測試集來評價模型。我們常用的交叉驗證方法有簡單交叉驗證、s折交叉驗證和留一交叉驗證。

6.決策樹剪枝

在決策樹學習中將已生成的樹進行簡化的過程稱為剪枝。又分為前剪枝和後剪枝。

7.選擇合適的網路結構,通過減少網路層數、神經元個數、全連線層數等降低網路容量;

8.模型組合,baggging &boosting,將弱分類器融合之後形成乙個強分類器,而且融合之後的效果會比最好的弱分類器更好;

9. batch normalization,一種非常有用的正則化方法,可以讓大型的卷積網路訓練速度加快很多倍,同時收斂後分類的準確率也可以大幅度的提高。bn在訓練某層時,會對每乙個mini-batch資料進行標準化(normalization)處理,使輸出規範到n(0,1)的正態分佈,減少了internal convariate shift(內部神經元分布的改變),傳統的深度神經網路在訓練是,每一層的輸入的分布都在改變,因此訓練困難,只能選擇用乙個很小的學習速率,但是每一層用了bn後,可以有效的解決這個問題,學習速率可以增大很多倍。

過擬合的解決方法

overfitting就是過擬合,其直觀的表現如下圖所示,隨著訓練過程的進行,模型複雜度增加,在training data上的error漸漸減小,但是在驗證集上的error卻反而漸漸增大 因為訓練出來的網路過擬合了訓練集,對訓練集外的資料卻不work,這稱之為泛化 generalization 效能...

解決過擬合的最終方法

今天有同學提問 老師,用預訓練網路過擬合,微調,降低學習率以後,還是過擬合。訓練集在0.99或者1,測試集在0.95上不去了,測試集的loss也大得多。還有什麼方法能再提高測試集的準確率或者減小過擬合嗎?這裡可以看到這位同學已經探索了一些方法,可以繼續使用dropout和正則化來抑制過擬合問題,但是...

AI模型Dropout過擬合問題及解決方法

今天在訓練模型的時候,發現模型一直出現過擬合問題,所以順便再將過擬合的問題及常用的解決手段在給總結一下 1.什麼是過擬合問題?過擬合問題通俗的來說就是模型的損失函式在訓練集上面下降的較好 平滑下降並且趨於平緩 而在測試集上面下降的不好,呈現一種上公升的趨勢。過擬合問題出現的原因就是模型的訓練資料過少...