如何有效降低機器學習模型過擬合?
為什么會過擬合?
首先需要有一個基本概念,機器學習目前還是處于統計學習范疇,即在一堆數據集(訓練集)中尋找規律,然后在新的數據(測試集)預測結果,如果在新數據那預測的效果不佳但訓練集效果極好,這時候我們就大概率確認是過擬合的情況。
機器學習過擬合情況.png|550
如何緩解過擬合?
增加訓練集
這是一個很直接但有效的解決方案,可以想象一下,我們假定模型的靈活性很高,它很好地擬合了我們的訓練集,但我們的訓練集(已有的數據)無法很好把數據的真實分布(全域數據)給展示出現來,所以我們在訓練集的效果很好,但跑到測試集時,效果就會差。
那這時候,我們拿更多的數據,將實際的真實分布(全域數據)展現出來,這時候模型去擬合,就可以提升整體效果。
那如何做數據增強?我建議最好還是根據對業務問題的理解創造出新的數據。
例如,你要做的是圖像識別,這時候數據增強有可能考慮隨機裁剪、顏色變換、隨機遮擋等,比較少會出現上下翻轉或者鏡像翻轉這種,除非真實場景有這個需求,所以做數據增強的時候,都是根據你的真實場景去構造新的數據,來將你的訓練集越變越大,盡量符合全域數據的情況(或者說你構造數據的時候,已經考慮了測試集出現的情況)。
對模型做限制
我們知道全連接網絡是可以擬合無數分布的一種網絡結構,正是因為模型太靈活了,所以在做梯度下降的時候,其實擬合的曲線只匹配了訓練集那部分,還不能很好覆蓋到測試集的情況。所以我們可以通過限制模型的可以擬合的分布情況,來快速提高模型泛化性能。
例如,假設我們知道這個數據集其實就是一個二元函數的數據集,那我們提供一個2次曲線,是不是就很容易擬合成功并且預測得很好?答案肯定是的。同理,我們在針對CV相關數據集,會一開始就考慮CNN(卷積神經網絡),也是因為這個數據的先驗分布我們清楚,所以用CNN這種針對圖像特性處理的模型,初始效果就能比較不錯。
當然也有其他方法,例如正則化、early stopping、dropout等,都可以一定程度緩解模型過擬合問題。
參考引用: [李宏毅-《機器學習》](https://speech.ee.ntu.edu.tw/~hylee/ml/2021-spring.php)
本文轉載自?????沐白AI筆記?????,作者:楊沐白
