一、過擬合
過擬合的定義:由于模型過于復雜,模型學習能力過強,而用于訓練的數(shù)據(jù)相對于復雜模型來說比較簡單,因此模型會去學習數(shù)據(jù)中隱含的噪聲,導致模型學習不到數(shù)據(jù)集的真正分布。
簡單解析:模型在訓練集上的準確率很高,但在測試集上的準確率卻很低。在模型參數(shù)的擬合過程中,由于訓練數(shù)據(jù)中包含抽樣誤差,訓練時,復雜的模型將誤差也考慮在內(nèi),即將抽樣誤差也進行了很好的擬合。具體表現(xiàn):模型在訓練集上效果良好,但在測試集上效果較差,模型泛化能力一般。

產(chǎn)生原因:相對于有限的數(shù)據(jù),使用了結(jié)構(gòu)過于復雜的網(wǎng)絡(luò)模型。本質(zhì):算法從訓練集的統(tǒng)計噪聲中不自覺地獲取了信息并表達在模型結(jié)構(gòu)的參數(shù)中。
過擬合可以用方差偏差權(quán)衡來解釋。當過擬合發(fā)生時,模型的偏差小而方差大,導致模型在測試集上的誤差變大。
因此,過擬合是深度學習中經(jīng)常碰到的一個重要問題,下面我們來看一下常見的過擬合解決方案。

二、常見過擬合解決方法
在深度學習中,過擬合是一個十分常見的問題,因此已經(jīng)有了許多防止或抑制過擬合的方法。最常見的方法是正則化,如L1、L2正則化。此外,根據(jù)深度學習算法的不同,解決的方法也不一樣。
在此簡要總結(jié)一下,深度學習中的一些常見過擬合解決方案。過擬合本質(zhì)是在訓練過程中選取的特征過多,于是從本質(zhì)上來講以下四種方法就是選取合適的特征數(shù)量。
數(shù)據(jù)增強
L1和L2正則化
Early stopping
Dropout
1. 如何防止過擬合(模型&數(shù)據(jù)角度)
(1)增加數(shù)據(jù)量
最直觀與最有效的方式:獲取更多的實驗數(shù)據(jù)。過擬合形成的主要原因就是訓練集的數(shù)據(jù)太少,導致無法學習到想要的模型,因此當發(fā)生過擬合時,首先應(yīng)該考慮的就是增加訓練集的數(shù)據(jù)量。理論上來講:只要數(shù)據(jù)足夠充足,就不會出現(xiàn)過擬合與欠擬合,但是顯而易見,數(shù)據(jù)集的采集和制作有著巨大的工作量。

增加的數(shù)據(jù)必須是符合要求的實驗數(shù)據(jù),即與已有數(shù)據(jù)是獨立同分布的。常見的數(shù)據(jù)擴增方式有以下四種:
采集更多數(shù)據(jù)
擴增原始數(shù)據(jù)
數(shù)據(jù)重采樣
生成虛擬數(shù)據(jù)

(2)簡化模型
如果你已經(jīng)獲取了充足的實驗數(shù)據(jù),但是你的模型仍然過擬合,那么可能是因為你的模型過于復雜。
那么,你可以嘗試降低網(wǎng)絡(luò)的復雜度。通過不斷降低模型的復雜度,最終達到一個平衡狀態(tài):模型足夠簡單以至于不會發(fā)生過擬合,又足夠豐富可以從數(shù)據(jù)中學習到規(guī)律。
選擇合適的網(wǎng)絡(luò)結(jié)構(gòu),通過減少網(wǎng)絡(luò)的深度、神經(jīng)元數(shù)量、全連接層數(shù)等,降低網(wǎng)絡(luò)的參數(shù)規(guī)模。簡化模型的另一個好處是能讓模型更輕便、訓練速度更快,計算速度也會更快。

2. 如何防止過擬合(訓練過程角度)
模型出現(xiàn)過擬合的第二個地方可能是在訓練階段,應(yīng)對的方法包括調(diào)整損失函數(shù)或模型訓練的方式。
(1)Early stopping
在神經(jīng)網(wǎng)絡(luò)的訓練過程中,如果Epoch過小,那么可能會導致欠擬合,而Epoch過大則會導致過擬合的發(fā)生。既然Epoch過大會導致過擬合,那么我們在Epoch超過最佳次數(shù)之前就結(jié)束,不就可以了!
具體步驟:訓練時,當每次Epoch結(jié)束時在驗證集上進行測試,如果隨著Epoch次數(shù)的增加發(fā)現(xiàn)誤差在上升,那么就提前結(jié)束訓練,將此時的權(quán)重作為網(wǎng)絡(luò)的最終參數(shù)。大部分情況下,模型會首先學習數(shù)據(jù)的正確分布,然后在某個時間點上開始對數(shù)據(jù)過擬合。通過識別模型是從哪些地方開始發(fā)生轉(zhuǎn)變的,就可以在過擬合出現(xiàn)之前停止模型的學習過程。和前面一樣,通過查看隨著時間推移的訓練誤差,就可以做到這一點。

如圖所示,當測試集誤差開始增加時,就應(yīng)該停止訓練了。
3. 如何防止過擬合(正則化角度)
正則化是指約束模型的學習,以減少過擬合的過程。
L1和L2正則化:正則化的一個最強大最知名的特性就是能向損失函數(shù)增加“懲罰項”。所謂懲罰是指對損失函數(shù)中的某些參數(shù)做一些限制。
L1懲罰項:將權(quán)重的絕對值最小化
L2懲罰項:將權(quán)重的平方值最小化
實踐證明,L1和L2正則化可以有效避免模型的過擬合,而且L1正則化可以得到稀疏解,L2正則化可以得到平滑解,這是為什么呢?敬請關(guān)注下期文章~
4. 如何防止過擬合(深度學習模型)
對于深度學習模型中的過擬合問題,還可以從以下兩個角度出發(fā):Dropout和Dropconnect。
深度學習依賴神經(jīng)網(wǎng)絡(luò)處理連續(xù)網(wǎng)絡(luò)層之間的信息,因而從這兩個角度入手比較有效。其核心思想是在訓練過程中隨機讓神經(jīng)元失活或讓網(wǎng)絡(luò)中的連接無效。實驗表明:這類方法可以起到和模型集成方法一樣的效果,可以幫助模型泛化,有效地減少模型過擬合問題。
Dropout是指在深度學習網(wǎng)絡(luò)的訓練過程中,對于神經(jīng)網(wǎng)絡(luò)單元,按照一定的概率將其暫時從網(wǎng)絡(luò)中丟棄。
5. 其他方法
模型剪枝、集成學習、BN、知識蒸餾、Label Smooth等。
綜上所述,解決模型過擬合的方法有很多,其中正則化和數(shù)據(jù)增強是最高效與最常用的技巧。同時,深度神經(jīng)網(wǎng)絡(luò)的訓練中涉及許多超參數(shù)的調(diào)整,如學習率、權(quán)重衰減系數(shù)、 Dropout 比例等,這些參數(shù)的選擇也會直接影響模型的訓練效果。
如何更加有效地解決模型的過擬合問題,最近也出現(xiàn)了一些新的思想和文章,有興趣的同學可以關(guān)注一下相關(guān)文獻~~
三、結(jié)語
過擬合,是我們在模型訓練過程中經(jīng)常會遇到的一個棘手問題,如果不知道怎么應(yīng)對,確實會讓人很頭疼。借助本文提到的這些方法,相信應(yīng)該能幫助你在訓練模型的過程中,有效地防止模型過擬合。
歡迎關(guān)注、交流,更多深度學習相關(guān)知識,精彩不斷~