淺談L0,L1,L2範數及其應用

博客原文傳送門:點擊打開鏈接


淺談L0,L1,L2範數及其應用

在線性代數,函數分析等數學分支中,範數(Norm)是一個函數,其賦予某個向量空間(或矩陣)中的每個向量以長度或大小。對於零向量,另其長度爲零。直觀的說,向量或矩陣的範數越大,則我們可以說這個向量或矩陣也就越大。有時範數有很多更爲常見的叫法,如絕對值其實便是一維向量空間中實數或複數的範數,而Euclidean距離也是一種範數。

範數的一般化定義:設p1的實數,p-norm定義爲:

||x||p:=(i=1nxip)1p(1)
此處,當p=1時,我們稱之爲taxicab Norm,也叫Manhattan Norm。其來源是曼哈頓的出租車司機在四四方方的曼哈頓街道中從一點到另一點所需要走過的距離。也即我們所要討論的l1範數。其表示某個向量中所有元素絕對值的和。 而當p=2時,則是我們最爲常見的Euclidean norm。也稱爲Euclidean distance。也即我們要討論的l2範數。 而當p=0時,因其不再滿足三角不等性,嚴格的說此時p已不算是範數了,但很多人仍然稱之爲l0範數。 這三個範數有很多非常有意思的特徵,尤其是在機器學習中的正則化(Regularization)以及稀疏編碼(Sparse Coding)有非常有趣的應用。
下圖給出了一個Lp球的形狀隨着P的減少的可視化圖。lp ball

1- L0 範數

雖然L0嚴格說不屬於範數,我們可以採用等式1來給出l0-norm得定義:

||x||0:=0i=0nx0i(2)
上面的公式仍然讓人不是很明白,0的指數和平方根嚴格意義上是受限條件下才成立的。因此在實際應用中,多數人給出下面的替代定義:
||x||0=#(i)withxi0(3)
其表示向量中所有非零元素的個數。正是L0範數的這個屬性,使得其非常適合機器學習中稀疏編碼,特徵選擇的應用。通過最小化L0範數,來尋找最少最優的稀疏特徵項。但不幸的是,L0範數的最小化問題在實際應用中是NP難問題。因此很多情況下,L0優化問題就會被relaxe爲更高維度的範數問題,如L1範數,L2範數最小化問題。

2- L1 範數

對於向量X,其L1範數的定義如下:

||x||1:=i=1nxi(4)
其應用範圍非常的廣泛。如在計算機視覺中的Sum of Absolute DifferentsMean Absolute Error,都是利用L1範式的定義。
L1最優化問題的解是稀疏性的,其傾向於選擇很少的一些非常大的值和很多的insignificant的小值。而L2最優化則更多的非常少的特別大的值,卻又很多相對小的值,但其仍然對最優化解有significant的貢獻。但從最優化問題解的平滑性來看,L1範數的最優解相對於L2範數要少,但其往往是最優解,而L2的解很多,但更多的傾向於某種局部最優解。
l1 norml2 norm
但由於L1範數並沒有平滑的函數表示,起初L1最優化問題解決起來非常困難,但隨着計算機技術的到來,利用很多凸優化算法使得L1最優化成爲可能。

3- L2 範數

當然範數中最常見,也最著名的非L2範數莫屬。其應用也幾乎包括科學和工程的各個領域。定義公式如下:

||x||2:=i=1nx2i(5)
也Euclidean Norm,如果用於計算兩個向量之間的不同,即是Euclidean Distance.
歐幾里德範數的最優化問題可以用如下公式表述:
min||x||2subjecttoAx=b(6)
藉助拉格朗日乘子,我們便可以解決該最優化問題。由L2衍生,我們還可以定義無限norm,即l-infinity norm:
||x||:=i=1nxi(7)
一眼看上去上面的公式還是有點tricky的。我們通過一個簡單的數學變換,假設X_j是向量中最大的元素,則根據無限大的特性,我們可以得到:
xj>>xiji
則可知
i=1nxi=xj
則根據公式(7)的定義,我們可以得到:
||x||=i=1nxi=xj=xj
因此我們便可以說l-infinity norm是X向量中最大元素的長度。
||x||=max(xj)(8)

4- 機器學習中的應用

不知道有多少人是因爲機器學習中的正則化和特徵選擇等纔開始瞭解這些範數的,至少我是。L0範數本身是特徵選擇的最直接最理想的方案,但如前所述,其不可分,且很難優化,因此實際應用中我們使用L1來得到L0的最優凸近似。L2相對於L1具有更爲平滑的特性,在模型預測中,往往比L1具有更好的預測特性。當遇到兩個對預測有幫助的特徵時,L1傾向於選擇一個更大的特徵。而L2更傾向把兩者結合起來。

4-1 正則化

在機器學習中正則化是指在損失函數中通過引入一些額外的信息,來防止ill-posed問題或過擬合問題。一般這些額外的信息是用來對模型複雜度進行懲罰(Occam's razor)。其一般形式如下:

Loss(X,Y)=Error(X,Y)+αw(9)
w便可以選取L1或是L2範數來作爲懲罰項,不同的模型,其損失函數也不同,對於線性迴歸而言,如果懲罰項選擇L1,則是我們所說的Lasso迴歸,而L2則是Ridge迴歸。下面我們列出了不同模型中的正則化的損失函數(來自Andrew Ng的Machine Learning課程):
Regularized Logistic Regression
J(θ)=1m[i=imy(i)loghθ(x(i))+(1y(i))log(1hθ(x(i)))]+λ2mj=1nθ2j
Regularized Neural Network
J(θ)=1m[i=imk=1Ky(i)klog(hθ(x(i)))k+(1y(i))log(1(hθ(x(i)))k)]+λ2ml=1L1i=1slj=1sl+1(θ(l)ji)2
Soft Margin SVM
12|w|2+Cimax(0,1yi(wxi+b))
從上面可以看出常用的正則化項多是L2範數,除了防止過擬合的問題,還有一個好處就是能否改善ill-posed(condition)問題。尤其是當訓練樣本相對於特徵數非常少時,其矩陣便是非滿秩的,往往傾向於有無數個解,且是不可逆的。其condition num便會很大。一方面,根據此得到的最優化值很不穩定,往往某個特徵變量很小的變動都會引發最終結果較大的偏差。另外通過矩陣求逆從而求的最優解就會變的非常困難。如對於線性迴歸而言,求的最優解析解爲:
wˆ=(XTX)1XTy
而加上L2正則項後,其變爲:
w=(XTX+λI)1XTy
從而可以直接求逆,改善了condition number。
而對於無解析解,通過迭代優化的算法,L2正則化通過將目標函數變爲λ-strongly convex(λ強凸),有效的加快了其收斂速度。

4-2 貝葉斯先驗

正則化項從貝葉斯學習理論的角度來看,其相當於一種先驗函數。即當你訓練一個模型時,僅僅依靠當前的訓練集數據是不夠的,爲了實現更好的預測(泛化)效果,我們還應該加上先驗項。而L1則相當於設置一個Laplacean先驗,去選擇MAP(maximum a posteriori)假設。而L2則類似於 Gaussian先驗。如下圖所示:bayes l1, l2
從上圖可以看出,L1先驗對大值和小值的tolerate都很好,而L2先驗則傾向於均勻化大值和小值。

4-3 特徵選擇與稀疏編碼

機器學習社區裏通常把特徵選擇的方法分爲三種。一種是基於統計學的一些方法,對特徵進行預篩選,選出子集作爲模型輸入。如統計推理使用的假設檢驗,P值。另一種是採用某種成熟的學習算法進行特徵選擇,如決策樹中採用信息增益來選擇特徵。還有一種便是在模型算法中進行自動特徵選擇。而L1範數作爲正則化項,其特徵選擇的圖譜傾向於spiky,實現了有效的特徵選擇。
稀疏編碼也是想通過尋找儘可能少的特徵表達某個輸入的向量X。

mina(j)i,ϕij=1mx(j)i=1ka(j)iϕi2+λi=1kS(a(j)i)
其中ϕi是所要尋找的基向量,a(j)i是我們要優化的各個基向量的權重。最右邊的表達式便是其正則化懲罰項,在這裏也稱Sparse Cost。實際中我們通常便用L1範數。

5 參考

[1.] Wiki: Norm.
[2.] Rorasa's blog.
[3.] MaxJax.
[4.] 機器學習中的範數規範化.
[5.] Difference between l1 and l2.
[6.] gradient-descent-wolfe-s-condition-and-logistic-regression.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章