L1和L2正則化方法對於機器學習模型來說都具有防止模型過擬合的作用,通常我們需要理解他們是如何發揮作用的。L1、L2原理的解釋可以從兩個角度:
- 帶約束條件的優化求解(拉格朗日乘子法)
- 貝葉斯學派:最大後驗概率
- L1正則化相當於爲參數w加入了拉普拉斯分佈的先驗。
- L2正則化相當於爲參數w加入了高斯分佈的先驗。
L2正則化
約束優化角度
正則化是一種迴歸的形式,它將係數估計朝零的方向進行約束、調整或縮小。也就是說,正則化可以在學習過程中降低模型複雜度和不穩定程度,從而避免過擬合的危險。在機器學習任務中,對於一個參數模型,優化參數時一定伴隨着損失函數的建立與優化。
我們首先來看下不加入L2正則化的模型損失函數:
JL2(w)=L(w)
加入L2正則化後的模型損失函數爲:
JL2(w)=L(w)+2nλw2
所以L2正則化的方式就是在原來損失函數的基礎上,再加上模型參數的值的平方即可。其中等號右邊的前半部分稱爲經驗風險
,後半部分稱爲結構風險
。
對於原始損失函數求一階導爲:
δwδL(w)=d0
對於加入L2正則的損失函數求一階導爲:
δwδJL2(w)=d0+nλw
好,到這裏我們知道加入L2正則化的損失函數求導後多個一個關於w的項。
在優化模型過程中,一般會選擇相應的優化算法,例如選擇SGD優化算法時,參數w
更新公式爲:
其中,lr
表示學習率 learning rate.
w=w−lr∗δwδL(w)
如果使用L2正則後的模型更新參數w
公式爲:
w=w−lr∗δwδL(w)−nlr∗λw
=(1−nlr∗λ)∗w−lr∗δwδL(w)
可以看出來使用原始損失函數的一階導數時,w
的權重是1,加入L2正則後,w
的權重一定小於1,也就是對模型進行了衰減。
L2的權值更新公式爲wi = wi – η * wi
,雖然權值不斷減小,但每次減小的幅度不斷降低,所以很快會收斂到較小的值但不爲0。
在過擬合問題中,模型的參數越大,模型過擬合的風險越大,而模型參數越小,模型越不容易過擬合。因此通過加入L2正則化,對模型參數進行衰減,從而減小了過擬合的風險。
貝葉斯角度
上面是從優化函數角度解釋L2正則化方式防止過擬合的原因,那麼如果從貝葉斯角度如何理解呢?
爲L(w)加入正則項,相當於爲模型的參數 w 加入先驗,那要求w滿足某一分佈。
下面先介紹下高斯分佈。高斯分佈又稱正態分佈,是常見的連續概率分佈。高斯分佈的概率密度函數爲:
f(x)=σ2π1e−2σ2(x−μ)2
其曲線圖如下所示:
那麼高斯分佈和L2正則化是怎聯繫上的呢?
我們知道在最大似然估計中,是假設權重w是未知的參數,從而求得對數似然函數(取了log):
l(w)=log[P(y∣X;w)]=log[ϵ∏P(yi∣xi;w)](∗)
從上面可以看出,對於y^i
不同的概率分佈,就可以得到不同的模型。
若我們假設滿足
yi∽N(wTxi,σ2)
的高斯分佈,我們則可以在公式(*)中帶入高斯分佈的概率密度函數:
l(w)=log[i∏2πσ1e−2σ2(yi−wTxi)2]
=−2σ21i∑(yi−wTxi)2+C
上面的C爲常數項。常數項和係數不影響我們求解max(l(w))
的解,所我們可以令
J(w;X,y)=−l(w)
這樣其實是得到了Linear Regression
的代價函數。
而在最大化後驗概率估計中,我們將權重w看作隨機變量,也具有某種分佈,從而有:
P(w∣X,y)=P(X,y)P(w,X,y)=P(X,y)P(X,y∣w)P(w)∝P(y∣X,w)P(w)
取對數後得到:
MAP=logP(y∣X,w)P(w)=logP(y∣X,w)+logP(w)
可見,後驗概率函數是在似然函數基礎上再加上logP(w),P(w)的意義是對權重係數w的概率分佈的先驗假設,在收集到訓練樣本{X, y}之後,則可根據{X, y}的後驗概率對w進行修正,從而對w做出更好的估計。
若假設w的先驗分佈爲0均值的高斯分佈,即:
wj∽N(0,σ2)
則有:
log(P(w))=logj∏P(wj)=logj∏[2πσ1e−2σ2wj2]
=−2σ21∑wj2+C
可以看到,在高斯分佈下,logP(w)的效果等價於在損失函數中增加L2正則化。
所以,L2正則化可通過假設權重w的先驗分佈爲高斯分佈,由最大後驗概率估計導出。
L1正則化
約束優化角度
L1正則化具有防止模型過擬合的能力,但是相比於L2正則化,兩者防止過擬合的方式不太一樣。
不加入L1正則化的損失函數爲
JL1(w)=L(w)
加入L1正則化的損失函數爲
JL1(w)=L(w)+λ∣w∣
爲什麼新的損失函數可以防止模型的過擬合呢?
我們經常在一些文章或者博客中看到L1防止過擬合的方式是因爲L1正則化有特徵選擇的作用,容易產生稀疏解,即可以使得重要特徵的參數不爲0,而使得一些不重要特徵的參數變爲0將其拋棄掉。
那麼究竟爲什麼L1具有特徵選擇的作用,是如何將不重要特徵的參數學習的結果爲0的呢?
我們在優化更新參數w
的時候,一般需要對損失函數求解一階導數,對原始損失函數求解在w=0
處的一階導數爲:
δwδL=d0
則引入L1正則項後,求解w=0
的一階導數爲:
δwδJL1(w)∣w=0−=d0−λ
δwδJL1(w)∣w=0+=d0+λ
可見引入L1正則後,在0處的導數有一個突變,從d0−λ
變到d0+λ
。
若d0−λ
和d0+λ
異號,則在0處會是一個極小值點,因此,參數優化時很有可能優化到該極小值點上,即w=0
處,當有多個參數時也是類似的情況,因此用L1正則化容易產生稀疏解。
其實L1正則化的權值更新公式爲wi = wi – η * 1
, 權值每次更新都固定減少一個特定的值η
,那麼經過若干次迭代之後,權值就有可能減少到0。
上面我們知道L1正則化可以通過讓模型學習更多稀疏解,而使得更多的參數變爲0,當一個模型中有很多0值參數時,其模型複雜度會變得更小,從而給予模型防止過擬合的能力。
貝葉斯角度
先來介紹下拉普拉斯分佈:
上面是拉普拉斯分佈曲線,其對應公式爲:
p(x)=2λ1e−λ∣x−μ∣
一般𝜇的取值爲0,所以形式如下:
p(x)=2λ1e−λ∣x∣
由於其是由兩個指數函數組成,因此又叫雙指數函數分佈。
若假設w_j
服從均值爲0、參數爲a的拉普拉斯分佈,即:
P(wj)=2a1ea−∣wj∣
則有:
log(P(w))=logj∏2a1ea−∣wj∣
=−a1j∑∣wj∣+C
上面的C爲常數項。可以看到,在拉普拉斯分佈下logP(w)的效果等價在代價函數中增加L1項。
所以,L1正則化可通過假設權重w的先驗分佈爲拉普拉斯分佈,由最大後驗概率估計導出。