機器學習中用來防止過擬合的方法有哪些?
網(wǎng)友解答: 謝邀,機器學習用來防止過擬合的方法比較多,我盡量用通俗的話解釋各種減少過擬合的方法。當然如果有更好的可以在評論區(qū)提出來,互相探討學習。獲得更多額外的訓練數(shù)據(jù)這是解決過擬合的最
謝邀,機器學習用來防止過擬合的方法比較多,我盡量用通俗的話解釋各種減少過擬合的方法。當然如果有更好的可以在評論區(qū)提出來,互相探討學習。
獲得更多額外的訓練數(shù)據(jù)這是解決過擬合的最有效方法,過擬合本質(zhì)上就是模型對樣本空間過度擬合后才出現(xiàn)的想象,那我們就給模型更多“意料之外”(樣本空間外)的數(shù)據(jù),這樣模型的最優(yōu)值就更接近整體樣本空間的最優(yōu)值,只要局部值不斷逼近整體最優(yōu)值,過擬合的問題就自然而然消失了。
使用恰當?shù)哪P?p>一般而言,過擬合主要是因為數(shù)據(jù)太少,或者模型太復雜造成的,我們可以通過獲得更多的數(shù)據(jù)(上面有提及)或者找合適的模型結(jié)構(gòu)來防止過擬合問題,讓模型能夠擬合真正的規(guī)則,同時又不至于擬合太多的隨機噪聲。減少神經(jīng)網(wǎng)絡層數(shù)、神經(jīng)元個數(shù)都可以限制網(wǎng)絡的擬合能力,這個跟樹模型的原理一樣;
適當減少模型的訓練時間,因為對于每個神經(jīng)元而言,其激活函數(shù)在不同區(qū)間的性能是不同的,當網(wǎng)絡權值較小時,神經(jīng)元的激活函數(shù)工作在線性區(qū)域,那么該神經(jīng)元的擬合能力較弱,一般我們初始化網(wǎng)絡時權值較小,訓練時間越長,部分網(wǎng)絡權值越接近非線性區(qū)甚至梯度消失區(qū),此時就會產(chǎn)生過擬合;
正則化,跟上面一樣,都是限制權值,這種方法是將權值大小加入Cost中,因為訓練要降低Cost,所以這種方法即降低Cost也降低權值,是最經(jīng)常使用的方法之一;
在輸入中加噪聲,可能有人會有點不解,不是要降低噪聲么?這么說,因為噪聲會隨著網(wǎng)絡擴散,按照權值的平方放大,像Hinton的PPT中用高斯噪聲,在輸出中生成干擾項,訓練時會對干擾項進行懲罰,達到減小權值的平方的目的(也是換種思路變向降低權值)
集成學習,Bagging、Boosting相信很多人都很熟悉,Bagging就是將很多弱小的模型集合在一起,提高模型的學習能力,如隨機森林就是很多棵決策樹形成的模型。而Boosting是將弱模型的誤差傳遞下去,通過下一層模型來稀釋誤差,從而降低總誤差。
Dropout,這是一種很有效的方法,在訓練時隨機忽略隱藏層的某些節(jié)點,這樣每次訓練時網(wǎng)絡會有不同,最后得到的誤差會比用全部節(jié)點訓練要好得多,這種做法有點類似bagging。
如果是樹模型的話,那么減少剪枝是一種很有效的方法,通常利用限制最大深度,最大葉節(jié)點數(shù)來達到該目的(目的就是不想讓模型對每個隨機變量擬合,畢竟這個變量也可能是白噪聲);
如果你對學習人工智能和科技新聞感興趣,可以訂閱我的酷米號,我會在這里發(fā)布所有與算法、機器學習以及深度學習有關的有趣文章。偶爾也回答有趣的問題,有問題可隨時在評論區(qū)回復和討論,看到即回。
(碼字不易,若文章對你幫助可點個贊~)
網(wǎng)友解答:以個人經(jīng)驗來說,增大learning rate或者batch size是最有效的方法。regulation是必須的,所以不存在使用它來防止過擬合。介紹一下我采用的自動調(diào)參方法。training后根據(jù)返回的訓練準確率和測試準確率判斷擬合度以及l(fā)oss情況,如不滿意則調(diào)整learning rate和batch size重新training。learning rate 和batch size的search方法可以有多種,grid search, random search,我采用的是一種混合的方法,效果不錯。手動調(diào)參費時費力而且效果也不好。