1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
| 1.7 理解 Dropout | 回到目錄 | 1.9 歸一化輸入 |
其他正則化方法 (Other Regularization Methods)
除了 L2L2L2 正則化和隨機失活(dropout)正則化,還有幾種方法可以減少神經網絡中的過擬合:
一.數據擴增
假設你正在擬合貓咪圖片分類器,如果你想通過擴增訓練數據來解決過擬合,但擴增數據代價高,而且有時候我們無法擴增數據,但我們可以通過添加這類圖片來增加訓練集。例如,水平翻轉圖片,并把它添加到訓練集。所以現在訓練集中有原圖,還有翻轉后的這張圖片,所以通過水平翻轉圖片,訓練集則可以增大一倍,因為訓練集有冗余,這雖然不如我們額外收集一組新圖片那么好,但這樣做節省了獲取更多貓咪圖片的花費。
除了水平翻轉圖片,你也可以隨意裁剪圖片,這張圖是把原圖旋轉并隨意放大后裁剪的,仍能辨別出圖片中的貓咪。
通過隨意翻轉和裁剪圖片,我們可以增大數據集,額外生成假訓練數據。和全新的,獨立的貓咪圖片數據相比,這些額外的假的數據無法包含像全新數據那么多的信息,但我們這么做基本沒有花費,代價幾乎為零,除了一些對抗性代價。以這種方式擴增算法數據,進而正則化數據集,減少過擬合比較廉價。
像這樣人工合成數據的話,我們要通過算法驗證,圖片中的貓經過水平翻轉之后依然是貓。大家注意,我并沒有垂直翻轉,因為我們不想上下顛倒圖片,也可以隨機選取放大后的部分圖片,貓可能還在上面。
對于光學字符識別,我們還可以通過添加數字,隨意旋轉或扭曲數字來擴增數據,把這些數字添加到訓練集,它們仍然是數字。為了方便說明,我對字符做了強變形處理,所以數字4看起來是波形的,其實不用對數字4做這么夸張的扭曲,只要輕微的變形就好,我做成這樣是為了讓大家看的更清楚。實際操作的時候,我們通常對字符做更輕微的變形處理。因為這幾個4看起來有點扭曲。所以,數據擴增可作為正則化方法使用,實際功能上也與正則化相似。
二.early stopping
還有另外一種常用的方法叫作early stopping,運行梯度下降時,我們可以繪制訓練誤差,或只繪制代價函數的優化過程,在訓練集上用0-1記錄分類誤差次數。呈單調下降趨勢,如圖。
因為在訓練過程中,我們希望訓練誤差,代價函數 JJJ 都在下降,通過early stopping,我們不但可以繪制上面這些內容,還可以繪制驗證集誤差,它可以是驗證集上的分類誤差,或驗證集上的代價函數,邏輯損失和對數損失等,你會發現,驗證集誤差通常會先呈下降趨勢,然后在某個節點處開始上升,early stopping的作用是,你會說,神經網絡已經在這個迭代過程中表現得很好了,我們在此停止訓練吧,得到驗證集誤差,它是怎么發揮作用的?
當你還未在神經網絡上運行太多迭代過程的時候,參數 www 接近0,因為隨機初始化 www 值時,它的值可能都是較小的隨機值,所以在你長期訓練神經網絡之前 www 依然很小,在迭代過程和訓練過程中 www 的值會變得越來越大,比如在這兒,神經網絡中參數 www 的值已經非常大了,所以early stopping要做就是在中間點停止迭代過程,我們得到一個 www 值中等大小的弗羅貝尼烏斯范數,與 L2L2L2 正則化相似,選擇參數 www 范數較小的神經網絡,但愿你的神經網絡過度擬合不嚴重。
術語early stopping代表提早停止訓練神經網絡,訓練神經網絡時,我有時會用到early stopping,但是它也有一個缺點,我們來了解一下。
我認為機器學習過程包括幾個步驟,其中一步是選擇一個算法來優化代價函數 JJJ ,我們有很多種工具來解決這個問題,如梯度下降,后面我會介紹其它算法,例如Momentum,RMSprop和Adam等等,但是優化代價函數 JJJ 之后,我也不想發生過擬合,也有一些工具可以解決該問題,比如正則化,擴增數據等等。
在機器學習中,超級參數激增,選出可行的算法也變得越來越復雜。我發現,如果我們用一組工具優化代價函數 JJJ ,機器學習就會變得更簡單,在重點優化代價函數 JJJ 時,你只需要留意 www 和 bbb , J(w,b)J(w,b)J(w,b) 的值越小越好,你只需要想辦法減小這個值,其它的不用關注。然后,預防過擬合還有其他任務,換句話說就是減少方差,這一步我們用另外一套工具來實現,這個原理有時被稱為“正交化”。思路就是在一個時間做一個任務,后面課上我會具體介紹正交化,如果你還不了解這個概念,不用擔心。
但對我來說early stopping的主要缺點就是你不能獨立地處理這兩個問題,因為提早停止梯度下降,也就是停止了優化代價函數 JJJ ,因為現在你不再嘗試降低代價函數 JJJ ,所以代價函數 JJJ 的值可能不夠小,同時你又希望不出現過擬合,你沒有采取不同的方式來解決這兩個問題,而是用一種方法同時解決兩個問題,這樣做的結果是我要考慮的東西變得更復雜。
如果不用early stopping,另一種方法就是 L2L2L2 正則化,訓練神經網絡的時間就可能很長。我發現,這導致超級參數搜索空間更容易分解,也更容易搜索,但是缺點在于,你必須嘗試很多正則化參數 λ\lambdaλ 的值,這也導致搜索大量 λ\lambdaλ 值的計算代價太高。
Early stopping的優點是,只運行一次梯度下降,你可以找出 www 的較小值,中間值和較大值,而無需嘗試 L2L2L2 正則化超級參數 λ\lambdaλ 的很多值。
如果你還不能完全理解這個概念,沒關系,下節課我們會詳細講解正交化,這樣會更好理解。
雖然 L2L2L2 正則化有缺點,可還是有很多人愿意用它。吳恩達老師個人更傾向于使用 L2L2L2 正則化,嘗試許多不同的 λ\lambdaλ 值,假設你可以負擔大量計算的代價。而使用early stopping也能得到相似結果,還不用嘗試這么多 λ\lambdaλ 值。
這節課我們講了如何使用數據擴增,以及如何使用early stopping降低神經網絡中的方差或預防過擬合。
課程PPT
| 1.7 理解 Dropout | 回到目錄 | 1.9 歸一化輸入 |
總結
以上是生活随笔為你收集整理的1.8 其他正则化方法-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.7 理解 Dropout-深度学习第
- 下一篇: 1.9 归一化输入-深度学习第二课《改善