什麼是範數?
我們知道距離的定義是一個寬泛的概念,只要滿足非負、自反、三角不等式就可以稱之為距離。範數是一種強化了的距離概念,它在定義上比距離多了一條數乘的運演算法則。有時候為了便於理解,我們可以把範數當作距離來理解。
在數學上,範數包括向量範數和矩陣範數,向量範數表徵向量空間中向量的大小,矩陣範數表徵矩陣引起變化的大小。一種非嚴密的解釋就是,對應向量範數,向量空間中的向量都是有大小的,這個大小如何度量,就是用範數來度量的,不同的範數都可以來度量這個大小,就好比米和尺都可以來度量遠近一樣;對於矩陣範數,學過線性代數,我們知道,透過運算,可以將向量X變化為B,矩陣範數就是來度量這個變化大小的。
這裡簡單地介紹以下幾種向量範數的定義和含義
1、 L-P範數
與閔可夫斯基距離的定義一樣,L-P範數不是一個範數,而是一組範數,其定義如下:
根據P 的變化,範數也有著不同的變化,一個經典的有關P範數的變化圖如下:
上圖表示了p從無窮到0變化時,三維空間中到原點的距離(範數)為1的點構成的圖形的變化情況。以常見的L-2範數(p=2)為例,此時的範數也即歐氏距離,空間中到原點的歐氏距離為1的點構成了一個球面。實際上,在0時,Lp並不滿足三角不等式的性質,也就不是嚴格意義下的範數。以p=0.5,二維座標(1,4)、(4,1)、(1,9)為例,
因此這裡的L-P範數只是一個概念上的寬泛說法。
2、L-0範數
當P=0時,也就是L0範數,由上面可知,L0範數並不是一個真正的範數,它主要被用來度量向量中非零元素的個數。用上面的L-P定義可以得到的L-0的定義為:
這裡就有點問題了,我們知道非零元素的零次方為1,但零的零次方,非零數開零次方都是什麼鬼,很不好說明L0的意義,所以在通常情況下,大家都用的是:
表示向量中非零元素的個數。對於L0範數,其最佳化問題為:
在實際應用中,由於L0範數本身不容易有一個好的數學表示形式,給出上面問題的形式化表示是一個很難的問題,故被人認為是一個NP難問題。所以在實際情況中,L0的最優問題會被放寬到L1或L2下的最最佳化。
3、L-1範數
L1範數是我們經常見到的一種範數,它的定義如下:
表示向量中非零元素的絕對值之和。L1範數有很多的名字,例如我們熟悉的曼哈頓距離、最小絕對誤差等。使用L1範數可以度量兩個向量間的差異,如絕對誤差和(Sum of Absolute Difference):
對於L1範數,它的最佳化問題如下:
由於L1範數的天然性質,對L1最佳化的解是一個稀疏解,因此L1範數也被叫做稀疏規則運算元。透過L1可以實現特徵的稀疏,去掉一些沒有資訊的特徵,例如在對使用者的電影愛好做分類的時候,使用者有100個特徵,可能只有十幾個特徵是對分類有用的,大部分特徵如身高體重等可能都是無用的,利用L1範數就可以過濾掉。
4、L-2範數
L2範數是我們最常見最常用的範數了,我們用的最多的度量距離歐氏距離就是一種L2範數,它的定義如下:
表示向量元素的平方和再開平方。
像L1範數一樣,L2也可以度量兩個向量間的差異,如平方差和(Sum of Squared Difference):
對於L2範數,它的最佳化問題如下:
L2範數通常會被用來做最佳化目標函式的正則化項,防止模型為了迎合訓練集而過於複雜造成過擬合的情況,從而提高模型的泛化能力。
5、L- ∞範數
當P=∞時,也就是L-∞範數,它主要被用來度量向量元素的最大值。用上面的L-P定義可以得到的L的定義為:
與L0一樣,在通常情況下,大家都用的是:
來表示。