天天看點

L1正則化及其推導

在機器學習的Loss函數中,通常會添加一些正則化(正則化與一些貝葉斯先驗本質上是一緻的,比如L2L2正則化與高斯先驗是一緻的、L1L1正則化與拉普拉斯先驗是一緻的等等,在這裡就不展開讨論)來降低模型的結構風險,這樣可以使降低模型複雜度、防止參數過大等。大部分的課本和部落格都是直接給出了L1L1正則化的解釋解或者幾何說明來得到L1L1正則化會使參數稀疏化,本來會給出詳細的推導。

\(L1\)正則化及其推導

在機器學習的Loss函數中,通常會添加一些正則化(正則化與一些貝葉斯先驗本質上是一緻的,比如\(L2\)正則化與高斯先驗是一緻的、\(L1\)正則化與拉普拉斯先驗是一緻的等等,在這裡就不展開讨論)來降低模型的結構風險,這樣可以使降低模型複雜度、防止參數過大等。大部分的課本和部落格都是直接給出了\(L1\)正則化的解釋解或者幾何說明來得到\(L1\)正則化會使參數稀疏化,本來會給出詳細的推導。

\(L1\)正則化

大部分的正則化方法是在經驗風險或者經驗損失\(L_{emp}\)(emprirical loss)上加上一個結構化風險,我們的結構化風險用參數範數懲罰\(\Omega(\theta)\),用來限制模型的學習能力、通過防止過拟合來提高泛化能力。是以總的損失函數(也叫目标函數)為:

\[J(\theta; X, y) = L_{emp}(\theta; X, y) + \alpha\Omega(\theta) \tag{1.1}

\]

其中\(X\)是輸入資料,\(y\)是标簽,\(\theta\)是參數,\(\alpha \in [0,+\infty]\)是用來調整參數範數懲罰與經驗損失的相對貢獻的超參數,當\(\alpha = 0\)時表示沒有正則化,\(\alpha\)越大對應該的正則化懲罰就越大。對于\(L1\)正則化,我們有:

\[\Omega(\theta) = \|w\|_1 \tag{1.2}

其中\(w\)是模型的參數。

幾何解釋

L1正則化及其推導

圖1 上面中的藍色輪廓線是沒有正則化損失函數的等高線,中心的藍色點為最優解,左圖、右圖分别為$L2$、$L1$正則化給出的限制。

可以看到在正則化的限制之下,\(L2\)正則化給出的最優解\(w^*\)是使解更加靠近原點,也就是說\(L2\)正則化能降低參數範數的總和。\(L1\)正則化給出的最優解\(w^*\)是使解更加靠近某些軸,而其它的軸則為0,是以\(L1\)正則化能使得到的參數稀疏化。

解析解的推導

有沒有偏置的條件下,\(\theta\)就是\(w\),結合式\((1.1)\)與\((1.2)\),我們可以得到\(L1\)正則化的目标函數:

\[J(w; X, y) = L_{emp}(w; X, y) + \alpha\|w\|_1 \tag{3.1}

我們的目的是求得使目标函數取最小值的\(w^*\),上式對\(w\)求導可得:

\[\nabla_w J(w; X, y) = \nabla_w L_{emp}(w; X, y) + \alpha \cdot sign(w) \tag{3.2}

其中若\(w>0\),則\(sign(w)=1\);若\(w<0\),則\(sign(w) = -1\);若\(w=0\),則\(sign(w)=0\)。當\(\alpha = 0\),假設我們得到最優的目标解是\(w^*\),用秦勤公式在\(w^*\)處展開可以得到(要注意的\(\nabla J(w^*)=0\)):

\[J(w; X, y) = J(w^*; X, y) + \frac{1}{2}(w - w^*)H(w-w^*) \tag{3.3}

其中\(H\)是關于\(w\)的Hessian矩陣,為了得到更直覺的解,我們簡化\(H\),假設\(H\)這對角矩陣,則有:

\[H = diag([H_{1,1},H_{2,2}...H_{n,n}]) \tag{3.4}

将上式代入到式\((3.1)\)中可以得到,我們簡化後的目标函數可以寫成這樣:

\[J(w;X,y)=J(w^*;X,y)+\sum_i\left[\frac{1}{2}H_{i,i}(w_i-w_i^*)^2 + \alpha_i|w_i| \right] \tag{3.5}

從上式可以看出,\(w\)各個方向的導數是不相關的,是以可以分别獨立求導并使之為0,可得:

\[H_{i,i}(w_i-w_i^*)+\alpha \cdot sign(w_i)=0 \tag{3.6}

我們先直接給出上式的解,再來看推導過程:

\[w_i = sign(w^*) \max\left\{ |w_i^*| - \frac{\alpha}{H_{i,i}},0 \right\} \tag{3.7}

從式\((3.5)\)與式\((3.6)\)可以得到兩點:

  • 1.可以看到式\((3.5)\)中的二次函數是關于\(w^*\)對稱的,是以若要使式\((3.5)\)最小,那麼必有:\(|w_i|<|w^*|\),因為在二次函數值不變的程式下,這樣可以使得\(\alpha|w_i|\)更小。
  • 2.\(sign(w_i)=sign(w_i^*)\)或\(w_1=0\),因為在\(\alpha|w_i|\)不變的情況下,\(sign(w_i)=sign(w_i^*)\)或\(w_i=0\)可以使式\((3.5)\)更小。

由式\((3.6)\)與上述的第2點:\(sign(w_i)=sign(w_i^*)\)可以得到:

\[\begin{split}

0 &= H_{i,i}(w_i-w_i^*)+\alpha \cdot sign(w_i^*) \cr

w_i &= w_i^* - \frac{\alpha}{H_{i,i}}sign(w_i^*) \cr

w_i &= sign(w_i^*)|w_i^*| - \frac{\alpha}{H_{i,i}}sign(w_i^*)\cr

&=sign(w_i^*)(|w_i^*| - \frac{\alpha}{H_{i,i}}) \cr

\end{split} \tag{3.8}

我們再來看一下第2點:\(sign(w_i)=sign(w_i^*)\)或\(w_1=0\),若\(|w_i^*| < \frac{\alpha}{H_{i,i}}\),那麼有\(sign(w_i) \neq sign(w_i^*)\),是以這時有\(w_1=0\),由于可以直接得到解式\((3.7)\)。

從這個解可以得到兩個可能的結果:

  • 1.若\(|w_i^*| \leq \frac{\alpha}{H_{i,i}}\),正則化後目标中的\(w_i\)的最優解是\(w_i=0\)。因為這個方向上\(L_{emp}(w; X, y)\)的影響被正則化的抵消了。
  • 2.若\(|w_i^*| > \frac{\alpha}{H_{i,i}}\),正則化不會推最優解推向0,而是在這個方面上向原點移動了\(\frac{\alpha}{H_{i,i}}\)的距離。

【防止爬蟲轉載而導緻的格式問題——連結】:http://www.cnblogs.com/heguanyou/p/7582578.html

繼續閱讀