什么是范数?
范数,是具有 “长度” 概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小。
在数学上,范数包括向量范数和矩阵范数。
向量范数表征向量空间中向量的大小,矩阵范数表征矩阵引起变化的大小。 一种非严密的解释就是,对应向量范数,向量空间中的向量都是有大小的,这个大小如何度量,就是用范数来度量的,不同的范数都可以来度量这个大小,就好比米和尺都可以来度量远近一样;对于矩阵范数,学过线性代数,我们知道,通过运算 AX=B,可以将向量 X 变化为 B,矩阵范数就是来度量这个变化大小的。
向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离。
范数的定义
将任意向量 x x x的 l p l_p lp范数定义为:
∣ ∣ x ∣ ∣ p = ∑ i ∣ x i ∣ p p ||x||_p=\sqrt[p]{\sum_i|x_i|^p} ∣∣x∣∣p=pi∑∣xi∣p
当 p = 0 p=0 p=0,就有了 l 0 l_0 l0范数,即 ∣ ∣ x ∣ ∣ 0 = ∑ i x i 0 0 ||x||_0=\sqrt[0]{\sum_i{x_i}^0} ∣∣x∣∣0=0∑ixi0,表示向量 x x x中非0元素的个数。
在诸多机器学习模型中,我们很多时候希望最小化向量的 l 0 l0 l0范数。然而,由于 l 0 l0 l0范数仅仅表示向量中非0元素的个数,因此,这个模型被认为是一个NP-hard问题,即直接求解它很复杂。因此,可以把它转换成 l 1 l1 l1范数最小化问题。
当 p = 1 p=1 p=1,为 l 1 l1 l1范数,即 ∣ ∣ x ∣ ∣ 1 = ∑ i ∣ x i ∣ ||x||_1=\sum_i{|x_i|} ∣∣x∣∣1=∑i∣xi∣,等于向量中所有元素绝对值之和。相应的,一个 l 1 l1 l1范数优化问题为:
m i n ∣ ∣ x ∣ ∣ 1 min||x||_1 min∣∣x∣∣1
s . t . A x = b s.t.Ax=b s.t.Ax=b
这个问题相比于 l 0 l_0 l0范数优化问题更容易求解,借助现有凸优化算法,就能够找到我们想要的可行解。
当 p = 2 p=2 p=2,为 l 2 l2 l2范数,表示向量或矩阵的元素平方和,即 ∣ ∣ x ∣ ∣ 2 = ∑ i x i 2 ||x||_2=\sqrt{\sum_i{x_i}^2} ∣∣x∣∣2=∑ixi2, l 2 l2 l2范数的优化模型如下:
m i n ∣ ∣ x ∣ ∣ 2 min||x||_2 min∣∣x∣∣2
s . t . A x = b s.t.Ax=b s.t.Ax=b
正则项与模型
为了避免过拟合的问题,一种解决办法是在模型的损失函数中加入正则项。对于线性回归模型,使用