深度學習揭秘之防止過擬合(overfitting)

2021-09-20 00:22:07 字數 3630 閱讀 1801

神經網路通過大量的引數模擬各種繁多的任務,並能擬合各種複雜的資料集。這種獨特的能力使其能夠在許多難以在「傳統」機器學習時代取得進展的領域——例如影象識別、物體檢測或自然語言處理等領域表現優異。然而,有時候,最大的優點也是潛在的弱點。模型在學習過程時,如果缺乏控制可能會導致過擬合(overfitting)現象的發生——神經網路模型在訓練集上表現很好,但對新資料**時效果不好。了解過擬合產生的原因以及防止這種現象發生的方法對於成功設計神經網路而言顯得至關重要。在實踐中,檢測模型過擬合是困難的。很多時候,將訓練好的模型上線後才意識到模型出現問題。事實上,只有通過新資料的建議,才能確保一切正常。但在訓練期間,應盡量表示真實情況。因此,比較好的作法是將資料集劃分為三個部分——訓練集、開發集(也稱為交叉驗證集)和測試集。構建的模型僅通過訓練集來學習,驗證集用於跟蹤訓練進度並根據驗證集上的結果優化模型。同時,在訓練過程結束後使用測試集來評估模型的效能。使用全新的資料可以讓我們對演算法的**情況有乙個客觀的看法。

圖1.劃分資料集的推薦方法

確保驗證集和測試集來自同一分布以及它們能夠準確地反映希望將來收到的資料非常重要。只有這樣,才能確保在學習過程中做出的決策更接近好的解決方案。那麼如何分割手上的資料集呢?最常推薦的拆分方法之一是按照60/20/20的比例拆分,但在大資料時代,當資料集是數百萬條目時,這種固定比例的劃分已經不再合適。簡而言之,一切都取決於使用的資料集的大小,如果有數以百萬計的條目可供使用,或許最好的劃分方法是按照當準備好資料集後,需要使用工具來評估模型的效能。然而,在得出任何結論之前,我們應該熟悉兩個新的概念——偏差(bias)和方差(variance)。為了讓我們更好地理解這個複雜的問題,這裡舉乙個簡單的例子。假設資料集由位於二維空間中的兩類點組成,如圖2所示。

圖2.資料集的視覺化

由於這是乙個簡單的演示用例,這次就沒有測試集,僅使用訓練集和驗證集。接下來,我們準備三個模型:第乙個是簡單的線性回歸,另外兩個是由幾個密集連線層構建的神經網路。在圖3中,我們可以看到使用這些模型定義的分類邊界。右上角的第乙個模型非常簡單,因此具有較高的偏差,即它無法找到要素和結果之間的所有重要鏈結,這是由於資料集中有很多噪音,因此簡單的線性回歸無法有效地處理它。從圖中可以看到,在神經網路模型上表現得更好,但左下角的模型太緊密地擬合資料,這使得它在驗證集上表現得更糟,這意味著它具有很大的方差——它適合雜訊而不是預期的輸出。在最後的模型中,通過使用正則化來減輕這種不期望的影響。

圖3.建立的分類邊界:右上角——線性回歸; 左下角——神經網路; 右下角——正則化的神經網路

上述舉的例子很簡單,只有兩個特徵。當我們在多維空間中操作時,需要使用包含數十個特徵的資料集,這種情況該怎麼辦?這個時候需要比較使用訓練集和交叉驗證集計算得到的誤差值。當然,最佳情況是這兩組的錯誤率都很低。主要問題是如何定義低錯誤率——在某些情況下它可以是1%,而在其他情況下它可以高達10%或更大。在訓練神經網路時,設立乙個比較模型效能的基準是有所幫助的。通常,這取決於執行此任務的人員能力水平。然後嘗試確保設計的演算法在訓練期間有乙個接近參考水平的誤差。如果已經實現了這個目標,但是在驗證集上驗證錯誤率時,錯誤率會顯著增加,這可能意味著模型存在過擬合(高方差)。另一方面,如果模型在訓練集和交叉驗證上表現都不佳,那麼它可能太弱並且具有高偏差。當然,這個問題會更複雜,而且涉及的面也更廣,在這裡不做討論,感興趣的讀者可以閱讀ng的新書。當我們的神經網路具有較高的方差時,這裡有很多方法可以有所幫助。比如,非常普遍的方法——獲取更多資料,這種方法一般每次都執行良好。還有一些操作,例如正則化,但這種方法需要一些經驗和技巧,因為對神經網路施加太多限制可能會損害其有效學習的能力。現在讓我們試著看一下減少過擬合的一些最流行的方法,並討論它們起作用的原因。

當需要減少過擬合時,應該嘗試的第一種方法是正則化。這種方法涉及到在損失函式中新增乙個額外的式子,這會使得模型過於複雜。簡單來說,就是在權重矩陣中使用過高的值,這樣就會嘗試限制其靈活性,同時也鼓勵它根據多種特徵構建解決方案。這種方法的兩個流行版本是l1-最小絕對偏差(lad)和l2-最小二乘誤差(ls),相應的公式如下。在大多數情況下,l2正則化是首選,因為它將不太重要的特徵的權重值減小到零。但是在處理具有大量異常值的資料集時不是首選。

現在看一下在偏差和方差的例子中使用的兩個神經網路。正如之前提到的,使用正則化來消除過擬合。在三維空間中視覺化權重矩陣並比較在有正則化和沒有正則化的模型之間獲得的結果如下圖所示。此外,還使用正則化對許多模型進行了模擬,改變λ值以驗證其對權重矩陣中包含的值的影響。矩陣行和列索引對應於水平軸值,權重為垂直座標值。

圖4.視覺化沒有和具有正則化的模型權重矩陣

在前面提到的l1和l2兩個版本中的正則化公式中,引入了超引數λ (也稱為正則化率)。在選擇其值時,試圖在模型的簡單性和擬合訓練資料之間達到最佳點。增加λ值也會增加正則化效應。在圖4中可以注意到,沒有正則化的模型獲得的平面,以及具有非常低λ的模型其係數值非常「紊亂」,有許多具有重要價值的峰值。在應用具有較高超引數值的l2正則化之後,該平面圖是平坦的。最後,可以看到將lambda值設定為0.1或1會導致模型中權重值急劇下降。

另一種非常流行的神經網路正則化方法是dropout。這個想法實際上非常簡單——神經網路的每個單元(屬於輸出層的那些單元)都被賦予在計算中被暫時忽略的概率p。超引數p稱為丟失率,通常將其預設值設定為0.5。然後,在每次迭代中,根據指定的概率隨機選擇丟棄的神經元。因此,每次訓練會使用較小的神經網路。下圖顯示了使用dropout操作的神經網路的示例。從圖中可以看到,在每次迭代過程中是隨機停用來自第二和第四層神經元。

圖5:dropout視覺化

這種方法的有效性是非常令人驚訝。畢竟,在現實世界中,如果經理每天隨機選擇員工並將其送回家,工廠的生產率是不會提高的。讓我們從單個神經元的角度來看這個問題,在每次迭代中,任何輸入值都可能會被隨機消除,神經元會嘗試平衡風險而不會支援任何特徵。結果,權重矩陣值的分布變得更均勻。下圖顯示了在後續的學習過程迭代期間在測試和交叉驗證集上得到的準確度值的變化情況。從中可以看到,最終得到的模型並不是最好的模型。最終得到的結果比150個epoch後的情況要糟糕得多。為什麼不在模型開始過擬合之前就中斷學習過程?這一觀察啟發了一種流行的過擬合減少方法,即提前停止(early stopping)。

圖6.神經網路學習過程中後續時期的準確度值的變化

在實踐中,每迭代幾次就對模型進行檢查它在驗證集上的工作情況,並儲存每個比以前所有迭代時都要好的模型。此外,還設定最大迭代次數這個限制,超過此值時停止學習。儘管提前停止可以顯著改善模型的效能,但在實踐中,其應用極大地使得模型的優化過程變得複雜,很難與其他常規技術結合使用。

深度學習 有效防止過擬合

為了得到一致假設而使假設變得過度複雜稱為過擬合 overfitting 過擬合表現在訓練好的模型在訓練集上效果很好,但是在測試集上效果差。也就是說模型的泛化能力弱。在物體分類 object recognition 問題中,資料擴增已經成為一項特殊的有效的技術。物體在影象中的位置 姿態 尺度,整體敏感...

深度學習中過擬合與防止過擬合的方法

1.什麼是過擬合?過擬合 overfitting 是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是最終模型在訓練集上效果好 在測試集上效果差。模型泛化能力弱。2.過擬合產生的原因?1 在對模型進行訓練時,有可...

深度學習中過擬合與防止過擬合的方法

過擬合 overfitting 是指在模型引數擬合過程中的問題,由於訓練資料報含抽樣誤差,訓練時,複雜的模型將抽樣誤差也考慮在內,將抽樣誤差也進行了很好的擬合。具體表現就是最終模型在訓練集上效果好,在測試集上效果差,模型泛化能力弱。1 在對模型進行訓練時,有可能遇到訓練資料不夠,即訓練資料無法對整個...