深層神經網絡的模型概括,過度擬合和正則化方法的挑戰
> Source
在完成了與神經網絡有關的多個AI項目之后,我意識到模型的概括能力對于AI項目的成功至關重要。 我想寫這篇文章來幫助讀者了解如何使用正則化方法來優化模型的性能,并更好地理解基于神經網絡提供可靠且可擴展的AI解決方案的復雜性。
泛化是用于描述模型對新數據做出反應的能力的術語。
泛化是模型經過訓練后可以消化新數據并做出準確預測的能力。 這可能是您的AI項目中最重要的元素。 模型的概括能力對于AI項目的成功至關重要。 確實,我們擔心模型在訓練數據上訓練得太好,但是無法推廣。
因此,我們常常沒有達到生產階段……在提供新數據時,它會做出不準確的預測,即使模型能夠對訓練數據做出準確的預測,也會使模型無用。 這稱為過擬合。
相反的情況也可能發生。 欠擬合是指未對數據進行足夠的模型訓練。 在欠擬合的情況下,即使使用訓練數據,模型也一樣無用,也無法做出準確的預測。
在所有AI項目中,我們都基于現有數據構建模型,并希望它們能完美地適應(概括)新數據。 在監督學習中,我們擁有過去的數據以及所有我們希望預測的預測值和真實值。 盡管定義了業務問題,但是收集相關數據,清理和準備數據以及建立模型都具有挑戰性,并且非常耗時……另一個挑戰仍然存在–如何知道模型能否很好地預測未來?
訓練可以很好地泛化到新數據的深度神經網絡是一個具有挑戰性的問題。
當涉及到神經網絡時,正則化是一種對學習算法稍加修改的技術,以使模型具有更好的泛化能力。 反過來,這也改善了模型在看不見的數據上的性能。
模型復雜度
從業務角度來看,深度神經網絡的主要優勢在于,隨著向越來越大的數據集饋入數據,神經網絡的性能不斷提高。 當公司嘗試創建數據網絡效果時,這非常有趣。
但是,具有幾乎無限數量的示例的模型最終將在網絡能夠學習的容量方面達到某些限制。 正確的正則化是獲得更好的泛化性能的關鍵原因,因為深度神經網絡經常被過度參數化并可能遭受過度擬合的問題。
我們可以通過以下方法降低神經網絡的復雜度,以減少過度擬合:
減少模型的容量可將模型過度擬合訓練數據集的可能性降低到不再適合的程度。
通過保持較小的網絡權重來減少過度擬合的技術稱為正則化方法。
正則化:添加額外信息以將不適的問題轉化為更穩定的良好問題的一類方法。
下面,我列出了我們經常使用的幾種正則化方法(確實存在其他方法,例如權重約束或活動正則化)。 但是,減少過度擬合的最簡單方法是從本質上限制模型的容量。
全連接(FC)層最容易過擬合,因為它們包含最多的參數。 輟學應該應用于這些層(影響它們與下一層的連接)。 除標準形式的輟學外,還存在幾種輟學的變體,旨在進一步提高泛化性能。 例如,自適應輟學,其中輟學率由另一個神經網絡動態確定…
但是,我注意到,如果您使用CNN,則現在不經常使用輟學。 相反,我看到越來越多的數據科學家使用批處理規范化。 當您擁有大量數據集時,批處理規范化比輟學更為有效。
噪聲正規化的一種常見類型是在訓練過程中注入噪聲:將噪聲添加或乘以神經網絡的隱藏單元。 通過在訓練深度神經網絡時允許一些誤差,不僅可以提高訓練性能,而且可以提高模型的準確性。
根據Jason Brownlee的說法,訓練期間使用的最常見的噪聲類型是在輸入變量中添加高斯噪聲。 添加的噪聲量(例如,擴展或標準偏差)是可配置的超參數。 噪聲太小沒有作用,而噪聲太大使映射功能難以學習。 確保在評估模型或使用模型對新數據進行預測時,不添加任何噪聲源。
早期停止早期停止是一種交叉驗證策略,在該策略中,我們將一部分訓練集保留為驗證集。 實際上,當我們看到驗證集的性能越來越差時,我們就停止了對模型的訓練。
換句話說,這種方法嘗試在估計噪聲的模型之前,盡早停止估計器的訓練階段,即該階段已學會從數據中提取所有有意義的關系。
這是通過監視驗證損失(或另一個驗證指標)并在此特定指標停止改進時結束訓練階段來完成的。 通過這樣做,我們給估算器足夠的時間來學習有用的信息,但沒有足夠的時間來學習噪聲。
> Source
我使用這種方法的問題是,不能保證在任何給定的時間點,模型都不會再次開始改進。 一個比提早停止更實際的方法是存儲在驗證集上獲得最佳性能的模型權重…
轉移學習此方法是通過將網絡的權重初始化為在大型通用數據集中預先訓練的具有相同體系結構的另一個網絡的權重來完成的。 我們經常將這種方法用于計算機視覺項目。 當我們的業務問題沒有太多數據時,它對我們有很大幫助,但是我們可以找到另一個類似的問題。 在這種情況下,我們可以使用遷移學習來減少過度擬合。
批處理規范化(BN)是一種規范深度神經網絡中間層中的激活的技術。
批處理標準化除了具有正則化效果外,還可以通過其他方式幫助您的模型(允許使用更高的學習率等)。 我建議您驗證每層的權重和偏差分布看起來近似于標準正態。
由于BN具有正則化效果,因此這也意味著您可以經常刪除輟學(這很有幫助,因為輟學通常會減慢訓練速度)。
在訓練過程中,我們會更新批次歸一化參數以及神經網絡的權重和偏差。 批處理歸一化的另一個重要觀察結果是,由于使用迷你批顯示隨機性,因此批處理歸一化可作為正則化。
批處理大小=一次向前/向后傳遞中的訓練示例數。 批次大小越大,您將需要更多的存儲空間。
數據擴充。 處理過度擬合的另一種方法是提高數據質量。 您可能會想到離群值/噪聲消除,但是實際上它們的效率非常有限。 另一個有趣的方式(尤其是在與圖像有關的任務中)是數據增強。 目的是隨機轉換訓練樣本,以使它們在模型中看起來不同時,它們傳達相同的語義信息。 就個人而言,當我發現模型在訓練集上的損失接近0時,我便開始考慮使用數據增強。
意見建議
我建議在考慮正則化方法之前先執行一些基本步驟。 確實,在大多數時候,我們無法確定對于每個學習問題,都存在一個可學習的神經網絡模型,該模型可以產生所需的低泛化誤差。
正確的期望
首先要找到一個很好的參考,它表示您在數據集或最相似的可找到參考的體系結構上,都可以達到所需的泛化錯誤。 在訓練自己的數據集之前,嘗試在這些參考數據集上重現這樣的結果是很有趣的,以測試所有基礎結構是否正確到位。
訓練程序驗證
這也是檢查您的訓練程序是否正確的關鍵。 這些檢查包括:
超參數/架構搜索
最后,關鍵是要了解,正則化本身并不一定意味著您的泛化誤差會變小:模型必須具有足夠大的容量才能實現良好的泛化屬性。 這通常意味著您需要足夠深的網絡,然后才能看到正則化的好處。
如果沒有其他幫助,您將必須測試多個不同的超參數設置(貝葉斯優化可能會在此處提供幫助)或多個不同的體系結構更改。
有關此主題的更多信息,我建議以下鏈接:
-https://arxiv.org/pdf/1710.05179.pdf- https://machinelearningmastery.com/train-neural-networks-with-noise-to-reduce-overfitting/- https://towardsdatascience.com/batch- normalization-in-neural-networks-1ac91516821c- https://papers.nips.cc/paper/5032-adaptive-dropout-for-training-deep-neural-networks.pdf- http://jmlr.org/papers/ volume15 / srivastava14a.old / srivastava14a.pdf- https://wp.wwu.edu/machinelearning/2017/01/22/generalization-and-overfitting/
(本文翻譯自Alexandre Gonfalonieri的文章《Understand Neural Networks & Model Generalization》,參考:https://towardsdatascience.com/understand-neural-networks-model-generalization-7baddf1c48ca)