正如巴菲特所言:「近似的正確好過精確的錯(cuò)誤。」
在機(jī)器學(xué)習(xí)中,過擬合(overfitting)會(huì)使模型的預(yù)測性能變差,通常發(fā)生在模型過于復(fù)雜的情況下,如參數(shù)過多等。本文對過擬合及其解決方法進(jìn)行了歸納闡述。
在機(jī)器學(xué)習(xí)中,如果模型過于專注于特定的訓(xùn)練數(shù)據(jù)而錯(cuò)過了要點(diǎn),那么該模型就被認(rèn)為是過擬合。該模型提供的答案和正確答案相距甚遠(yuǎn),即準(zhǔn)確率降低。這類模型將無關(guān)數(shù)據(jù)中的噪聲視為信號(hào),對準(zhǔn)確率造成負(fù)面影響。即使模型經(jīng)過很好地訓(xùn)練使損失很小,也無濟(jì)于事,它在新數(shù)據(jù)上的性能仍然很差。欠擬合是指模型未捕獲數(shù)據(jù)的邏輯。因此,欠擬合模型具備較低的準(zhǔn)確率和較高的損失。
構(gòu)建模型時(shí),數(shù)據(jù)會(huì)被分為 3 類:訓(xùn)練集、驗(yàn)證集和測試集。訓(xùn)練數(shù)據(jù)用來訓(xùn)練模型;驗(yàn)證集用于在每一步測試構(gòu)建的模型;測試集用于最后評(píng)估模型。通常數(shù)據(jù)以 80:10:10 或 70:20:10 的比率分配。在構(gòu)建模型的過程中,在每個(gè) epoch 中使用驗(yàn)證數(shù)據(jù)測試當(dāng)前已構(gòu)建的模型,得到模型的損失和準(zhǔn)確率,以及每個(gè) epoch 的驗(yàn)證損失和驗(yàn)證準(zhǔn)確率。模型構(gòu)建完成后,使用測試數(shù)據(jù)對模型進(jìn)行測試并得到準(zhǔn)確率。如果準(zhǔn)確率和驗(yàn)證準(zhǔn)確率存在較大的差異,則說明該模型是過擬合的。如果驗(yàn)證集和測試集的損失都很高,那么就說明該模型是欠擬合的。交叉驗(yàn)證是防止過擬合的好方法。在交叉驗(yàn)證中,我們生成多個(gè)訓(xùn)練測試劃分(splits)并調(diào)整模型。K-折驗(yàn)證是一種標(biāo)準(zhǔn)的交叉驗(yàn)證方法,即將數(shù)據(jù)分成 k 個(gè)子集,用其中一個(gè)子集進(jìn)行驗(yàn)證,其他子集用于訓(xùn)練算法。交叉驗(yàn)證允許調(diào)整超參數(shù),性能是所有值的平均值。該方法計(jì)算成本較高,但不會(huì)浪費(fèi)太多數(shù)據(jù)。交叉驗(yàn)證過程參見下圖:
用更多數(shù)據(jù)進(jìn)行訓(xùn)練用更多相關(guān)數(shù)據(jù)訓(xùn)練模型有助于更好地識(shí)別信號(hào),避免將噪聲作為信號(hào)。數(shù)據(jù)增強(qiáng)是增加訓(xùn)練數(shù)據(jù)的一種方式,可以通過翻轉(zhuǎn)(flipping)、平移(translation)、旋轉(zhuǎn)(rotation)、縮放(scaling)、更改亮度(changing brightness)等方法來實(shí)現(xiàn)。移除特征能夠降低模型的復(fù)雜性,并且在一定程度上避免噪聲,使模型更高效。為了降低復(fù)雜度,我們可以移除層或減少神經(jīng)元數(shù)量,使網(wǎng)絡(luò)變小。對模型進(jìn)行迭代訓(xùn)練時(shí),我們可以度量每次迭代的性能。當(dāng)驗(yàn)證損失開始增加時(shí),我們應(yīng)該停止訓(xùn)練模型,這樣就能阻止過擬合。下圖展示了停止訓(xùn)練模型的時(shí)機(jī):
正則化可用于降低模型的復(fù)雜性。這是通過懲罰損失函數(shù)完成的,可通過 L1 和 L2 兩種方式完成,數(shù)學(xué)方程式如下:
L1 懲罰的目的是優(yōu)化權(quán)重絕對值的總和。它生成一個(gè)簡單且可解釋的模型,且對于異常值是魯棒的。
L2 懲罰權(quán)重值的平方和。該模型能夠?qū)W習(xí)復(fù)雜的數(shù)據(jù)模式,但對于異常值不具備魯棒性。這兩種正則化方法都有助于解決過擬合問題,讀者可以根據(jù)需要選擇使用。Dropout 是一種正則化方法,用于隨機(jī)禁用神經(jīng)網(wǎng)絡(luò)單元。它可以在任何隱藏層或輸入層上實(shí)現(xiàn),但不能在輸出層上實(shí)現(xiàn)。該方法可以免除對其他神經(jīng)元的依賴,進(jìn)而使網(wǎng)絡(luò)學(xué)習(xí)獨(dú)立的相關(guān)性。該方法能夠降低網(wǎng)絡(luò)的密度,如下圖所示:
過擬合是一個(gè)需要解決的問題,因?yàn)樗鼤?huì)讓我們無法有效地使用現(xiàn)有數(shù)據(jù)。有時(shí)我們也可以在構(gòu)建模型之前,預(yù)估到會(huì)出現(xiàn)過擬合的情況。通過查看數(shù)據(jù)、收集數(shù)據(jù)的方式、采樣方式,錯(cuò)誤的假設(shè),錯(cuò)誤表征能夠發(fā)現(xiàn)過擬合的預(yù)兆。為避免這種情況,請?jiān)诮V跋葯z查數(shù)據(jù)。但有時(shí)在預(yù)處理過程中無法檢測到過擬合,而是在構(gòu)建模型后才能檢測出來。我們可以使用上述方法解決過擬合問題。原文鏈接:https://mahithas.medium.com/overfitting-identify-and-resolve-df3e3fdd2860