\(L1\)正則化及其推導
在機器學習的Loss函數中,通常會添加一些正則化(正則化與一些貝葉斯先驗本質上是一致的,比如\(L2\)正則化與高斯先驗是一致的、\(L1\)正則化與拉普拉斯先驗是一致的等等,在這里就不展開討論)來降低模型的結構風險,這樣可以使降低模型復雜度、防止參數過大等。大部分的課本和博客都是直接給出了\(L1\)正則化的解釋解或者幾何說明來得到\(L1\)正則化會使參數稀疏化,本來會給出詳細的推導。
\(L1\)正則化
大部分的正則化方法是在經驗風險或者經驗損失\(L_{emp}\)(emprirical loss)上加上一個結構化風險,我們的結構化風險用參數范數懲罰\(\Omega(\theta)\),用來限制模型的學習能力、通過防止過擬合來提高泛化能力。所以總的損失函數(也叫目標函數)為:
其中\(X\)是輸入數據,\(y\)是標簽,\(\theta\)是參數,\(\alpha \in [0,+\infty]\)是用來調整參數范數懲罰與經驗損失的相對貢獻的超參數,當\(\alpha = 0\)時表示沒有正則化,\(\alpha\)越大對應該的正則化懲罰就越大。對於\(L1\)正則化,我們有:
其中\(w\)是模型的參數。
幾何解釋
可以看到在正則化的限制之下,\(L2\)正則化給出的最優解\(w^*\)是使解更加靠近原點,也就是說\(L2\)正則化能降低參數范數的總和。\(L1\)正則化給出的最優解\(w^*\)是使解更加靠近某些軸,而其它的軸則為0,所以\(L1\)正則化能使得到的參數稀疏化。
解析解的推導
有沒有偏置的條件下,\(\theta\)就是\(w\),結合式\((1.1)\)與\((1.2)\),我們可以得到\(L1\)正則化的目標函數:
我們的目的是求得使目標函數取最小值的\(w^*\),上式對\(w\)求導可得:
其中若\(w>0\),則\(sign(w)=1\);若\(w<0\),則\(sign(w) = -1\);若\(w=0\),則\(sign(w)=0\)。當\(\alpha = 0\),假設我們得到最優的目標解是\(w^*\),用秦勤公式在\(w^*\)處展開可以得到(要注意的\(\nabla J(w^*)=0\)):
其中\(H\)是關於\(w\)的Hessian矩陣,為了得到更直觀的解,我們簡化\(H\),假設\(H\)這對角矩陣,則有:
將上式代入到式\((3.1)\)中可以得到,我們簡化后的目標函數可以寫成這樣:
從上式可以看出,\(w\)各個方向的導數是不相關的,所以可以分別獨立求導並使之為0,可得:
我們先直接給出上式的解,再來看推導過程:
從式\((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^*)\)可以得到:
我們再來看一下第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