关于机器学习中的范数的杂记

一般来说,监督学习可以看作最小化一个目标函数,即Loss Function加一个约束项:
w* = argminwiL(yi, f(xi; w)) + λΩ(w)
约束项 Ω(w) 通常是模型参数向量的范数的规则化项,比如稀疏表示基础知识中的零范数,用来约束字典权值的稀疏性。

L0范数

L0范数指向量中非0的元素个数, 知乎上一个解释很有让人增加对0范数的感性认知的效果
>几何意义不考虑,单从分析角度。总而言之都是P范数,零范数即是当p趋于零,可以证明这时候的极限 $(x_{1}^{p}+x_{2}^{p}+...+x_{n}^{p})^{\frac{1}{p}}$ 恰好是向量 x = (x1, x2, ..., xn)T 非零元素的个数。而无穷范数则是当p趋于无穷的时候的范数。关于这些极限的证明,数学分析的开篇就介绍了,我想这也是为什么当初学习数学分析的时候为什么老是有各种奇形怪状的极限要证明存在性的原因之一。但严格来说,零范数并不满足数乘率( |αx|≠|α||x| )。之所以最近被多次提到,也是因为压缩感知的火热。
https://www.zhihu.com/question/20473040/answer/121760029

L1范数

L1范数就是向量中各个元素绝对值之和。学术界普遍用L1代替L0做稀疏约束,主要因为在一定条件下L1与L0求解目标等价,但L1是L0的最优凸近似,易于优化求解。

L1是假设参数服从双指数分布,利于保证权值向量的稀疏性

L2范数

L2是假设参数服从高斯分布,利于防止过拟合。

有前面“P范数”的解释,L2范数就很容易知道是向量各元素平方和的平方根。
L2范数常用来抑制过拟合。机器学习的目标是增大各分量权重w的差异,但产生过拟合时,往往是权重的差异过大,过度拟合了有限的训练数据,而缺乏泛华能力。平方和的平方根求最小值,自然会使所有的数都尽可能小,对训练的过程起到一个反作用。作为一个约束项,也称为惩罚项,即把权重的差异限制到一个范围,类比0范数的作用是让权重的非零项尽可能少,它们都起到约束的作用。

核范数(Nuclear Norm)

核范数是矩阵奇异值的和,用来约束矩阵的低秩。对于有稀疏性质的数据(如自然图像),这样的矩阵是低秩的,会包含大量冗余信息,可以利用冗余信息恢复数据(如去噪),可以提取特征(如分类)。

秩(rank)是矩阵非0奇异值的个数,核范数是奇异值的和,把定义放在一起,有种很眼熟的感觉——这就很像用L1范数实现L0范数约束啊。数学角度说,rank是非凸的,或者说又是个NP问题,核范数则是凸的,核范数是rank的凸近似,用核范数最小化来近似实现低秩约束,原因还是好算。

弗罗贝尼乌斯范数

在矩阵中,对于p=2,称为Frobenius Norm(F-Norm)。
$$ \|A\|_{F}=\sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n}|a_{ij}|^{2}}=\sqrt{trace{A^{*}A}}=\sqrt{\sum_{i=1}^{\min(m,n)}\sigma_{i}^{2}} $$
A* 表示 A 的共轭转置, σiA 的奇异值。

参考:

  1. 机器学习中的范数规则化之(一)L0、L1与L2范数
  2. 机器学习中的范数规则化之(二)核范数与规则项参数选择
  3. 0 范数、1 范数、2 范数有什么区别?
  4. 为什么核范数能凸近似矩阵的秩?为什么核范数是凸的?