在深度神經網絡中防止過擬合

摘自O社的fundamentals of Deep Learning

第一種方法:正則化

1、L2正則化

正則化通過添加懲罰大權重的附加項來修改我們最小化的目標函數。換言之,我們將目標函數改爲Error+λf (θ) ,f(θ)隨 θ的變大而變大, λ 是另一個名叫正則化強度的超參數。 我們選擇λ 的值的大小決定了我們想解決過擬合的程度。 λ =0說明我們沒有采取任何方法防止過擬合。如果λ太大,那麼我們的模型將優先考慮將θ保持儘可能小,而不是試圖找到在我們的訓練集上表現良好的參數值。結果是,選擇λ是一個很重要的步驟,需要一些一些檢驗和試錯。

在機器學習中最常見的正則化方法是L2正則化。可以通過用神經網絡中所有權重的平方大小擴大誤差函數來實現。換言之,對於神經網絡中的每一個權重w,我們加入 (1/2λww)爲附加方程。L2正則化直觀地解釋了對峯值權重向量的嚴重懲罰,並且傾向於使用彌散權重向量。鼓勵網絡稍微使用所有輸入而不是僅大量使用一些輸入。**特別要注意的是,在梯度下降更新期間,使用L2正則化最終意味着每個權重都線性衰減爲零。**由於這個現象,L2正則化也通常被叫作權重衰變。
我們可以使用ConvNetJS來可視化L2正則化的影響。我們使用一個有兩個輸入一個尺寸爲2的softmax層輸出,和一個有20個神經元的隱藏層。我們使用mini-batch gradient descent(batch size 10) ,正則化強度分別爲0.01,0.1和1。結果如下圖所示:
在這裏插入圖片描述
(可以看到對過擬合有很好的抑制作用)

2、L1正則化

另一個正則化的常用類型爲L1正則化。在這裏我們對神經網絡中的每一個權重w增加了 λ|w|項。L1正則化具有吸引人的特性,即它導致權重向量在優化過程中變得稀疏(即非常接近於零)。換句話說,具有L1正則化的神經元最終僅使用其最重要輸入的一小部分,並且變得對輸入中的噪聲具有較強的抵抗力。相比之下,來自L2正則化的權重向量通常是分散的,少量的。當您想確切瞭解哪些功能有助於決策時,L1正則化非常有用。 如果不需要這種級別的功能分析,則我們更喜歡使用L2正則化,因爲它的效果更好。
最大範數約束具有試圖限制θ太大的相似目標,但它們做的更加直接。最大範數對每個神經元的傳入權重向量的大小施加絕對上限的約束,並使用投影梯度下降來限制約束的實施。換句話說,每當梯度下降步驟移動傳入的權重向量使得w的平方大於c時,我們就將向量投影回半徑爲c的球(以原點爲中心)。c的典型值爲3和4.一個不錯的特性是參數向量不會失控地增長(即使學習率太高),因爲權重的更新總是有界的。
投影約束下降:projected gradient desent

3、Dropout

Dropout是一種防止過擬合的十分不同的方法,目前在深度神經網絡算法中已經成爲了一種非常流行的方法。當訓練的時候,通過僅以某個概率p(超參數)使神經元保持活動狀態,否則將其設置爲零來實現Dropout,即使沒有某些信息,這也迫使網絡保持準確。 它可以防止網絡變得過於依賴神經元中的任何一個(或任何小的組合)。 從數學上來說,它通過提供一種有效地將許多不同的神經網絡體系結構以指數方式近似組合的方式來防止過度擬合。 Dropout的過程如圖2-16所示。
在這裏插入圖片描述
Dropout理解起來非常直觀,但是要考慮一些重要的複雜問題。 首先,我們希望神經元在測試時間內的輸出與他們在訓練時的預期輸出相等。 我們可以通過在測試時縮放輸出來解決此問題。 例如,如果p = 0.5,則神經元必須在測試時將其輸出減半,以便獲得與訓練期間相同的(預期)輸出。 這很容易看到,因爲神經元的輸出以概率1-p設置爲0。 這意味着,如果神經元在退出之前的輸出是x,那麼在退出之後,預期的輸出將是E output = px + 1-p·0 = px。 但是,這種幼稚的Dropout實現是不可取的,因爲它需要在測試時縮放神經元輸出。測試時間的性能對於模型評估至關重要,因此,最好使用倒置落差法,這種方法在訓練時而不是在測試時進行縮放。 在反向輟學中,任何尚未被激活的神經元都將其輸出除以p,然後將該值傳播到下一層。 通過此修復,E輸出= p*x/p +(1-− p)0= x,我們可以避免在測試時任意縮放神經元輸出。
講真這個講Dropout的沒怎麼看懂。不過大意理解了就行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章