L0/L1/L2范數的聯系與區別
標簽(空格分隔): 機器學習
最近快被各大公司的筆試題淹沒了,其中有一道題是從貝葉斯先驗,優化等各個方面比較L0、L1、L2范數的聯系與區別。
L0范數
L0范數表示向量中非零元素的個數:
\(||x||_{0} = \#(i)\ with\ \ x_{i} \neq 0\)
也就是如果我們使用L0范數,即希望w的大部分元素都是0. (w是稀疏的)所以可以用於ML中做稀疏編碼,特征選擇。通過最小化L0范數,來尋找最少最優的稀疏特征項。但不幸的是,L0范數的最優化問題是一個NP hard問題,而且理論上有證明,L1范數是L0范數的最優凸近似,因此通常使用L1范數來代替。
L1范數 -- (Lasso Regression)
L1范數表示向量中每個元素絕對值的和:
\(||x||_{1} = \sum_{i=1}^{n}|x_{i}|\)
L1范數的解通常是稀疏性的,傾向於選擇數目較少的一些非常大的值或者數目較多的insignificant的小值。
L2范數 -- (Ridge Regression)
L2范數即歐氏距離:
\(||x||_{2} = \sqrt{\sum_{i=1}^{n}x_{i}^{2}}\)
L2范數越小,可以使得w的每個元素都很小,接近於0,但L1范數不同的是他不會讓它等於0而是接近於0.
L1范數與L2范數的比較:
但由於L1范數並沒有平滑的函數表示,起初L1最優化問題解決起來非常困難,但隨着計算機技術的到來,利用很多凸優化算法使得L1最優化成為可能。
貝葉斯先驗
從貝葉斯先驗的角度看,加入正則項相當於加入了一種先驗。即當訓練一個模型時,僅依靠當前的訓練數據集是不夠的,為了實現更好的泛化能力,往往需要加入先驗項。
- L1范數相當於加入了一個Laplacean先驗;
- L2范數相當於加入了一個Gaussian先驗。
如下圖所示:
【Reference】
1. http://blog.csdn.net/zouxy09/article/details/24971995
2. http://blog.sciencenet.cn/blog-253188-968555.html
3. http://t.hengwei.me/post/淺談l0l1l2范數及其應用.html