购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.5 范数

数有大小,向量也有大小,向量的大小我们通过范数(Norm)来衡量。范数在机器学习、深度学习中运用非常广泛,特别在限制模型复杂度、提升模型的泛化能力方面效果不错。p范数的定义如下:

其中p∈R,P≥1。

直观上来看,向量x的范数是度量从原点到点x的距离,范数是将向量映射到非负值的函数,如果从广义来说,任意一个满足以下三个条件的函数,都可称为范数:

1)非负性:f(x)≥0,且当f(x)=0时,必有x=0;

2)三角不等式性:f(x+y)≤f(x)+f(y);

3)齐次性:∀α∈R,∀x∈R n , f (αx) =|α | f(x)。

当p=1时,即L 1 范数,也称为绝对值范数,大小等于向量每个元素的绝对值之和,即:

当p=2时,即L 2 范数,也称为欧几里得范数,其大小表示从原点到当前点的欧几里得距离,即:

当p为∞时,即L 范数,也称为最大范数,它的值等于向量中每个元素的绝对值的最大值,即:

前面主要介绍了利用范数来度量向量的大小,那么矩阵的大小如何度量呢?我们可以用类似的方法。在深度学习中,常用Frobenius范数来描述,即:

它有点类似向量的L 2 范数。

两个向量的点积可以用范数来表示,即:

其中θ表示x与y之间的夹角。

以上说了向量的一种度量方式,即通过范数来度量向量或矩阵的大小,并有具体公式,在实际编程中如何计算向量的范数呢?这里我们还是以Python为例进行说明。


import numpy  as np
import numpy.linalg as LA      #导入Numpy中线性代数库
x=np.arange(0,1,0.1)  #自动生成一个[0,1)间的10个数,步长为0.1
print(x)

x1= LA.norm(x,1)            #计算1范数
x2= LA.norm(x,2)            #计算2范数
xa=LA.norm(x,np.inf)        #计算无穷范数
print(x1)
print(x2)
print(xa)

打印结果如下:


[ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9]
4.5
1.68819430161
0.9

由此看出利用Python求向量的范数还是很方便的。 G/9wq0x7/RGynqCB4jEUZXNNFlURiWfJPYUh7QwvIugIq0AljLHNJGkziaoBgl8r

点击中间区域
呼出菜单
上一章
目录
下一章
×