0范数、1范数、2范数

系列文章目录

参考文献

[1]
[2]
[3]
[4]
[5]
[6]
[7]


文章目录

  • 系列文章目录
  • 参考文献
  • 前言
  • 一、向量范数
  • 二、矩阵范数


前言

列举常用的向量范数和矩阵范数的定义,秃然爱上coding
范数引入是为了防止过拟合,或者是解可逆。凌空,如果从机器学习的角度,可能会更好理解。

从基本的最小二乘线性模型开始,初始,最小二乘的loss(需要优化的目标函数)如下,
E D ( w ) = 1 2 ∑ n = 1 N t n − w T Φ ( X n ) 2 E_D(w)=\frac{1}{2}\sum_{n=1}^N{t_n-w^T\Phi(X_n)}^2 ED(w)=21n=1NtnwTΦ(Xn)2
其中,tn是目标变量,xn是观测变量(自变量), Φ \Phi Φ是基函数(后期推导与核化无关),是w参数,解为,
W M L = ( Φ T Φ ) − 1 Φ T t W_{ML}=(\Phi^T\Phi)^{-1}\Phi^Tt WML=(ΦTΦ)1ΦTt

上述公式不好求解,因为其实矩阵求逆的病态问题,因此求其近似解。用SGD(梯度下降法)求近似解,或者加入正则项(L2),实际应用中,加入2范数的正则项可以得到闭式解,在实际应用中要比SGD快。因此,加入L2之后的loss,
1 2 ∑ n = 1 N { t n − W T Φ ( x n ) } 2 + λ 2 W T W \frac{1}{2}\sum_{n=1}^N\{{t_n-W^T\Phi(x_n)}\}^2+\frac{\lambda}{2}W^TW 21n=1N{tnWTΦ(xn)}2+2λWTW

闭式解为,

W = ( λ + Φ T Φ ) − 1 Φ T t W=(\lambda+\Phi^T\Phi)^{-1}\Phi^Tt W=(λ+ΦTΦ)1ΦTt

只要上述 λ ≠ 0 \lambda\neq0 λ=0总是有解,此时,loss为,
1 2 ∑ n = 1 N { t n − W T Φ ( x n ) } 2 + λ 2 ∑ j = 1 M ∣ w j ∣ q \frac{1}{2}\sum_{n=1}^N\{{t_n-W^T\Phi(x_n)}\}^2+\frac{\lambda}{2}\sum_{j=1}^M\vert w_j\vert^q 21n=1N{tnWTΦ(xn)}2+2λj=1Mwjq
不同的范数曲线如下,

0范数、1范数、2范数_第1张图片

(图来源于参考书PRML)

上图中,可以明显看到一个趋势,即q越小,曲线越贴近坐标轴,q越大,曲线越远离坐标轴,并且棱角越明显。那么 q=0 和 q=oo 时极限情况如何
0范数、1范数、2范数_第2张图片
就是十字架和正方形。除了图形上的直观形象,在数学公式的推导中,q=0 和 q=oo 时两种极限的行为可以简记为非零元的个数和最大项。那么他们用在机器学习里有什么区别呢?

以1范数和2范数为例:
0范数、1范数、2范数_第3张图片

上图中,蓝色的圆圈表示原问题可能的解范围,橘色的表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从上图可以很容易地看出,由于2范数解范围是圆,所以相切的点有很大可能不在坐标轴上(感谢评论区@临熙指出表述错误),而由于1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。所以有如下结论,1范数可以导致稀疏解,2范数导致稠密解。那么为什么不用0范数呢,理论上它是求稀疏解最好的规范项了。然而在机器学习中,特征的维度往往很大,解0范数又是NP-hard问题,所以在实际中不可行。但是用1范数解是可行的,并且也可以得到稀疏解,所以实际稀疏模型中用1范数约束。至此,我们总结一下,在机器学习中,以0范数和1范数作为正则项,可以求得稀疏解,但是0范数的求解是NP-hard问题; 以2范数作为正则项可以得到稠密解,并且由于其良好的性质,其解的定义很好,往往可以得到闭式解,所以用的很多。另外,从距离的角度说一下范数。1范数对应街区距离,2范数对应大家熟知的欧式距离,无穷范数对应棋盘距离(切比雪夫距离)。
0范数、1范数、2范数_第4张图片

  • 欧式距离(Euclidenan Distance,也叫作直线距离)

  • 城市距离(也叫作L1距离):
    不是直线距离,而是按照街区计算的距离,

  • 棋盘距离(切比雪夫距离):

作者:凌空
链接:https://www.zhihu.com/question/20473040/answer/175915374
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


一、向量范数

  • L0范数
    L0范数是指向量中非零元素的个数,如果使用L0规则化一个参数矩阵W,就是希望W中大部分元素是0,实现稀疏。

  • 1-范数:
    ∥ x ∥ 1 = ∑ i = 1 N ∣ x i ∣ \Vert x\Vert _1=\sum_{i=1}^N\vert x_i\vert x1=i=1Nxi,向量元素绝对值之和,MATLAB调用函数

normal(x, 1)
  • 2-范数
    ∥ x ∥ 2 = ∑ i = 1 N x i 2 \Vert x\Vert_2=\sqrt{\sum_i=1^N{x_i}^2} x2=i=1Nxi2 ,也是Euclid范数(欧几里得范数,常用计算向量长度),也就是向量的平方和再开方,MATLAB调用函数;
normal(x,2)
  • ∞ \infty -范数
    ∥ x ∥ ∞ = m a x i ∣ x i ∣ \Vert x\Vert_{\infty}=max_i\vert x_i\vert x=maxixi,也就是所有向量元素绝对值中的 最大值 ,MATLAB调用函数,
normal(x, inf)
  • − ∞ -\infty -范数
    ∥ x ∥ − ∞ = m i n i ∣ x i ∣ \Vert x\Vert_{-\infty}=min_i\vert x_i \vert x=minixi

也就是所有向量元素绝对值中的最小值 ,matlab 调用函数为,

normal(x, -inf)
  • P范数
    ∥ x ∥ p = ( ∑ i = 1 N ∣ x i ∣ p ) 1 p \Vert x\Vert_p = (\sum_{i=1}^N \vert x_i\vert ^p)^{\frac{1}{p}} xp=(i=1Nxip)p1,也就是向量元素绝对值的p次方和的1/p次幂,MATLAB的调用函数,
normal(x,p)

二、矩阵范数

  • 1-范数:
    A 1 = m a x j ∑ i = 1 m ∣ a i , j ∣ A_1=max_j\sum_{i=1}^m\vert a_{i,j}\vert A1=maxji=1mai,j
    列和范数,也就是所有矩阵列向量的绝对值之和的最大值,MATLAB的调用函数,
normal(A, 1)
  • 2-范数:
    ∥ A ∥ 2 = λ 1 , λ < b r / > 为 A T A 的 最 大 特 征 值 \Vert A\Vert_2=\sqrt{\lambda_1},\lambda
    为A^TA的最大特征值
    A2=λ1 ,λ<br/>ATA
    ,谱范数,也就是 A ′ A A'A AA矩阵的最大特征值的开平方,MATLAB调用函数是,
normal(x, 2)
  • ∞ \infty -范数
    ∥ A ∥ − ∞ = m a x i ∑ j = i N ∣ a i , j ∣ \Vert A\Vert_{-\infty}=max_i \sum_{j=i}^N\vert a_{i,j}\vert A=maxij=iNai,j,行和范数,也就是所有的矩阵行向量绝对值之和的最大值,MATLAB调用函数,
normal(A, inf)
  • F-范数:
    A F = ( ∑ i = 1 m ∑ j = 1 n ∣ a i , j ∣ 2 ) 1 2 A_F=(\sum_{i=1}^m\sum_{j=1}^n\vert a_{i,j}\vert^2)^{\frac{1}{2}} AF=i=1mj=1nai,j2)21
    也就是矩阵元素的绝对值的平方和再开方,MATLAB调用函数为,
normal(A, 'fro')
  • 核范数:
    A ∗ = ∑ i = 1 n λ i A_*=\sum_{i=1}^n\lambda_i A=i=1nλi
    其中 λ i \lambda_i λi是A的奇异值。也就是奇异值之和。

你可能感兴趣的:(数理基础知识,算法,人工智能)