通常我们用范数(norm
)来衡量向量,向量的 $L_p$ 范数定义为:
除了 $L_p$ 范数,范数还可以有很多定义方式,事实上,任何将向量映射为实数的函数 $f(\mathbf x)$ 只要满足以下条件,都是合法的范数:
$L^2$ 范数,即通常所说的欧几里得范数(Euclidean norm
),是向量 $\mathbf x$ 到坐标原点的欧几里得距离。因为它用的太广泛,所以我们通常省略其下标 2,将其记为 $\|\mathbf x\|$。
有时候也用 $L^2$ 范数的平方来衡量向量:$\bf x^\top x$。事实上,$L^2$ 范数的平方在计算上更为便利,例如它的对 $\mathbf x$ 梯度的各个分量只依赖于 $\mathbf x$ 的对应的各个分量,而 $L^2$ 范数对 $\mathbf x$ 梯度的各个分量要依赖于整个 $\mathbf x$ 向量。
$L^2$ 范数并不一定适用于所有的情况,它在原点附近的增长就十分缓慢,因此不适用于需要区别 0 和非常小但是非 0 值的情况。在这种情况下,$L_1$ 范数就是一个比较好的选择,它在所有方向上的增长速率都是一样的,定义为:
$$\|\mathbf x\|_1 = \sum_{i} |x_i|$$它经常使用在需要区分 0 和非零元素的情形中。
有时候我们需要衡量向量中非零元素的个数,有些人将其称为“$L^0$ 范数”,但是这并不严谨,因为它并不是一个范数(不满足三角不等式和数乘)。$L^1$ 范数可以作为它的一个替代。
另一个常使用的范数是 $L^{\infty}$ 范数,它在数学上是向量元素绝对值的最大值,因此也被叫做 max norm
:
内积可以写成范数的形式,其中 $\theta$ 是两个向量的夹角:
$$ \mathbf{x^\top y} = \mathbf{\|x\|\|y\|} \cos \theta $$有时候我们想衡量一个矩阵,机器学习中通常使用的是 F
范数(Frobenius norm
),其定义为:
或者叫做矩阵的 $L^2$ 范数。