吳恩達深度學習筆記(34)-你不知道的其他正則化方法

其他正則化方法(Other regularization methods)

除了L2正則化和隨機失活(dropout)正則化,還有幾種方法可以減少神經網絡中的過擬合:

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

一.數據擴增

假設你正在擬合貓咪圖片分類器,如果你想通過擴增訓練數據來解決過擬合,但擴增數據代價高,而且有時候我們無法擴增數據,但我們可以通過添加這類圖片來增加訓練集。

例如,水平翻轉圖片,並把它添加到訓練集。所以現在訓練集中有原圖,還有翻轉後的這張圖片,所以通過水平翻轉圖片,訓練集則可以增大一倍,因為訓練集有冗餘,這雖然不如我們額外收集一組新圖片那麼好,但這樣做節省了獲取更多貓咪圖片的花費。

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

除了水平翻轉圖片,你也可以隨意裁剪圖片,這張圖是把原圖旋轉並隨意放大後裁剪的,仍能辨別出圖片中的貓咪。

通過隨意翻轉和裁剪圖片,我們可以增大數據集,額外生成假訓練數據。和全新的,獨立的貓咪圖片數據相比,這些額外的假的數據無法包含像全新數據那麼多的信息,但我們這麼做基本沒有花費,代價幾乎為零,除了一些對抗性代價。

以這種方式擴增算法數據,進而正則化數據集,減少過擬合比較廉價

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

像這樣人工合成數據的話,我們要通過算法驗證,圖片中的貓經過水平翻轉之後依然是貓。大家注意,我並沒有垂直翻轉,因為我們不想上下顛倒圖片,也可以隨機選取放大後的部分圖片,貓可能還在上面。

對於光學字符識別,我們還可以通過添加數字,隨意旋轉或扭曲數字來擴增數據,把這些數字添加到訓練集,它們仍然是數字。為了方便說明,我對字符做了強變形處理,所以數字4看起來是波形的,其實不用對數字4做這麼誇張的扭曲,只要輕微的變形就好,我做成這樣是為了讓大家看的更清楚。實際操作的時候,我們通常對字符做更輕微的變形處理。因為這幾個4看起來有點扭曲。所以,數據擴增可作為正則化方法使用,實際功能上也與正則化相似

二.early stopping

還有另外一種常用的方法叫作early stopping,運行梯度下降時,我們可以繪製訓練誤差,或只繪製代價函數J的優化過程,在訓練集上用0-1記錄分類誤差次數。呈單調下降趨勢,如圖。

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

因為在訓練過程中,我們希望訓練誤差,代價函數J都在下降,通過early stopping,我們不但可以繪製上面這些內容,還可以繪製驗證集誤差,它可以是驗證集上的分類誤差,或驗證集上的代價函數,邏輯損失和對數損失等,你會發現,驗證集誤差通常會先呈下降趨勢,然後在某個節點處開始上升,early stopping的作用是,你會說,神經網絡已經在這個迭代過程中表現得很好了,我們在此停止訓練吧,得到驗證集誤差,它是怎麼發揮作用的?

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

當你還未在神經網絡上運行太多迭代過程的時候,參數w接近0,因為隨機初始化w值時,它的值可能都是較小的隨機值,所以在你長期訓練神經網絡之前w依然很小,在迭代過程和訓練過程中w的值會變得越來越大,比如在這兒,神經網絡中參數w的值已經非常大了,所以early stopping要做就是在中間點停止迭代過程,我們得到一個w值中等大小的弗羅貝尼烏斯範數,與L2正則化相似,選擇參數w範數較小的神經網絡,但願你的神經網絡過度擬合不嚴重。

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

術語early stopping代表提早停止訓練神經網絡,訓練神經網絡時,我有時會用到early stopping,但是它也有一個缺點,我們來了解一下。

我認為機器學習過程包括幾個步驟,

其中一步是選擇一個算法來優化代價函數J,我們有很多種工具來解決這個問題,如梯度下降,後面我會介紹其它算法,例如Momentum,RMSprop和Adam等等,但

是優化代價函數J之後,我也不想發生過擬合,也有一些工具可以解決該問題,比如正則化,擴增數據等等。

吳恩達深度學習筆記(34)-你不知道的其他正則化方法

在機器學習中,超級參數激增,選出可行的算法也變得越來越複雜。

發現,如果我們用一組工具優化代價函數J,機器學習就會變得更簡單,在重點優化代價函數J時,你只需要留意w和b,J(w,b)的值越小越好,你只需要想辦法減小這個值,其它的不用關注。

然後,預防過擬合還有其他任務,換句話說就是減少方差,這一步我們用另外一套工具來實現,這個原理有時被稱為“正交化”。思路就是在一個時間做一個任務,後面課上我會具體介紹正交化,如果你還不瞭解這個概念,不用擔心。

但對我來說early stopping的主要缺點就是你不能獨立地處理這兩個問題,因為提早停止梯度下降,也就是停止了優化代價函數J,因為現在你不再嘗試降低代價函數J,所以代價函數J的值可能不夠小,同時你又希望不出現過擬合,你沒有采取不同的方式來解決這兩個問題,而是用一種方法同時解決兩個問題,這樣做的結果是我要考慮的東西變得更復雜

如果不用early stopping,另一種方法就是L2正則化,訓練神經網絡的時間就可能很長。我發現,這導致超級參數搜索空間更容易分解,也更容易搜索,但是缺點在於,你必須嘗試很多正則化參數λ的值,這也導致搜索大量λ值的計算代價太高。

Early stopping的優點是,只運行一次梯度下降,你可以找出w的較小值,中間值和較大值,而無需嘗試L2正則化超級參數λ的很多值

如果你還不能完全理解這個概念,沒關係,下節課我們會詳細講解正交化,這樣會更好理解。

雖然L2正則化有缺點,可還是有很多人願意用它。吳恩達老師個人更傾向於使用L2正則化,嘗試許多不同的λ值,假設你可以負擔大量計算的代價。而使用early stopping也能得到相似結果,還不用嘗試這麼多λ值。

這節課我們講了如何使用數據擴增,以及如何使用early stopping降低神經網絡中的方差或預防過擬合。


分享到:


相關文章: