机器学习中的向量范数介绍
计算向量的长度或大小通常需要直接作为机器学习中的正则化方法,或者作为更广泛的向量或矩阵运算的一部分。
在本教程中,你将了解计算矢量长度或幅值(称为矢量范数)的不同方法。
完成本教程后,你将了解:
- 作为向量绝对值之和计算的L1范数。
- 作为向量值平方和的平方根计算的L2范数。
- 作为最大向量值计算的最大范数。
我们开始吧。
教程概述
本教程分为4个部分,它们是:
- 向量范数。
- 向量L1范数。
- 向量L2范数。
- 向量最大范数。
向量范数
通常需要直接或作为更广泛的向量或向量矩阵运算的一部分来计算向量的大小或长度。
矢量的长度称为矢量范数或矢量的大小。
向量的长度是描述向量在空间中的范围的非负数,有时被称为向量的大小或范数。
向量的长度始终为正数,但向量的值全为零时除外。它是使用某种度量来计算的,该度量总结了向量到向量空间原点的距离。例如,具有3个元素的向量空间的原点是(0,0,0)。
符号用于在更广泛的计算中表示向量范数,并且向量范数计算的类型几乎总是有其自己的唯一符号。
我们将看看机器学习中使用的几个常见的向量范数计算。
向量L1范数
矢量的长度可以使用L1范数计算,其中1是L的上标,例如L^1。
向量的L1范数的记号是||v||1,其中1是下标。因此,这个长度有时被称为出租车标准或曼哈顿标准。
l1(v) = ||v||1
L1范数计算为绝对向量值之和,其中标量的绝对值使用记号|A1|。实际上,范数是从向量空间的原点到曼哈顿距离的计算。
||v||1 = |a1| + |a2| + |a3|
向量的L1范数可以使用带有指定范数顺序的参数的Norm()函数以NumPy的形式计算,在本例中为1。
# l1 norm of a vector from numpy import array from numpy.linalg import norm a = array([1, 2, 3]) print(a) l1 = norm(a, 1) print(l1)
首先定义一个1×3的向量,然后计算该向量的L1范数。
运行该示例首先打印定义的向量,然后打印向量的L1范数。
[1 2 3] 6.0
当拟合机器学习算法时,通常使用L1范数作为正则化方法,例如,保持模型的系数小的方法,进而降低模型的复杂性。
向量L2范数
矢量的长度可以使用L2范数计算,其中2是L的上标,例如L^2。
向量的L2范数的记号是||v||2,其中2是下标。
l2(v) = ||v||2
L2范数计算矢量坐标到矢量空间原点的距离。因此,它也被称为欧几里德范数,因为它被计算为到原点的欧几里得距离。结果为正距离值。
L2范数计算为向量值平方和的平方根。
||v||2 = sqrt(a1^2 + a2^2 + a3^2)
可以使用带有默认参数的Norm()函数以NumPy计算向量的L2范数。
# l2 norm of a vector from numpy import array from numpy.linalg import norm a = array([1, 2, 3]) print(a) l2 = norm(a) print(l2)
首先定义一个1×3的向量,然后计算该向量的L2范数。
运行该示例首先打印定义的向量,然后打印向量的L2范数。
[1 2 3] 3.74165738677
与L1范数一样,当拟合机器学习算法时,L2范数通常用作正则化方法,例如保持模型系数小并且进而降低模型复杂性的方法。
到目前为止,在机器学习中,L2范数比其他向量范数更常用。
向量最大范数
矢量的长度可以使用最大范数(也称为最大范数)来计算。
向量的最大范数称为L^inf,其中inf是上标,可以用无穷大符号表示。最大范数的符号是||x||inf,其中inf是一个下标。
maxnorm(v) = ||v||inf
最大范数的计算方法是返回向量的最大值,因此得名。
||v||inf = max(|a1|, |a2|, |a3|)
可以使用order参数设置为inf的norm()函数在NumPy中计算向量的最大范数。
# max norm of a vector from numpy import inf from numpy import array from numpy.linalg import norm a = array([1, 2, 3]) print(a) maxnorm = norm(a, inf) print(maxnorm)
首先定义一个1×3的向量,然后计算该向量的最大范数。
运行该示例首先打印定义的向量,然后打印向量的最大范数。
[1 2 3] 3.0
在机器学习中,最大范数也被用作正则化,例如关于神经网络权重的正则化,称为最大范数正则化。
拓展
本节列出了一些你可能希望了解的扩展教程的想法。
- 使用你自己的数据,使用每个操作创建5个示例。
- 手动实现定义为列表列表的矩阵的每个矩阵运算。
- 搜索机器学习论文,找到正在使用的每个操作的一个示例。
进一步阅读
如果你想深入了解,本节提供了更多关于该主题的资源。
书籍
API接口
文章
摘要
在本教程中,你了解了计算矢量长度或幅值的不同方法,称为矢量范数。
具体地说,你了解到:
- 作为向量绝对值之和计算的L1范数。
- 作为向量值平方和的平方根计算的L2范数。
- 作为最大向量值计算的最大范数。