總結
- simpler model structure
- regularization
- data augmentation
- dropout
- Bootstrap/Bagging
- ensemble
- early stopping
- utilize invariance
- Bayesian
定義
過擬合(overfitting)是指在模型參數擬合過程中的問題,由於訓練數據包含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。
具體表現就是模型在訓練集上效果好,在測試集上效果差。模型泛化能力弱。
爲什麼要解決過擬合?
- 擬合的模型一般是用來預測未知的結果,過擬合雖然在訓練集上效果好,但是在實際使用時(測試集)效果差。
- 機器學習算法爲了滿足儘可能複雜的任務,其模型的擬合能力一般遠遠高於問題複雜度,也就是說,機器學習算法有【擬合出正確規則的前提下,進一步擬合噪聲】的能力。
解決方法:
- 獲取更多的數據
這是解決過擬合的最好的方式,只要給足夠多的數據,讓模型儘可能的看到例外的情況。
- 從數據源頭獲取,比如比賽的數據集爲貓狗的分類,那麼我自己再多拍一點貓狗的圖片加到原有的數據集中。但是比較費時費力。也不知道要多少數據纔是足夠的,但是越多越好了。
- 根據當前數據集估計數據分佈參數,使用該分佈產生更過數據,例如 gan 網絡。但是該估計分佈的時候,也會將抽樣誤差帶入其中。
- 數據增強(Data Augmentation):比如圖像的旋轉,伸縮,顏色明暗度的調整,添加高斯噪音等。
- 選擇模型
造成過擬合的主要原因是:數據過少+模型複雜。通過降低模型的複雜度,使用合適的複雜度的模型防止過擬合問題。如果能夠通過數學建模確定模型複雜度是最好的了,但是深度學習像個黑盒子一樣,具有一定的不可解釋性。
- 網絡結構:減少網絡層次,神經元個數,比如添加dropout技術。現在模型的複雜度,
- 訓練時間:採用 early stopping 技術。
- 限制權重:權重衰減 weight_decay,正則化 regularization(比如L2正則)。
- 增加噪聲 Noise:(1)在輸入中添加噪聲
- 模型融合:訓練多個模型,取平均或者是加權平均。
- bagging
- boosting
- 貝葉斯方法
綜上:
參考: