趋近智
在机器学习中,我们常需要量化向量的“大小”或“量级”。虽然我们能直观感知二维或三维空间中的长度,但表示数据特征的向量可能存在于高得多的维度中。我们需要一种统一的方法来衡量这种长度。在此,范数这个思想便派上用场。范数是一种函数,它将一个向量作为输入,并返回一个表示其量级的非负标量值。可以把它看作是长度这一想法的正式推广。
不同的范数以不同方式衡量长度,范数的选择对机器学习算法有重要影响,尤其是在正则化和误差计算等方面。接下来,我们来查看最常见的范数。
最常见的范数是L2范数,也称为欧几里得范数。它对应于向量的标准几何长度,计算方法是其分量平方和的平方根。对于一个n维向量 v=[v1,v2,...,vn],L2范数的定义如下:
∣∣v∣∣2=v12+v22+...+vn2=∑i=1nvi2
这本质上是勾股定理在高维空间中的推广。它表示从原点到向量所代表点的最短直线距离。
例子: 考虑向量 v=[3,4]。 其 L2 范数为: ∣∣v∣∣2=32+42=9+16=25=5
import numpy as np
v = np.array([3, 4])
l2_norm = np.linalg.norm(v) # 默认范数为L2
print(f"向量: {v}")
print(f"L2 范数: {l2_norm}")
# 输出:
# 向量: [3 4]
# L2 范数: 5.0
L2 范数衡量的是从原点 (0,0) 到点 (3,4) 的直接欧几里得距离。
在机器学习中,L2范数经常被使用:
另一个重要的范数是L1范数,常被称为曼哈顿范数或出租车范数。它不是将分量平方,而是将它们的绝对值相加:
∣∣v∣∣1=∣v1∣+∣v2∣+...+∣vn∣=∑i=1n∣vi∣
“曼哈顿范数”这个名称源于在网格状城市规划中导航的思路。你只能沿着网格线(就像城市街区一样)移动,而不能斜向移动。L1范数表示沿着这些轴线从原点到向量终点所走的总距离。
例子: 对于相同的向量 v=[3,4]。 其 L1 范数为: ∣∣v∣∣1=∣3∣+∣4∣=3+4=7
import numpy as np
v = np.array([3, 4])
l1_norm = np.linalg.norm(v, ord=1)
print(f"向量: {v}")
print(f"L1 范数: {l1_norm}")
# 输出:
# 向量: [3 4]
# L1 范数: 7.0
L1 范数衡量的是分量绝对值之和,就像沿着网格线从 (0,0) 移动到 (3,0) 然后再到 (3,4)。
L1范数在机器学习中有其独特的性质:
主要区别在于它们如何处理分量的大小。L2范数对值进行平方,从而对大分量施加重罚。L1范数取绝对值,对偏差进行线性处理。
当考虑所有范数为1的向量时,这种差异在视觉上很明显。对于L2范数,这形成一个圆形(在二维中)或超球体(在更高维中)。对于L1范数,这形成一个菱形(在二维中)或交叉多面体(在更高维中)。
二维空间中,表示 ∣∣v∣∣2=1(蓝色圆形)和 ∣∣v∣∣1=1(红色菱形)的几何形状。L1 菱形的“角”对应于坐标轴,这有助于它在优化问题中倾向于稀疏解(即某些分量恰好为零)。
L1和L2范数是更广泛的Lp范数家族的特殊情况,其定义为:
∣∣v∣∣p=(∑i=1n∣vi∣p)1/p
其中 p≥1。
另一个有时会遇到的范数是L∞范数(或最大范数),它是Lp范数当p趋于无穷时的极限。它简单地返回向量分量中的最大绝对值:
∣∣v∣∣∞=maxi∣vi∣
尽管L1和L2在许多机器学习应用中是主力,但了解一般的Lp家族能提供更广阔的视角。
理解向量范数十分重要,因为它们提供了衡量以下内容的方法:
能够有效地计算这些范数,通常使用NumPy等库,是实现和理解许多机器学习算法的核心能力。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
numpy.linalg.norm, NumPy Developers, 2023 - 用于计算各种向量和矩阵范数(包括$L_1$和$L_2$)的NumPy函数官方文档。© 2026 ApX Machine Learning用心打造