最近搞深度學習用到了范數的概念(準確地說是向量范數),我在這里作一下簡單的解釋,未必100%準確,但是對我來說已經夠用了。
首先,在試圖理解之前,我們先看一下它們的數學定義:
1-范數:
2-范數:
或
p-范數:
或
∞-范數:
-∞-范數:
由上面的數學表達式,我們可以歸納一下:除了兩個無窮范數以外,剩下的范數都是一個規(guī)律,即n范數就是一堆數字的n次方之和再開個n次方的根號;或者說,n范數就是一堆數字的n次方之和的n次方根。這是從計算方法層面上的認知。
那么從物理意義上又該如何認識和理解呢?
通過上面的觀察可知,范數首先是一個函數。其次,范數表征了距離這個物理量,可以用于比較不同的向量。
一維情況下,假設有1和2兩個數,我們可以直接比較它們的大?。?>1。
但是在二維情況下呢?例如,我們如何比較(0,6)和(3,4)?
這時候我們可以使用范數,比如2-范數:
(0,6)的2-范數結果是6,(3,4)的2-范數結果是5。按照范數是函數的思想,我們也可以說,2-范數這個函數把(0,6)映射到了實數6,把(3,4)映射到了5。這樣我們就得到了兩個實數,就可以將它們進行比較了。
我們最熟悉的應該就是2-范數,它常被用來計算兩個點的歐氏距離。
我們上面談到范數的計算方法層面的理解時,用了大白話的方式,并不是準確的數學語言,主要是為了讓你對范數有一個直觀上的理解。下面我們用稍嚴謹一些的語言來闡釋一個常用的情況,即2-范數,來看看我們是如何利用2-范數來求歐氏距離的。
我們在上面說,“n范數就是一堆數字的n次方之和的n次方根”,這里所謂的“一堆數字”,實際上是一個向量的多個維度的坐標。我們假設這個向量x = (x1, x2, x3, x4, x5),這一堆數字實際上就是x1, x2, x3, x4, x5,就是向量x在空間中的五個維度上的度量(或“刻度值”)。當我們把x的各維度平方求和再開平方之后,得到的數值表示什么意義呢?還記得我們說范數可以表征距離嗎?

其實這個式子就相當于:

也就是說,x的2-范數表示了x這個點與空間原點的距離,也相當于x這個向量的長度。
所以,當我們想求一個向量的長度或者兩點間的距離時,可以用2-范數。
例如,在python中,借助numpy庫,我們可以這樣寫:
# 計算向量x的模
import numpy as np
x = np.array([1,2,3])
print(np.linalg.norm(x, ord=2)) # 此處的ord=2就指定了我們在求2-范數,當然不寫也可以,因為norm函數默認就是求2-范數。
# 計算兩個點,p和q的歐氏距離
import numpy as np
p = np.array([2,3,3])
q = np.array([6,6,6])
print(np.linalg.norm(p-q, ord=2))






