理解L1,L2 范數(shù)
L1,L2 范數(shù)即 L1-norm 和 L2-norm,自然,有L1、L2便也有L0、L3等等。因為在機(jī)器學(xué)習(xí)領(lǐng)域,L1 和 L2 范數(shù)應(yīng)用比較多,比如作為正則項在回歸中的使用 Lasso Regression(L1) 和 Ridge Regression(L2)。
因此,此兩者的辨析也總被提及,或是考到。不過在說明兩者定義和區(qū)別前,先來談?wù)勈裁词欠稊?shù)(Norm)吧。
什么是范數(shù)?
在線性代數(shù)以及一些數(shù)學(xué)領(lǐng)域中,norm 的定義是
a function that assigns a strictly positive length or size to each vector in a vector space, except for the zero vector. ——Wikipedia
簡單點說,一個向量的 norm 就是將該向量投影到 [0, ?) 范圍內(nèi)的值,其中 0 值只有零向量的 norm 取到。看到這樣的一個范圍,相信大家就能想到其與現(xiàn)實中距離的類比,于是在機(jī)器學(xué)習(xí)中 norm 也就總被拿來表示距離關(guān)系:根據(jù)怎樣怎樣的范數(shù),這兩個向量有多遠(yuǎn)。
上面這個怎樣怎樣也就是范數(shù)種類,通常我們稱?為p-norm,嚴(yán)格定義是:

其中當(dāng) p 取 1 時被稱為 1-norm,也就是提到的 L1-norm,同理 L2-norm 可得。
L1 和 L2 范數(shù)的定義
根據(jù)上述公式 L1-norm 和 L2-norm 的定義也就自然而然得到了。
先將 p=1 代入公式,就有了 L1-norm 的定義:

然后代入 p=2,L2-norm 也有了:

L2 展開就是熟悉的歐幾里得范數(shù):

題外話,其中 L1-norm 又叫做 taxicab-norm 或者 Manhattan-norm,可能最早提出的大神直接用在曼哈頓區(qū)坐出租車來做比喻吧。下圖中綠線是兩個黑點的 L2 距離,而其他幾根就是 taxicab 也就是 L1 距離,確實很像我們平時用地圖時走的路線了。

L1 和 L2 范數(shù)在機(jī)器學(xué)習(xí)上最主要的應(yīng)用大概分下面兩類
作為損失函數(shù)使用
作為正則項使用也即所謂 L1-regularization 和 L2-regularization
我們可以擔(dān)當(dāng)損失函數(shù)
先來看個回歸問題

我們需要做的是,獲得一條線,讓數(shù)據(jù)點到線上的總距離(也就是error)最小。
還記得之前在范數(shù)介紹中提到的用來表示距離嗎,于是也可以用能表示距離的 L1-norm 和 L2-norm 來作為損失函數(shù)了。
首先是 L1-norm 損失函數(shù),又被稱為 least absolute deviation (LAD,最小絕對偏差)

如果我們最小化上面的損失函數(shù),其實就是在最小化預(yù)測值 ? 和目標(biāo)值 ? 的絕對值。
之后是大家最熟悉的 L2-norm 損失函數(shù),又有大名最小二乘誤差 (least squares error, LSE):

這個便不多解釋了。
那么問題來了,這里不談挖掘機(jī),為什么大家一般都用 L2 損失函數(shù),卻不用 L1 呢?
這個就說來話長了,如果你問一個學(xué)習(xí)過微積分的同學(xué),如何求一個方程的最小值,他/她大概會想當(dāng)然的說:“求導(dǎo),置零,解方程?!?號稱微積分屆的農(nóng)夫三拳。
但如果給出一個絕對值的方程,突然就會發(fā)現(xiàn)農(nóng)夫三拳不管用了,求最小值就有點麻煩了。主要是因為絕對值的倒數(shù)是不連續(xù)的。
同樣的對于 L1 和 L2 損失函數(shù)的選擇,也會碰到同樣的問題,所以最后大家一般用 L2 損失函數(shù)而不用 L1 損失函數(shù)的原因就是:
因為計算方便!
可以直接求導(dǎo)獲得取最小值時各個參數(shù)的取值。
此外還有一點,用 L2 一定只有一條最好的預(yù)測線,L1 則因為其性質(zhì)可能存在多個最優(yōu)解。(更多關(guān)于L1 L2 損失函數(shù)參考索引5)
當(dāng)然 L1 損失函數(shù)難道就沒有什么好處了嗎,也是有的,那就是魯棒性 (Robust) 更強(qiáng),對異常值更不敏感。
我們還能擔(dān)當(dāng)正則項
因為機(jī)器學(xué)習(xí)中眾所周知的過擬合問題,所以用正則化防止過擬合,成了機(jī)器學(xué)習(xí)中一個非常重要的技巧。
但數(shù)學(xué)上來講,其實就是在損失函數(shù)中加個正則項(Regularization Term),來防止參數(shù)擬合得過好。
L1-regularization 和 L2-regularization 便都是我們常用的正則項,兩者公式的例子分別如下


這兩個正則項最主要的不同,包括兩點:
如上面提到的,L2 計算起來更方便,而 L1 在特別是非稀疏向量上的計算效率就很低;
還有就是 L1 最重要的一個特點,輸出稀疏,會把不重要的特征直接置零,而 L2 則不會;
最后,如之前多次提過,L2 有唯一解,而 L1 不是。
這里關(guān)于第二條輸出稀疏我想再進(jìn)行一些詳細(xì)講解,因為 L1 天然的輸出稀疏性,把不重要的特征都置為 0,所以它也是一個天然的特征選擇器。
可是為什么 L1 會有這樣的性質(zhì)呢,而 L2 沒有呢?這里用個直觀的例子來講解。
來一步一步看吧,首先獲知用梯度下降法來優(yōu)化時,需要求導(dǎo)獲得梯度,然后用以更新參數(shù)。

于是分別先對 L1 正則項和 L2 正則項來進(jìn)行求導(dǎo),可得。


之后將 L1 和 L2 和它們的導(dǎo)數(shù)畫在圖上


于是會發(fā)現(xiàn),在梯度更新時,不管 L1 的大小是多少(只要不是0)梯度都是1或者-1,所以每次更新時,它都是穩(wěn)步向0前進(jìn)。

而看 L2 的話,就會發(fā)現(xiàn)它的梯度會越靠近0,就變得越小。

也就是說加了 L1 正則的話基本上經(jīng)過一定步數(shù)后很可能變?yōu)?,而 L2 幾乎不可能,因為在值小的時候其梯度也會變小。于是也就造成了 L1 輸出稀疏的特性。