過擬合原因及解決

過擬合原因及解決

過擬合:模型在訓練集上效果好;在測試集上效果差。模型泛化能力弱。

1、數據量小
解決:數據增強,也就是增加訓練數據樣本
例如:通過一定規則擴充數據或採集更多數據

2、模型複雜度過大,造成訓練誤差過小
解決:
1)、在輸入中加噪聲
在輸入中加高斯噪聲,會在輸出中生成干擾項。訓練時,減小誤差,同時也會對噪聲產生的干擾項進行懲罰,達到減小權值的平方的目的,達到與 L2 類似的效果;

2)、正則化(限制權值)
通過給損失函數引入額外信息給模型複雜性帶來相應的懲罰度。
例如:
L1的效果就是讓w往0靠,使網絡中的權重儘可能爲0,也就相當於減小了網絡複雜度, L1會趨向於產生少量的特徵,而其他的特徵都是0;

L2正則化是通過約束參數的範數使其不要太大,所以能夠在一定程度上降低過擬合情況,
L2會選擇更多的特徵,這些特徵都會接近於0

L1在特徵選擇時候非常有用, L2就只是一種規則化而已;

3、神經元過於密集
解決:組合多個簡單模型
例:
1)dropout:改動神經網路本身,模型訓練時,每次隨機(如 50% 概率)忽略隱層的某些節點;這樣,我們相當於隨機從 2^H 個模型中採樣選擇模型

2)Bagging:簡單理解,就是分段函數的概念,用不同的模型擬合不同部分的訓練集。

3)Boosting:既然訓練複雜神經網絡比較慢,那我們就可以只使用簡單的神經網絡(層數、神經元數限制等)。通過訓練一系列簡單的神經網絡,加權平均其輸出。

4、學習樹過深
解決:
提前終止(early stopping):使用交叉驗證或者k折交叉驗證,在每次迭代後計算驗證數據集的accuracy,當accuracy不再提高時,就停止訓練(一般的做法是,在訓練的過程中,記錄到目前爲止最好的validation accuracy,當連續10次Epoch(或者更多次)沒達到最佳accuracy時,則可以認爲accuracy不再提高了。)

爲什麼early stopping有用:因爲我們在初始化網絡的時候一般都是初始爲較小的權值。訓練時間越長,部分網絡權值可能越大。如果我們在合適時間停止訓練,就可以將網絡的能力限制在一定範圍內。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章