2.1.1 正则化基本介绍
訓練/開發(fā)、測試集
最好驗證集合測試集來自同一分布。
在機器學習中驗證集合測試集的含義分別如下:
驗證集:對學習出來的模型,調(diào)整分類器的參數(shù),如在神經(jīng)網(wǎng)絡中選擇隱藏單元數(shù)。驗證集還用來確定網(wǎng)絡結(jié)構(gòu)或者控制模型復雜程度的參數(shù)。
測試集:主要是測試訓練好的模型的分辨能力(識別率等)
對于深度學習而言,有的時候即使是沒有測試集也沒有什么關(guān)系。測試集的目的是對所選定的網(wǎng)絡系統(tǒng)進行無偏估計,如果你不需要無偏估計的話,就可以不用設(shè)置測試集。這樣我們就需要用訓練集來訓練處模型讓步用驗證集來評這些模型,然后不斷調(diào)整和改進參數(shù),迭代這個過程就可以了。
偏差/方差
如果一個數(shù)據(jù)在訓練集中擬合的不夠好,我們就稱為它是欠擬合,這種情況下訓練結(jié)果的 偏差(bias) 比較高。
如果數(shù)據(jù)在測試集而表現(xiàn)效果不夠好,我們就稱訓練結(jié)果的 方差(variance) 比較高
不過,我們上面所說的情況都是基于基本誤差很小,而且數(shù)據(jù)集和測試集都是來自同一分布的假設(shè)前提之下。其他更復雜的情況,我們會在稍后進一步說。
正則化
如果你覺得神經(jīng)網(wǎng)絡過度擬合了數(shù)據(jù),也就是存在高方差(variance) 的情況,那么你最先想想到的解決辦法可能是正則化。另一個解決高方差的情況就是準備更多數(shù)據(jù),這也是一個不錯的解決辦法。但不是什么情況下你都可能獲取到足夠的大范圍數(shù)據(jù),因此無論在什么情況下正則化都是一個不錯的解決辦法,下面我們來介紹一下正則化。
如圖所示,在邏輯回歸中加入正則化只需要加入正則化參數(shù)λ,圖的上面所使用的正則化稱為L2正則化。
為什么我在正則化的時候只加上了w而不加上b呢?
因為w通常是一個高維參數(shù)矢量,已經(jīng)可以表達高方差(variance)問題了,W可能含有很多參數(shù),我們不可能擬合所有的參數(shù)。而b只是一個數(shù)字,因此加入b可有可無,影響不大,所以我們通常就不加人b。
當然,你可能還聽過L1正則化,使用L1正則化的時候,w通常是稀疏的,也就是w向量里面有很多的0。人們在訓練模型的時候通常都更傾向于使用L2正則化,L1使用的比較少。
最后需要注意的是:lambda是python中的一個保留字段,因此我們在編程的時候使用lambd來代替lambda
在神經(jīng)網(wǎng)絡中有一個成本函數(shù)J,他等于損失函數(shù)L/m。如圖所示
這里的w使用Forbenius范數(shù)來定義,他等于矩陣中所有元素的平方和。
那么我們該如何實現(xiàn)梯度下降呢?
和之前更新dw的算法類似的,我們對J的后面新加的和w有關(guān)的項也去計算偏導數(shù)。
有的時候我們也稱此時的w為權(quán)重衰減。在圖片的最底端的式子中我們可以看出,不論w是什么數(shù),我們都在嘗試讓他變得更小。實際上相當于我們給矩陣乘以了(1?αλm)倍的權(quán)重。
為什么正則化可以減少過擬合
如圖所示,我們通過添加正則項來避免數(shù)據(jù)的權(quán)值過大。當正則化的λ足夠大的時候,最后隱藏層的w值會趨近于0。這樣,就會減少過擬合現(xiàn)象的發(fā)生了。但他并不是會簡單到像左下圖的邏輯回歸函數(shù)一樣簡單,實際上,雖然w的參數(shù)影響很小,但他還是有一定的影響,因此最后的結(jié)果會更像是中間的那個比較良好的效果。
我們再來直觀的理解一下,如圖所示,如果w的值很小的話,那么就集中在tanh函數(shù)中比較線性的一段。z=wx+b,那么z的數(shù)值也會變得比較小,整個神經(jīng)網(wǎng)絡就會變得更加線性,很容易就降低過擬合的現(xiàn)象了。
總結(jié)
以上是生活随笔為你收集整理的2.1.1 正则化基本介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深层神经网络中的前向传播
- 下一篇: 2.1.2 Dropout正则化以及其他