前言
說到正則化大家應(yīng)該都不陌生,這個(gè)在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中都是非常常見的,常用的正則化有L1正則化和L2正則化。提到正則化大家就會(huì)想到是它會(huì)將權(quán)重添加到損失函數(shù)計(jì)算中來降低模型過擬合的程度。了解更多一點(diǎn)的同學(xué)還會(huì)說,L1正則化會(huì)讓模型的權(quán)重參數(shù)稀疏化(部分權(quán)重的值為0),L2正則化會(huì)讓模型的權(quán)重有趨于0的偏好。
不知道大家有沒有想過為什么L1正則化會(huì)讓部分權(quán)重的值為0?為什么L2正則化會(huì)讓權(quán)重會(huì)有偏向于0?為什么正則化可以防止過擬合?正則化究竟是怎么來的? 帶著這些問題,我們來看這篇文章,會(huì)幫助大家一一解答。
正則化的由來
在介紹正則化之前,我們先來看一張圖
在上圖中我們繪制了三條不同的曲線y1、y2、y3 ,從曲線函數(shù)值的變化不難看出,y1的函數(shù)值變化最大,y2和y3的函數(shù)值相對(duì)來說要平緩一些。通過函數(shù)的表達(dá)式可以看出,y2 相對(duì)于y1 來說自變量的系數(shù)值變小了,y3相對(duì)y1 來說自變量少了一個(gè),我們可以理解為少的那個(gè)自變量的系數(shù)為0。
通常如果函數(shù)的取值變化的幅度更大,我們會(huì)認(rèn)為函數(shù)更復(fù)雜,函數(shù)的方差更大。所以,上面的三個(gè)函數(shù)中,函數(shù)y1的復(fù)雜度最高。通過函數(shù)圖像可以發(fā)現(xiàn),降低自變量的系數(shù)值,或者減少函數(shù)自變量的個(gè)數(shù)等價(jià)于自變量的系數(shù)為0是可以降低函數(shù)復(fù)雜度的。
在構(gòu)建模型之前,我們是不知道數(shù)據(jù)的分布,如果模型過于簡(jiǎn)單就會(huì)導(dǎo)致欠擬合,如果模型過于復(fù)雜就會(huì)過擬合。通常我們?yōu)榱四P湍軌蚋玫臄M合數(shù)據(jù)都是使得模型處于過擬合,為了降低模型的過擬合就需要使得模型部分權(quán)重為0或者降低模型的權(quán)重,所以我們會(huì)為損失函數(shù)添加一個(gè)懲罰項(xiàng),數(shù)學(xué)表達(dá)式如下
上式中的J(θ;X,y)表示原目標(biāo)函數(shù)(沒有添加正則化),Ω(θ)表示模型參數(shù)的懲罰項(xiàng),懲罰項(xiàng)系數(shù)α∈[0,∞) ,α 越大表示正則化懲罰越大。
需要注意:我們?cè)趯?duì)模型的參數(shù)做懲罰的時(shí)候,其實(shí)只是添加了模型的權(quán)重參數(shù)并不包括偏置參數(shù),因?yàn)槟P偷钠脜?shù)數(shù)量相對(duì)于權(quán)重參數(shù)數(shù)量來說要少的多,而且每個(gè)權(quán)重參數(shù)會(huì)指定兩個(gè)變量如何相互作用,而偏置只是控制一個(gè)單一的變量,所以我們不對(duì)偏置做正則化也不會(huì)導(dǎo)致太大的方差。而且,如果對(duì)偏置進(jìn)行正則化可能會(huì)導(dǎo)致明顯的欠擬合。
上式中的參數(shù)θ 包含了權(quán)重和偏置,而我們只需要對(duì)權(quán)重做正則化。所以,L1正則化和L2正則化可以改成如下表達(dá)式
正則化的影響
在正則化的由來中,我們直觀的介紹了為什么需要加入正則化?接下來我們來介紹一下為什么l1 正則化會(huì)使得模型的部分參數(shù)為0,l2 正則化會(huì)使得模型的參數(shù)接近0。為了更好的證明,接下來的公式可能會(huì)有點(diǎn)多,不過我會(huì)盡可能的詳細(xì)讓大家更好的理解
1. 直觀理解
為了幫助大家從直觀上理解正則化的效果,接下來我們將通過畫圖來觀察l1正則化和l2正則化的效果
前面我們介紹了正則化其實(shí)就是在原代價(jià)函數(shù)的基礎(chǔ)上多增加了一項(xiàng)參數(shù)的懲罰項(xiàng),目的就是為了不讓網(wǎng)絡(luò)的參數(shù)過大而導(dǎo)致模型過擬合,所以我們其實(shí)可以將正則化后的代價(jià)函數(shù)理解為在最小化原代價(jià)函數(shù)的基礎(chǔ)上多增加了一個(gè)參數(shù)的約束函數(shù),對(duì)于約束函數(shù)的要求就是它需要小于某個(gè)常數(shù)C
l1 正則化
我們將l1 正則化效果等價(jià)于求原代價(jià)函數(shù)的最小值和對(duì)權(quán)重參數(shù)的約束函數(shù),這里為了便于作圖我們只考慮二維情況
根據(jù)上兩個(gè)式子,我們可以繪制出線性規(guī)劃圖如下
上圖中的藍(lán)色橢圓表示的是原代價(jià)函數(shù)的等高線,紅色矩形表示的是權(quán)重的約束函數(shù),圖中的紅色箭頭表示的是約束函數(shù)的法向量方向,其中藍(lán)色箭頭表示的是原代價(jià)函數(shù)在該點(diǎn)的梯度方向(等高線的梯度方向與它的法向量方向一致)
因?yàn)榧s束函數(shù)的限制導(dǎo)致ω 只能在紅色矩形的邊上進(jìn)行移動(dòng)來尋找最佳的ω?。當(dāng)ω處于上圖中的位置時(shí),將原代價(jià)函數(shù)的梯度分解為沿約束函數(shù)的切線方向(即矩形的邊)和法線方向,為了使得原代價(jià)函數(shù)取得最小值此時(shí)需要沿著梯度在約束函數(shù)的切線方向(左上方)移動(dòng)。當(dāng)ω移動(dòng)到ω′ 時(shí),通過分解原代價(jià)函數(shù)的梯度可以發(fā)現(xiàn),為了使得取得原代價(jià)函數(shù)的最小值應(yīng)該沿著右上方移動(dòng),所以最終最優(yōu)的ω? 應(yīng)該為矩形的頂點(diǎn)位置。
通過觀察可以發(fā)現(xiàn)此時(shí)ω? 在坐標(biāo)軸ω1 方向的取值為0,這也就是為什么l1 正則化會(huì)使得權(quán)重參數(shù)稀疏的原因。
l2 正則化
同樣,我們按照分析l1正則化的思路進(jìn)行分析
上圖中藍(lán)色橢圓表示是原代價(jià)函數(shù)的等高線,紅色圓表示的是權(quán)重的約束函數(shù)它的半徑是√ C ,其中藍(lán)色箭頭表示的是原代價(jià)函數(shù)在該點(diǎn)的梯度方向,紅色箭頭表示的是約束函數(shù)在該點(diǎn)的法向量方向,綠色箭頭表示的是約束函數(shù)在該點(diǎn)的切線方向。
還是按照上面的思想我們將梯度按切線方向和法線方向進(jìn)行分解,為了使得原代價(jià)函數(shù)取得最小值,我們需要將ω 按切線方向進(jìn)行移動(dòng),當(dāng)移動(dòng)到ω? 時(shí),梯度方向與切線方向垂直時(shí)梯度沿切線方向的分量為0,此時(shí)原代價(jià)函數(shù)取得最小值,所以ω? 為最優(yōu)點(diǎn)。
通過觀察上圖可以發(fā)現(xiàn),此時(shí)ω1的取值接近于0,這也就是為什么l2正則化會(huì)使得權(quán)重趨于0的原因。
2. 公式推導(dǎo)證明
l2 正則化
l2 正則化也被稱為權(quán)重衰減或嶺回歸,在神經(jīng)網(wǎng)絡(luò)中也被經(jīng)常用到,因?yàn)樗鼤?huì)使得權(quán)重向零點(diǎn)靠近(使得權(quán)重的取值趨于0)。為了更好的觀察l2正則化的影響,接下來我們觀察一下在添加罰項(xiàng)之后,權(quán)重參數(shù)是如何更新的
使用單步梯度下降更新權(quán)重,更新公式如下:
上式中的,? 指的是學(xué)習(xí)率,α 指的是權(quán)重衰減系數(shù),這兩個(gè)參數(shù)通常都是小于1的。
通過單步的權(quán)重的梯度更新公式可以發(fā)現(xiàn),權(quán)重每次在更新之前都需要乘以一個(gè)小于1的系數(shù),相當(dāng)于每次更新權(quán)重的時(shí)候都對(duì)它做了衰減,在經(jīng)過多次權(quán)重更新之后會(huì),權(quán)重的系數(shù)會(huì)接近于0,最終會(huì)導(dǎo)致權(quán)重也接近0,假設(shè)權(quán)重的系數(shù)為0.9,經(jīng)過100次權(quán)重的迭代更新,最終權(quán)重系數(shù)會(huì)變?yōu)?.9100≈2.7?10?5(注:這里沒有考慮梯度的大小,只是簡(jiǎn)單表明這種趨勢(shì))。
上面只是一個(gè)單步的權(quán)重更新過程,接下來我們推導(dǎo)一下在整個(gè)訓(xùn)練過程中,權(quán)重的更新過程,為了簡(jiǎn)化分析我們假設(shè)ω? 為J(ω)取得最小值時(shí)的權(quán)重向量,根據(jù)泰勒公式
假設(shè)J(ω)二階可導(dǎo),我們對(duì)其進(jìn)行二次近似的泰勒展開則有
為了讓?J (ω)取得最小值,我們令其導(dǎo)數(shù)為0,因?yàn)?J(ω?)為常數(shù),所以它的導(dǎo)數(shù)為0,我們就直接省略了
接下來我們研究添加l2 正則化之后的對(duì)?J(ω)的影響,我們假設(shè)?ω為l2正則化之后?J(ω)的最優(yōu)解,可得它的導(dǎo)數(shù)為
上式中的 I 表示的是單位矩陣,通過上式不難發(fā)現(xiàn),當(dāng)正則化的懲罰項(xiàng)系數(shù)α 為0時(shí),此時(shí)?ω 的最優(yōu)解就等于ω?,接下來我們討論一下當(dāng)懲罰項(xiàng)系數(shù)不為0的時(shí)。因?yàn)镠 是J 在ω? 的Hessian矩陣,所以H 是一個(gè)對(duì)稱矩陣,我們可以對(duì)其做特征分解,可得 H = QΛQT,其中Λ為對(duì)角矩陣,Q 為一組特征向量的標(biāo)準(zhǔn)正交基,代入上式可得
通過上面的式子可以發(fā)現(xiàn),l2正則化的效果就是沿著H 矩陣特征向量所定義的軸縮放未正則化J(ω)的解ω?。因?yàn)?I 是單位矩陣,我們可以將縮放的系數(shù)改成這種形式?,其中λi指的是矩陣H的特征向量每個(gè)軸值的大小,也就是特征分解之后特征值的大小。
通過修改后的衰減系數(shù)不難發(fā)現(xiàn),當(dāng)特征值 λi>>α 時(shí),此時(shí)α的影響可以忽略不計(jì),正則化的縮放系數(shù)會(huì)趨于1,正則化基本沒有影響。當(dāng)特征值 λi<<α 時(shí),可以將縮放系數(shù)改為,因?yàn)?α>>λi 所以 (α/λi)>>1,所以縮放系數(shù) (λ/iα)<<1,縮放系數(shù)趨于0使得權(quán)重也會(huì)趨于0。
l1正則化
上面我們推導(dǎo)了添加了l2 正則化之后對(duì)權(quán)重的影響,通過最后推導(dǎo)得到式子可以解釋為什么l2正則化會(huì)讓權(quán)重趨于0。接下來,我們以類似的方式來推導(dǎo)l1正則化對(duì)于權(quán)重的影響
上式中的sign函數(shù)為符號(hào)函數(shù),函數(shù)圖像如下
當(dāng)函數(shù)輸入值x<0 時(shí)輸出值恒等于 -1,輸入值為0時(shí)輸出值也等于0,輸入值 x>1 時(shí)輸出值恒等于1,sign函數(shù)經(jīng)常被用來表示階躍函數(shù)
我們將J(ω;X,y) 使用二階的泰勒展開式來代替,可以將l1正則化后的代價(jià)函數(shù)轉(zhuǎn)換為如下形式
接下來我們看看如何求解ωi,上式中的J(ω?)是常數(shù)我們不用考慮,主要考慮求和式中的二次項(xiàng)式和絕對(duì)值式來使得整個(gè)代價(jià)函數(shù)取得最小值,為了求得后兩項(xiàng)和的最小值,我們對(duì)其求導(dǎo)并令求導(dǎo)后的結(jié)果等于0來求ωi
我們可以將上式中ωi 分為兩種情況,第一種是ωi 和ω?同號(hào)即,第二種是ωi 和ω?異號(hào)即,我們先討論第一種情況,為了幫助大家理解我們可以看看下圖
通過上圖可以發(fā)現(xiàn),當(dāng)ωi 與ω?異號(hào)時(shí),無論是哪種情況為了使得損失函數(shù)最小,其最優(yōu)值都是ωi=0此時(shí)能保證代價(jià)函數(shù)的二次項(xiàng)式和絕對(duì)值式都取得最小值。
當(dāng)ωi和ω? 同號(hào)時(shí),可以將上式進(jìn)行化簡(jiǎn)可得
所以,我們可以合并上式的結(jié)果得到最終的ωi的表達(dá)式為
總結(jié)
我們通過畫圖和使用公式推導(dǎo)證明了l1正則化和l2正則化產(chǎn)生不同效果的原因,需要注意的是它們的共同點(diǎn)其實(shí)都是在衰減對(duì)于代價(jià)函數(shù)的值變化影響相對(duì)較小的權(quán)重,也就是特征值小的權(quán)重,而l1正則化的效果是會(huì)使得這部分權(quán)重為0,l2正則化會(huì)使得它們趨于0。
-
正則化
+關(guān)注
關(guān)注
0文章
17瀏覽量
8115 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8306瀏覽量
131838 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5422瀏覽量
120587
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論