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