本文共 1242 字,大约阅读时间需要 4 分钟。
两个标量我们可以比较大小,比如1,2,我们知道2比1大。但是现在如果是两个向量(1,2,1) (2,2,0),我们如何比较大小呢?此时我们把一个向量通过不同的方法,映射到一个标量,从而可以比较大小,这个标量学名就叫做“范数”。
向量范数也可以分为0范数,1范数,2范数,p范数,
为方便理解,在介绍向量范数之前,我们先定义一个简单向量:
import numpy as npX = np.array([-2,5,0,-3,4])# X 为 [-2 5 0 -3 4]
0-范数
向量0-范数表示向量非零元的个数。
#向量零范数def norm_0(X): return sum([1 for x in X if x])norm_0(X)# X的零范数为 4
1-范数
向量1-范数也就是求X向量各元素之和。
#向量1-范数def norm_1(X): return sum([abs(x) for x in X])norm_1(X)# X的1-范数为 14
2-范数
向量2-范数又欧几里德范数,也就是求X向量各元素平方和,再开方。
#向量2-范数def norm_2(X): return (sum([x*x for x in X])) ** (1.0/2)norm_2(X)# X的2-范数为 7.348
p-范数
向量
#向量p-范数def norm_p(X,p): return (sum([abs(x)**p for x in X])) ** (1.0/p)norm_p(X,1) # p取1,结果为 14.0norm_p(X,2) # p取2,结果为 7.348norm_p(X,3) # p取3,结果为 6.073
所有向量元素绝对值的最大值。
#向量无穷-范数def norm_inf(X): return max([abs(x) for x in X])norm_inf(X) # X的无穷-范数为 5
所有向量元素绝对值的最小值。
#向量负无穷-范数def norm_finf(X): return min([abs(x) for x in X])norm_finf(X)# X的负无穷-范数为 0
向量范数毕竟是一维的,总体上来说还是易于理解的,接下来我们看看二维矩阵的范数情况~
1.正定性:
2.齐次性:
3.三角不等式:
机器学习中常用L1范数和L2范数来进行正则化,因为机器学习中往往需要最小化损失函数Loss function,而最小化Loss function的过程中,模型参数不加以限制就容易导致过拟合,所以我们使用L1范数和L2范数把参数向量转化成一个可以度量的标量,同时加上最小化的约束,就达到了控制模型参数的目的从而防止过拟合。
转载地址:http://dwhhp.baihongyu.com/