L1正則化與L2正則化

在騰訊互娛的兩面,和百度的一面中,都問到了這個問題:

講講正則化為什麼能降低過擬合程度,並且說明下下L1正則化和L2正則化。

(要想看答案請直接看文章結尾)


L1和L2正則化:

我們所說的正則化,就是在原來的loss function的基礎上,加上了一些正則化項或者稱為模型複雜度懲罰項。現在我們還是以最熟悉的線性回歸為例子。

優化目標:

min 1/Nastsum_{i = 1}^{N}{(y_{i} -omega^{T} x_{i})^{2} } 式子(1)

加上L1正則項(lasso回歸):

min 1/Nastsum_{i = 1}^{N}{(y_{i} -omega^{T} x_{i})^{2} } + C||omega||_{1} 式子(2)

加上L2正則項(嶺回歸):

min 1/Nastsum_{i = 1}^{N}{(y_{i} -omega^{T} x_{i})^{2} } + C||omega||_{2}^{2} 式子(3)

結構風險最小化角度:

結構風險最小化: 在經驗風險最小化的基礎上(也就是訓練誤差最小化),儘可能採用簡單的模型,以此提高泛化預測精度。

那現在我們就看看加了L1正則化和L2正則化之後,目標函數求解的時候,最終解有什麼變化。

圖像解釋(假設X為一個二維樣本,那麼要求解參數 omega 也是二維):

  • 原函數曲線等高線(同顏色曲線上,每一組 omega_{1}omega_{2} 帶入值都相同)

目標函數等高線

  • L1和L2加入後的函數圖像:

加入L1和L2正則的等高線

從上邊兩幅圖中我們可以看出:

  • 如果不加L1和L2正則化的時候,對於線性回歸這種目標函數凸函數的話,我們最終的結果就是最裡邊的紫色的小圈圈等高線上的點。
  • 當加入L1正則化的時候,我們先畫出 |omega_{1}| + |omega_{2}| = F 的圖像,也就是一個菱形,代表這些曲線上的點算出來的 1範數|omega_{1}| + |omega_{2}| 都為F。那我們現在的目標是不僅是原曲線算得值要小(越來越接近中心的紫色圈圈),還要使得這個菱形越小越好(F越小越好)。那麼還和原來一樣的話,過中心紫色圈圈的那個菱形明顯很大,因此我們要取到一個恰好的值。那麼如何求值呢?

帶L1正則化的目標函數求解

1. 以同一條原曲線目標等高線來說,現在以最外圈的紅色等高線為

例,我們看到,對於紅色曲線上的每個點都可以做一個菱形,根據

上圖可知,當這個菱形與某條等高線相切(僅有一個交點)的時候,

這個菱形最小,上圖相割對比較大的兩個菱形對應的1範數更大。

用公式說這個時候能使得在相同的 1/Nastsum_{i = 1}^{N}{(y_{i} -omega^{T} x_{i})^{2} } 下,

由於相切的時候的 C||omega||_{1} 小,即 |omega_{1}| + |omega_{2}| 小,所以:

能夠使得 1/Nastsum_{i = 1}^{N}{(y_{i} -omega^{T} x_{i})^{2} } + C||omega||_{1} 更小。

2. 有了1.的說明,我們可以看出,最終加入L1範數得到的解,一定是某個

菱形和某條原函數等高線的切點。現在有個比較重要的結論來了,我們

經過觀察可以看到,幾乎對於很多原函數等高曲線,和某個菱形相交的

時候及其容易相交在坐標軸(比如上圖),也就是說最終的結果,解的

某些維度及其容易是0,比如上圖最終解是
omega = (0,x) ,這也就

是我們所說的L1更容易得到稀疏解(解向量中0比較多)的原因。

3. 當然了,光看著圖說,L1的菱形更容易和等高線相交在坐標軸,一點都沒

說服力,只是個感性的認識,不過不要緊,其實是很嚴謹的,我們直接用

求導來證明,具體的證明這裡有一個很好的答案了,簡而言之就是假設現在

我們是一維的情況下 h(omega) = f(omega) + C|omega| ,其中 h(omega) 是目標函數, f(omega)

是沒加L1正則化項前的目標函數, C|omega| 是L1正則項,那麼要使得0點

成為最值可能的點,雖然在0點不可導,但是我們只需要讓0點左右的導數

異號,即 h_{左}^{}(0)*h_{右}^{}(0) = (f^{}(0) + C)(f^{}(0) - C)<0 即可

也就是 C >|f^{}(0)| 的情況下,0點都是可能的最值點。

l1 相比於 l2 為什麼容易獲得稀疏解??

www.zhihu.com圖標

  • 當加入L2正則化的時候,分析和L1正則化是類似的,也就是說我們僅僅是從菱形變成了圓形而已,同樣還是求原曲線和圓形的切點作為最終解。當然與L1範數比,我們這樣求的L2範數的從圖上來看,不容易交在坐標軸上,但是仍然比較靠近坐標軸因此這也就是我們老說的,L2範數能讓解比較小(靠近0),但是比較平滑(不等於0)。

綜上所述,我們可以看見,加入正則化項,在最小化經驗誤差的情況下,可以讓我們選擇解更簡單(趨向於0)的解。

結構風險最小化: 在經驗風險最小化的基礎上(也就是訓練誤差最小化),儘可能採用簡單的模型,以此提高泛化預測精度。

因此,加正則化項就是結構風險最小化的一種實現。

貝葉斯先驗概率的角度:

現在再從貝葉斯學派的觀點來看看正則化,即是我們先假設要求的參數服從某種先驗分布,以線性回歸為例子,我們之前講過,用高斯分布的極大似然估計求線性回歸。

bingo醬:線性回歸求解的兩種表示(最小化均方誤差和基於高斯分布的極大似然估計)?

zhuanlan.zhihu.com圖標

1. 在我們求解的時候,我們假設Y|X; omega 服從 N(omega^{T}X,sigma) 的正太分布 ,即概率密度函數p(Y|X;omega) = N(omega^{T}X,sigma) ,然後利用極大似然估計求解參數 omega

max logprod_{i=1}^{m}p(y_{i}|x_{i};omega) 式子(4)

或者表示成常用的求極小值:

min -logprod_{i=1}^{m}p(y_{i}|x_{i};omega) 式子(5)

2. 在貝葉斯學派的觀點看來,如果我們先假設參數 omega 服從一種先驗分布 P(omega) ,那麼根據貝葉斯公式 P(omega|(X,Y)) sim P(Y|X;omega)*P(omega) ,那我們利用極大似然估計求參數 omega 的時候,現在我們的極大似然函數就變成了:

max logprod_{i=1}^{m}p(y_{i}|x_{i};omega)*p(omega) = logprod_{i=1}^{m}p(y_{i}|x_{i};omega) + logprod_{i=1}^{m}p(omega) 式子(6)

表示成求極小的情況就是:

min logprod_{i=1}^{m}p(y_{i}|x_{i};omega)*p(omega) = -logprod_{i=1}^{m}p(y_{i}|x_{i};omega) - logprod_{i=1}^{m}p(omega) 式(7)

對比式子(5)和式子(7),我們看到,式子(7)比式子(5)多了最後的一個求和項。

L1範數:

假設我們讓 omega 服從的分布為標準拉普拉斯分布,即概率密度函數為 1/2*exp(-|x|) ,那麼式子(7)多出的項就變成了 C||omega||_{1} ,其中C為常數了,重寫式子(7):

min logprod_{i=1}^{m}p(y_{i}|x_{i};omega)*p(omega) = -logprod_{i=1}^{m}p(y_{i}|x_{i};omega) +C||omega||_{1} 式子(8)

熟悉吧,這不就是加了L1範數的優化目標函數么。假設 omega 服從拉普拉斯分布的話,從下圖可以看出 omega 的值取到0的概率特別大。也就是說我們提前先假設了 omega 的解更容易取到0。

拉普拉斯分布

L2範數:

假設我們讓 omega 服從的分布為標準正太分布,即概率密度為 1/sqrt{2pi}*exp(-(x)^{2}/2) ,那麼式子(7)多出的項就成了 C||omega||_{2}^{2} ,其中C為常數,重寫式子(7):

min logprod_{i=1}^{m}p(y_{i}|x_{i};omega)*p(omega) = -logprod_{i=1}^{m}p(y_{i}|x_{i};omega) +C||omega|_{2}^{2} 式子(9)

熟悉吧,這不就是加了L2範數的優化目標函數么。假設 omega 服從標準正太分布的話,根據圖我們可以看出,其實我們就是預先假設了 omega 的最終值可能取到0附近的概率特別大。

高斯分布

因此最後來回答問題:

降低過擬合程度:

正則化之所以能夠降低過擬合的原因在於,正則化是結構風險最小化的一種策略實現。

給loss function加上正則化項,能使得新得到的優化目標函數h = f+normal,需要在f和normal中做一個權衡(trade-off),如果還像原來只優化f的情況下,那可能得到一組解比較複雜,使得正則項normal比較大,那麼h就不是最優的,因此可以看出加正則項能讓解更加簡單,符合奧卡姆剃刀理論,同時也比較符合在偏差和方差(方差表示模型的複雜度)分析中,通過降低模型複雜度,得到更小的泛化誤差,降低過擬合程度。

L1正則化和L2正則化:

L1正則化就是在loss function後邊所加正則項為L1範數,加上L1範數容易得到稀疏解(0比較多)。L2正則化就是loss function後邊所加正則項為L2範數的平方,加上L2正則相比於L1正則來說,得到的解比較平滑(不是稀疏),但是同樣能夠保證解中接近於0(但不是等於0,所以相對平滑)的維度比較多,降低模型的複雜度。

推薦閱讀:

TAG:範數 | 機器學習 | 面試 |