在機器學習的Loss函數中,一般會添加一些正則化(正則化與一些貝葉斯先驗本質上是一致的,好比\(L2\)正則化與高斯先驗是一致的、\(L1\)正則化與拉普拉斯先驗是一致的等等,在這裏就不展開討論)來下降模型的結構風險,這樣能夠使下降模型複雜度、防止參數過大等。大部分的課本和博客都是直接給出了\(L1\)正則化的解釋解或者幾何說明來獲得\(L1\)正則化會使參數稀疏化,原本會給出詳細的推導。html
大部分的正則化方法是在經驗風險或者經驗損失\(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} \]spa
其中\(w\)是模型的參數。htm
能夠看到在正則化的限制之下,\(L2\)正則化給出的最優解\(w^*\)是使解更加靠近原點,也就是說\(L2\)正則化能下降參數範數的總和。\(L1\)正則化給出的最優解\(w^*\)是使解更加靠近某些軸,而其它的軸則爲0,因此\(L1\)正則化能使獲得的參數稀疏化。blog
有沒有偏置的條件下,\(\theta\)就是\(w\),結合式\((1.1)\)與\((1.2)\),咱們能夠獲得\(L1\)正則化的目標函數:get
\[ J(w; X, y) = L_{emp}(w; X, y) + \alpha\|w\|_1 \tag{3.1} \]博客
咱們的目的是求得使目標函數取最小值的\(w^*\),上式對\(w\)求導可得:it
\[ \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)\)能夠獲得兩點:
由式\((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)\)。
從這個解能夠獲得兩個可能的結果:
【防止爬蟲轉載而致使的格式問題——連接】:http://www.cnblogs.com/heguanyou/p/7582578.html