范数是来衡量向量大小的一个指标,从形式上 $L^p$ 范数定义如下:

  其中 $p \in \mathbb{R}, p \geq 1$。

  范数(包括 $L^p$ 范数)是将向量映射到非负值的函数,从直观上来看,向量 $x$ 的范数衡量从原点到 $x$ 的距离。

  从定义上讲,范数是满足以下性质的任意函数:

  1. $\forall \boldsymbol{x} \in \mathbb{R}^n$,$f(\boldsymbol{x})\geq 0$ (非负性,non-negativity)
  2. $f(\boldsymbol{x})=0 \Rightarrow \boldsymbol{x}=\mathbf{0}$ (确定性,definiteness)
  3. $f(\boldsymbol{x}+\boldsymbol{y}) \leq f(\boldsymbol{x})+f(\boldsymbol{y})$ (三角不等式,triangle inequality)
  4. $\forall \alpha \in \mathbb{R}$,$f(\alpha \boldsymbol{x})=\vert \alpha\vert f(\boldsymbol{x})$ (同质性,homogeneity)

  L1 和 L2 范数在机器学习上最主要的应用大概分下面两类:

  • 作为损失函数使用
  • 作为正则项使用也即所谓 L1-regularization 和 L2-regularization

$L^2$ Norm

  当 $p = 2$ 时,$L^2$ 范数又称为欧几里得范数,表示从原点出发到向量 $x$ 确定的点的欧几里得距离,常简化为 $|\boldsymbol{x}|$。平方 $L^2$ 范数通常用来衡量向量的大小,可以通过点积 $\boldsymbol{x}^{\top} \boldsymbol{x}$ 计算,在正则化时也用的是平方 $L^2$ 范数。

  平方 $L^2$ 范数比 $L^2$ 范数在计算上更加方便,平方 $L^2$ 范数的对 $x$ 中每个元素的导数取决于对应的元素。而 $L^2$ 范数对每个元素的导数和整个向量有关。

  平方 $L^2$ 范数的问题是在原点附近增长得十分缓慢,而在一些机器学习应用中,区分恰好是零的元素和非零但值很小的元素是很重要的(例子?),这种情况下用 $L^1$ 范数。

$L^1$ Norm

  当机器学习问题中零和非零元素之间的差异非常重要时,通常会用到 $L^1$ 范数。$L^1$ 范数在任何位置的增长率都保持一致,每当 $x$ 中某个元素增加 $\epsilon$,对应的 $L^1$ 范数也增加 $\epsilon$。

  L1 和 L2 范数比较:

  • 鲁棒性:L1 > L2
    • L2 正则对大数或者说异常值更加敏感
  • 稳定性:L2 > L1
    • Stability is defined as resistance to horizontal adjustments. This is the perpendicular opposite of robustness.

$L^0$ Norm

  $L^0$ 范数严格意义上来讲不是属于范数范畴,因为不满足上述的范数性质,但是仍如此称之。$L^0$ 范数是指向量 $\boldsymbol{x}$ 中的非零的个数,是一种度量向量稀疏性的表示方法。例如:$\boldsymbol{x}=[0,1,1,0,0,1]$,那么 $|\boldsymbol{x}|_0 = 3$。其实统计非零个数在一定程度上可以用 $L^1$ 范数替代。

References

  1. 《百面机器学习》