說到正則化大家應該都不陌生,這個在機器學習和深度學習中都是非常常見的,常用的正則化有L1正則化和L2正則化。提到正則化大家就會想到是它會将權重添加到損失函數計算中來降低模型過拟合的程度。了解更多一點的同學還會說,L1正則化會讓模型的權重參數稀疏化(部分權重的值為0),L2正則化會讓模型的權重有趨于0的偏好(部分權重趨于0)。
不知道大家有沒有想過為什麼L1正則化會讓部分權重的值為0?為什麼L2正則化會讓權重會有偏向于0?為什麼正則化可以防止過拟合?正則化是究竟是怎麼來的? 帶着這些問題,我們來看這片文章,會幫助大家一一解答。
正則化的由來
在介紹正則化之前,我們先來看一張圖
正則化效果圖
在上圖中我們繪制了三條不同的曲線y1、y2、y3,從曲線函數值的變化不難看出,y1的函數值變化最大,y2和y3的函數值變化相對來說要平緩一些。通過函數的表達式可以看出,y2相對于y1來說自變量的系數值變小了,y3相對y1來說自變量少了一個,我們可以理解為少的那個自變量的系數為0。
通常如果函數的取值變化的幅度更大,我們會認為函數更複雜,函數的方差更大。所以,上面的三個函數中,函數y1的複雜度最高。通過函數圖像可以發現,降低自變量的系數值,或者減少函數自變量的個數(自變量的系數為0)是可以降低函數複雜度的。
在構建模型之前,我們是不知道數據的分布,如果模型過于簡單就會導緻欠拟合,如果模型過于複雜就會過拟合。通常我們為了模型能夠更好的拟合數據都是使得模型處于過拟合,為了降低模型的過拟合就需要使得模型部分權重為0或者降低模型的權重,所以我們會為損失函數添加一個懲罰項,數學表達式如下
帶正則化的目标函數
上式中的J(θ;X,y)表示原目标函數(沒有添加正則化),Ω(θ)表示模型參數的懲罰項,懲罰項系數α∈[0,∞),α越大表示正則化懲罰越大。
需要注意:我們在對模型的參數做懲罰的時候,其實隻是添加了模型的權重參數并不包括偏置參數,因為模型的偏置參數數量相對于權重參數數量來說要少的多,而且每個權重參數會指定兩個變量如何相互作用,而偏置隻是控制一個單一的變量,所以我們不對偏置做正則化也不會導緻太大的方差。而且,如果對偏置進行正則化可能會導緻明顯的欠拟合。
上式中的參數θ包含了權重和偏置,而我們隻需要對權重做正則化。所以,L1正則化和L2正則化可以改成如下表達式
L1正則化和L2正則化
在正則化的由來中,我們直觀的介紹了為什麼需要加入正則化?接下來我們來介紹一下為什麼L1正則化會使得模型的部分參數為0,L2正則化會使得模型的參數趨于0。為了更好幫助大家理解和證明,首先通過圖解來進行解釋,然後再通過公式推導證明
為了幫助大家從直觀上理解正則化的效果,接下來我們将通過畫圖來觀察L1正則化和L2正則化的效果
前面我們介紹了正則化其實就是在原目标函數的基礎上多增加了一項參數的懲罰項,目的就是為了不讓網絡的參數過大而導緻模型過拟合,所以我們其實可以将正則化後的目标函數理解為在最小化原目标函數的基礎上多增加了一個參數的約束函數,對于約束函數的要求就是它需要小于某個常數C
帶約束的目标函數
我們将L1正則化效果等價于求原目标函數的最小值和對權重參數的約束函數,這裡為了便于作圖我們隻考慮二維情況
二維的L1正則化
根據上兩個式子,我們可以繪制出線性規劃圖如下
L1正則化
上圖中的藍色橢圓表示的是原目标函數的等高線,紅色矩形表示的是權重的約束函數,圖中的紅色箭頭表示的是約束函數的法向量,其中藍色箭頭表示的是原目标函數在該點的梯度方向(等高線的梯度方向與它的法向量方向一緻)
由于約束函數的限制導緻ω隻能在紅色矩形的邊上進行移動來尋找最佳的ω∗。當ω處于上圖中的位置時,将原目标函數的梯度分解為沿約束函數的切線方向(即矩形的邊)和法線方向,為了使得原目标函數取得最小值此時需要沿着梯度在約束函數的切線方向(左上方)移動。當ω移動到ω′時,通過分解原代價函數的梯度可以發現,為了使得取得原代價函數的最小值應該沿着右上方移動,所以最終最優的ω∗應該為矩形的頂點位置。
通過觀察可以發現此時ω∗在坐标軸ω1方向的取值為0,最優點會落在某些軸上導緻部分權重為0,這也就是為什麼L1正則化會使得部分權重參數稀疏的原因。
同樣,我們按照分析L1正則化的思路進行分析
二維的L2正則化
L2正則化
上圖中藍色橢圓表示是原目标函數的等高線,紅色圓表示的是權重的約束函數它的半徑是√C,其中藍色箭頭表示的是原目标函數在該點的梯度方向,紅色箭頭表示的是約束函數在該點的法向量,綠色箭頭表示的是約束函數在該點的切線方向。
還是按照上面的思想我們将梯度按切線方向和法線方向進行分解,為了使得原代價函數取得最小值,我們需要将ω按切線方向進行移動,當移動到ω∗時,梯度方向與切線方向垂直時梯度沿切線方向的分量為0,此時原代價函數取得最小值,所以ω∗為最優點。
通過觀察上圖可以發現,此時ω1的取值接近于0,因為最優點會靠近某些軸,導緻部分權重取值接近于0,這也就是為什麼L2正則化會使得部分權重趨于0的原因。
2.公式推導證明
L2正則化也被稱為權重衰減或嶺回歸,在神經網絡中也被經常用到,因為它會使得部分權重向零點靠近(使得部分權重的取值趨于0)。為了更好的觀察L2正則化的影響,接下來我們觀察一下在添加罰項之後,權重參數是如何更新的
帶L2正則化目标函數的梯度
使用單步梯度下降更新權重,更新公式如下:
L2正則化單步權重更新過程
上式中的,ϵ指的是學習率,α指的是權重衰減系數,這兩個參數通常都是小于1的。
通過單步的權重的梯度更新公式可以發現,權重每次在更新之前都需要乘以一個小于1的系數,相當于每次更新權重的時候都對它做了衰減,在經過多次權重更新之後會,權重的系數會接近于0,最終會導緻權重也接近0,假設權重的系數為0.9,經過100次權重的叠代更新,最終權重系數會變為0.9^100≈2.7∗10−5(注:這裡沒有考慮梯度的大小,隻是簡單表明這種趨勢)。
上面隻是一個單步的權重更新過程,接下來我們推導一下在整個訓練過程中,權重的更新過程,為了簡化分析我們假設ω∗為J(ω)取得最小值時的權重向量,根據泰勒公式
泰勒公式
假設J(ω)二階可導,我們對其進行二次近似的泰勒展開則有
原目标函數的泰勒展開
為了讓J^(ω)取得最小值,我們令其導數為0,因為J(ω∗)為常數,所以它的導數為0,我們就直接省略了
編輯器不支持部分公式就用圖片代替了
上式中的I表示的是單位矩陣,通過上式不難發現,當正則化的懲罰項系數α為0時,此時ω˜的最優解就等于ω∗,接下來我們讨論一下當懲罰項系數不為0的時。因為H是J在ω∗的Hessian矩陣,所以H是一個對稱矩陣,我們可以對其做特征分解,可得H=QΛQT(後面是Q的轉置),其中Λ為對角矩陣,Q為一組特征向量的标準正交基,代入上式可得
L2正則化權重最優解推導
通過上面的式子可以發現,L2正則化的效果就是沿着H矩陣特征向量所定義的軸縮放未正則化J(ω)的解ω∗。因為I是單位矩陣,我們可以将縮放的系數改成這種形式
,其中λi指的是矩陣H的特征向量每個軸值的大小,也就是特征分解之後特征值的大小。
通過修改後的衰減系數不難發現,當特征值λi≫α時,此時α的影響可以忽略不計,正則化的縮放系數會趨于1,正則化基本沒有影響。當特征值λi≪α時,可以将縮放系數改為
,因為α≫λi所以α/λi≫1,所以縮放系數λi/α≪1,縮放系數趨于0使得權重也會趨于0。
上面我們推導了添加了L2正則化之後對權重的影響,通過最後推導得到式子可以解釋為什麼l2正則化會讓權重趨于0。接下來,我們以類似的方式來推導L1正則化對于權重的影響
上式中的sign函數為符号函數,函數圖像如下
符号函數(sign)
當函數輸入值x<0時輸出值恒等于-1,輸入值為0時輸出值也等于0,輸入值x>1時輸出值恒等于1,sign函數經常被用來表示階躍函數
我們将J(ω;X,y)使用二階的泰勒展開式來代替,可以将L1正則化後的代價函數轉換為如下形式
接下來我們看看如何求解ωi,上式中的J(ω∗)是常數我們不用考慮,主要考慮求和式中的二次項式和絕對值式來使得整個目标函數取得最小值,為了求得後兩項和的最小值,我們對其求導并令求導後的結果等于0來求ωi
我們可以将上式中ωi分為兩種情況,第一種是ωi和ω∗同号即sign(ωi)=sign(ωi∗),第二種是ωi和ω∗異号即sign(ωi)≠sign(ω∗i),我們先讨論第一種情況,為了幫助大家理解我們可以看看下圖
通過上圖可以發現,當ωi與ω∗異号時,無論是哪種情況為了使得損失函數最小,其最優值都是ωi=0此時能保證代價函數的二次項式和絕對值式都取得最小值。
當ωi和ω∗同号時,可以将上式進行化簡可得
所以,我們可以合并上式的結果得到最終的ωi的表達式為
ωi解析解
總結我們通過畫圖和使用公式推導證明了L1正則化和L2正則化産生不同效果的原因,需要注意的是它們的共同點其實都是在衰減對于代價函數的值變化影響相對較小的權重,也就是特征值小的權重,而L1正則化的效果是會使得這部分權重為0,L2正則化會使得它們趨于0。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!