正則化的一點理解

過擬合

在網絡訓練過程當中,常常會遇到過擬合的問題,根據方差+誤差的分解,說明「方差」較大。直觀的理解就是網絡對於已有訓練數據的偏差很小,而對未知的測試數據預測不好的現象網絡

咱們會稱這個模型「過於複雜」,這裏的複雜能夠理解爲模型爲了擬合全部的樣本,會把不重要的特徵放大(部分參數爲了適應這些特徵的變化也會很大),而相對的,一些通用的特徵容易擬合(部分參數會很小),這樣獲得的模型會偏向一些微小的,不重要的特徵,所以輸入數據一有波動,預測效果就會較差。函數

我以爲用這個例子來解釋模型的簡單和複雜可能比較好。能夠把一個模型比做一我的,模型的輸入是外界環境,模型的輸出是他對於外界環境所作出的反應。生活中有的人很複雜,他對於外界環境過於敏感,會注意到身邊的各類變化,並努力的適應這種變化。他想要獲得全部人的承認,知足身邊的一切。但咱們都知道,這是不可能實現的,一旦他進入一個新的環境,那麼他瞬間會變得無所適從。相反,有的人就很簡單,對於身邊的各類小事,看的很輕,絕不在意。學習

正則化(Regularization)

一般爲了不過擬合,能夠增長訓練數據,或者下降模型的複雜度。但現實中,數據獲取並不容易,並且減小網絡規模也就下降了模型的表達能力,這也不是咱們想要的結果。
那有沒有既不須要更多的數據,也不減小網絡規模的方法呢。正則化就是這樣一種方法,它經過增長訓練偏差來減小測試偏差(訓練偏差太小有多是過擬合)測試

正則化的目的是爲了限制網絡的參數過大或過多,讓模型儘量的簡單。好比在進行曲線擬合時,通常3次多項式就能夠實現很好的效果。而若是使用8次多項式,模型參數過多,就容易發生過擬合。這個時候,咱們但願高階的參數儘量的小,這樣就至關於只保留了低階的項,模型看上去變簡單了。spa

實現這個目的最直觀的方法是下降w的數目,即L0正則化(使用L0範數做爲正則化項),讓高階的參數爲0,能夠很容易的實現正則化的目的。但由於L0正則化很難求解,是個NP難問題。.net

本文主要介紹L1和L2正則化,這也是正則化最經常使用的實現方式。3d

L2正則化(L2 Regularization)

L2正則化是在偏差函數以後加上模型參數的L2範數做爲約束,下式爲帶L2正則化項的損失函數。第二項爲正則化項,w爲模型參數,$||w||^2$表示w的L2範數,w的L2範數爲w中各個參數的平方和。$\lambda$表示權重參數,平衡正則化項和偏差項。blog

$$L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\frac{\lambda}{2}||w||^2 \tag{1}$$get

將上式簡寫爲$L=L_0+R$, $L_0$爲原始偏差項,R爲L2正則化項。咱們能夠把它看做是一個等式約束問題,即求解在約束條件R下$L_0$的最小值it

這裏假設w只有兩個參數,$w=\{w^1, w^2\}$,以下圖所示,等值線表示$L_{0}$,黑色的圓表示函數R,既要知足$L_0$最小,並且須要知足約束條件R,所以R和$L_0$第一次相交的位置即爲最優值。
20160904184646963.png

$\lambda$能夠控制R圖形的大小,$\lambda$越大,圖形越小,越不容易過擬合(過大反而容易欠擬合);$\lambda$越小,圖形越大,越容易過擬合

使用帶L2正則化項的損失函數構建的模型稱爲嶺迴歸,也稱Ridge迴歸。

L1正則化(L1 Regularization)

L1正則化能夠看作是L0的最優凸近似。L1正則化是在偏差函數以後加上模型參數的L1範數做爲約束,下式爲帶L1正則化項的損失函數。和式(1)基本一致,只不過正則化項變成了L1正則化項,w的L1範數爲w中各個參數的絕對值之和

$$L(w)=\frac{1}{N}\sum_{i=1}^N(f(x_i;w)-y_i)^2+\lambda||w||_1 \tag{2}$$

一樣的,咱們將上式寫成$L=L_0+R$, $L_0$爲原始偏差項,R爲L1正則化項。能夠用下圖來表示$L_0$和R,圖中等值線表示$L_0$,黑色矩形表示R函數。
20160904184428459.png

和L2正則化相似,$L_0$在約束條件R下的最小值即爲黑色矩形和等值線的第一個交點。圖中最優勢爲菱形與$w^2$座標軸的交點,該點對應的參數爲$(0, w^2)$。能夠想象,當模型具備不少參數和特徵時,R將從二維平面上的菱形變爲高維空間中的具備多個頂點的高維圖形,$L_0$與R的第一個交點,大機率位於R圖形的頂點上,而這些頂點對應的參數,其中不少都爲0,這樣通過L1正則化以後就能夠獲得一個稀疏模型

這裏解釋一下參數稀疏的做用:

  1. 參數稀疏能夠實現特徵選擇。一般訓練數據包含了大量的特徵,而真正有用的可能只有一小部分。稀疏化算子能夠經過學習自動的去掉哪些無用的特徵,將這些特徵對應的權重置0。
  2. 參數稀疏可讓模型的解釋性更強。好比一種疾病可能有成百上千個致病因素,咱們想分析哪些因素是致病的關鍵因素,稀疏化算子可讓模型的大部分參數爲0,只保留幾個非零的參數,便可以認爲保留的因素是致病的關鍵因素。

使用帶L1正則化項的損失函數構建的模型稱爲Lasso迴歸。

爲何正則化能夠防止過擬合

上面已經已經結合圖形比較直觀的介紹了L1正則化和L2正則化,以及它們的特色。L1正則化是經過稀疏參數來實現的,即讓部分模型參數爲0。這裏具體解釋爲何L2正則化能夠防止過擬合。

下面以線性迴歸的梯度降低過程爲例,參數爲w,損失函數爲L(w),N爲樣本數目,$x_i$表示第i個樣本,$y_i$表示第i個樣本對應的標籤。下式表示未添加正則化項的損失函數,除以2是爲了求導方便。

$$L(w)=\frac{1}{2N}(f(x,w)-y)^2\tag{3}$$

由式(3)能夠獲得第i個參數$w^i$的梯度計算公式:

$$\frac{\partial}{\partial w^i}L=\frac{1}{N}(f(x, w)-y)\frac{\partial}{\partial w^i}f(x,w) \tag{4}$$

則參數$w^i$的梯度$\theta _i$更新過程爲:

$$\theta_i = \theta_i-\eta\frac{1}{N}(f(x, w)-y)\frac{\partial}{\partial w^i}f(x,w) \tag{5}$$

添加正則項以後的梯度更新過程爲:

$$\theta_i = \theta_i(1-\frac{\lambda\eta}{N})-\frac{\eta}{N}(f(x, w)-y)\frac{\partial}{\partial w^i}f(x,w)\tag{6}$$

$\eta$表示學習率,從上式能夠看出,相比與式(5), $\theta$每次更新過程都會乘以一個比1小的數,所以$\theta$是不斷減小的。控制$\lambda$,L2正則化能夠得到很小的參數,。

總結

L1正則化和L2正則化都能防止模型過擬合,但方式有所不一樣。L1正則化傾向於將減小模型參數,讓網絡變得稀疏,L1正則化在特徵選擇頗有用而L2正則化傾向於讓網絡參數變得更小,主要用來防止模型過擬合

防止模型過擬合主要使用L2正則化,緣由是L2正則化計算更爲方便
正則化就講到這裏了,至於如何從貝葉斯角度來理解正則化,以後在講貝葉斯估計再討論。

Reference

https://mp.weixin.qq.com/s/Ww...

https://blog.csdn.net/jinping...

https://www.zhihu.com/questio...

https://blog.csdn.net/zouxy09...

相關文章
相關標籤/搜索