人工智能算法問題——正則化解決神經網絡中的過度擬合

過度擬合是一個很大的問題,尤其是在深度神經網絡中。如果你正在懷疑你的神經網絡過度擬合了。有很多方法可以確定過度擬合了數據,也許有一個高方差問題,或者繪製了一個訓練圖和測試精度圖,然後發現過度擬合了。在這種情況下,我們應該怎麼辦呢?

第一件事是正則化

人工智能算法問題——正則化解決神經網絡中的過度擬合

為什麼要正規化?

解決高方差的另一種方法是獲取更多可靠的訓練數據。如果要獲得更多的訓練數據,則可以通過這種方式來思考,嘗試針對所有情況歸納權重。那在大多數時候都可以解決問題,那為什麼還要其他呢?但是這樣做的一個巨大缺點是,我們不能總是獲取更多的培訓數據,獲取更多的數據可能會很昂貴,有時甚至無法訪問。

所以我們有必要討論一些有助於減少過度擬合的方法。而添加正則化通常有助於防止過度擬合。通常進行正則化還可以幫助我們最大程度地減少網絡中的隨機錯誤。

瞭解L2正則化

在嘗試最小化一個J稱為cost函數的函數。

人工智能算法問題——正則化解決神經網絡中的過度擬合

而w是大小的矩陣x並且L是損失函數。如果只是快速更新,就沒什麼意思。因此,要為此添加正則化,我們將向此成本函數方程添加一個項,我們將看到更多這樣的內容

人工智能算法問題——正則化解決神經網絡中的過度擬合

因此,λ是可能需要調整的另一個超參數,稱為正則化參數。

根據理想慣例,||w||²₂僅表示L2的歐幾里德L2範數,w然後對其平方即可,讓我們在一個方程式中對其進行總結,以便對我們來說變得容易,我們將對L2範數項進行簡化。

只是用矢量素數到矢量素數的平方歐幾里德範數表示的w。因此,我們剛才所說的術語稱為L2正則化。我們將在一段時間內詳細討論如何獲得λ項,但至少現在對它的工作原理有了一個大概的瞭解。這種方法實際上有一個原因稱為“ L2歸一化”,之所以這樣稱呼是因為我們正在計算的L2範數w。

到現在為止,我們討論了參數的正則化w,可能會問自己一個問題,為什麼w?為什麼不加上b?這是一個邏輯問題。事實證明,實際上可以添加一個w術語或為其添加術語,w但是我們通常只是省略它。因為如果查看參數,你會注意到w通常這是一個非常高的維向量,尤其是具有高方差問題。理解它是因為w它具有很多單獨的參數,因此我們不能很好地擬合所有參數,而b僅僅是一個數字。因此,幾乎所有主要參數都位於中,w而不是b。因此,即使最後添加b方程式中的項,在實踐中不會有很大的不同。

L1正則化

我們剛剛討論了L2正則化,你可能還聽說過L1正則化。L1正則化是何時添加參數向量的L1範數而不是我們之前討論的術語w。讓我們以數學的方式來看這個術語。

人工智能算法問題——正則化解決神經網絡中的過度擬合

如果使用L1正則化,則w可能會變得稀疏,這意味著w向量中將有很多零。人們常說這可以幫助壓縮模型,因為參數集為零,並且需要更少的內存來存儲模型。我覺得在實踐中,使模型稀疏的L1正則化只會有所幫助。因此,我不建議大家在模型壓縮中使用它。而且,當在訓練網絡時,使用L2正則化的頻率要高得多。

擴展到神經網絡上面

我們剛剛看到了我們將如何對邏輯函數進行正則化,現在對正則化的含義及其工作方式有了清晰的認識。因此,現在最好看看這些想法如何擴展到神經網絡是上面。因此,神經網絡的召回或成本函數看起來像這樣

人工智能算法問題——正則化解決神經網絡中的過度擬合

因此,現在回想一下我們在前面討論時所添加的內容,我們添加了正則化參數λ,縮放參數以及最重要的L2範數,因此我們將執行類似的操作,而只是將其求和。因此,我們添加的術語如下所示:

人工智能算法問題——正則化解決神經網絡中的過度擬合

現在讓我們來簡化這個L2範數項,它定義為該矩陣的每個元素的的i總和的j平方之和:

人工智能算法問題——正則化解決神經網絡中的過度擬合

這裡的第二個是權重矩陣或w這裡的尺寸nˡ, nˡ⁻¹和這些單位在層的數量l和l-1分別。這也稱為矩陣的“ Frobenius範數”,Frobenius範數非常有用,並用於很多應用程序中,其中非常好的是推薦系統。按照慣例,用下標“ F”表示。可能只是說將它稱為L2範式較為容易,但是由於某些常規原因,我們將其稱為Frobenius範式,並且具有不同的表示形式

<code>

||

||

²²-L²範數

||

||

²_F-Frobenius範數/<code>

實施梯度下降

因此,年初的時候我們會做的是計算dw採用反向傳播,讓你的成本函數的偏導數J相對於w任何給定層l,然後你只需更新你wˡ,也包括α參數。現在我們已經將正則化項納入了目標,因此我們只需添加一個正則化項即可。而且,這些是我們為此制定的步驟和方程式

人工智能算法問題——正則化解決神經網絡中的過度擬合

因此,之前的第一步曾經只是從反向傳播中獲得的東西,現在我們在其中添加了一個正則化術語。其他兩個步驟與在任何其他神經網絡中所做的幾乎相同。dw[l]現在,已經在最後添加了額外的正則項,因此對於參數而言,此新功能仍然是對成本函數的導數的正確定義。因此,L 2正則化有時也稱為重量衰減。因此,現在,如果只是從第1步中提取方程式,並在第3步方程式中替換它

人工智能算法問題——正則化解決神經網絡中的過度擬合

因此,這將顯示w[l]要使矩陣變小的任何矩陣。實際上,這就像我們要提取矩陣w並將其乘以1 - α λ/m。因此,這就是L 2範數正則化也稱為權重衰減的原因。因為這就像通常的梯度下降,所以可以w通過減去從反向傳播中獲得的原始梯度的α倍來進行更新。但是現在也要用w乘以這個東西,它比1小一點。因此,L 2正則化的替代名稱是權重衰減。我不經常使用該術語,但是現在知道其名稱的直覺是如何產生的。

為什麼正則化可以減少過度擬合

在實施正則化時,我們添加了一個稱為Frobenius範數的術語,該術語懲罰權重矩陣過大。那麼,現在要考慮的問題是為什麼縮小Frobenius範數會減少過度擬合?

想法1

一個想法是,如果將正則化參數λ增大得很大,就會真正激勵它們將權重矩陣w設置為合理地接近零。因此,一種直覺是,對於許多隱藏的單位,權重設置得非常接近零,從而基本上消除了這些隱藏的單位的影響。如果是這種情況,則神經網絡將變得更小,更簡化。實際上,它幾乎就像一個邏輯迴歸單元,但堆疊的深度可能最大。這樣一來,可以從過度擬合情況中更接近高偏差情況。但希望應該有一個λ的中間值,從而得出最佳解。因此,總而言之,只是將某些隱藏層和本質上更簡單的網絡的影響歸零或減少。

從一堆隱藏單元中完全清零的直覺並不完全正確,在實踐中效果也不佳。事實證明,實際發生的情況是我們仍將使用所有隱藏的單位,但是每個隱藏單位的影響都小得多。但是最終會得到一個更簡單的網絡,並且好像擁有一個較小的網絡,因此不太容易過度擬合。

想法2

這是正則化的另一種直覺或想法,以及為什麼它可以減少過度擬合。為了理解這個想法,我們以tanh激活函數為例。因此,我們的g(z) = tanh(z)

人工智能算法問題——正則化解決神經網絡中的過度擬合

在這裡請注意,如果z僅接受很小範圍的參數|z|(接近於零),那麼將使用tanh函數的線性狀態。如果僅z允許向上或向下移動較大的值或|z|遠離0,則激活函數的線性度開始降低。因此,您可能會避免直覺,如果正則化參數λ大,則您的參數將相對較小,因為它們會因代價函數大而受到不利影響。

因此,如果的權重w 較小,則因為z = wx+b但如果w趨於非常小,則權重z也將相對較小。特別是,如果z最終採用相對較小的值,則將導致g(z)大致呈線性。因此,好像每一層都將像線性迴歸一樣大致呈線性。這將使其像線性網絡一樣。因此,即使是具有線性激活函數的非常深的網絡,最終也只能計算線性函數。這將無法適應一些非常複雜的決定。

如果擁有神經網絡和一些非常複雜的決策,則可能會過度擬合,這肯定會有助於減少過度擬合。

當實現梯度下降時,調試梯度下降的步驟之一是將成本函數繪製J為梯度下降的高程數的函數,並且希望看到成本函數J在每次梯度下降的高程後都單調減少。而且,如果要實施正則化,請記住J現在有了一個新定義。如果繪製的舊定義J,則可能不會單調減少。因此,要調試梯度下降,請確保要繪製的新定義J也包括第二個術語。否則,可能不會J在每個高程上都看到單調減少。

正則化在深度學習模型中非常有幫助,並且幫助解決了過度擬合的問題。


分享到:


相關文章: