阅读文献时,经常看到各种范数,机器学习中的稀疏模型等,也有各种范数,其名称往往容易混淆,例如:L1范数也常称为“1-范数”,但又和真正的1-范数又有很大区别。下面将依次介绍各种范数。

1、向量的范数

向量的1-范数: 向量/矩阵范数 - 图1 ; 各个元素的绝对值之和;
向量的2-范数:向量/矩阵范数 - 图2;每个元素的平方和再开平方根;
向量的无穷范数:向量/矩阵范数 - 图3
p-范数:向量/矩阵范数 - 图4,其中正整数p≥1,并且有向量/矩阵范数 - 图5

例:向量X=[2, 3, -5, -7] ,求向量的1-范数,2-范数和无穷范数。
向量的1-范数:各个元素的绝对值之和向量/矩阵范数 - 图6=2+3+5+7=17;

向量的2-范数:每个元素的平方和再开平方根;向量/矩阵范数 - 图7

向量的无穷范数:
(1)正无穷范数:向量的所有元素的绝对值中最大的;即X的正无穷范数为:7;

(2)负无穷范数:向量的所有元素的绝对值中最小的;即X的负无穷范数为:2;

2、矩阵的范数

设:向量向量/矩阵范数 - 图8,矩阵向量/矩阵范数 - 图9,例如矩阵A为:
A=[2, 3, -5, -7;
4, 6, 8, -4;
6, -11, -3, 16];
(1)矩阵的1-范数(列模):向量/矩阵范数 - 图10;矩阵的每一列上的元素绝对值先求和,再从中取个最大的,(列和最大);即矩阵A的1-范数为:27

(2)矩阵的2-范数(谱模):向量/矩阵范数 - 图11,其中 向量/矩阵范数 - 图12向量/矩阵范数 - 图13的特征值;矩阵向量/矩阵范数 - 图14的最大特征值开平方根。
Matlab代码:
(3)矩阵的无穷范数(行模):向量/矩阵范数 - 图15;矩阵的每一行上的元素绝对值先求和,再从中取个最大的,(行和最大)

下面要介绍关于机器学习中稀疏表示等一些地方用到的范数,一般有核范数,L0范数,L1范数(有时很多人也叫1范数,这就让初学者很容易混淆),L21范数(有时也叫2范数),F范数等,这些范数都是为了解决实际问题中的困难而提出的新的范数定义,不同于前面矩阵的范数。
关于核范数,L0范数,L1范数等解释见博客:
http://www.cnblogs.com/MengYan-LongYou/p/4050862.html
https://blog.csdn.net/u013066730/article/details/51145889
http://blog.sina.com.cn/s/blog_7103b28a0102w73g.html

(4)矩阵的核范数:矩阵的奇异值(将矩阵svd分解)之和,这个范数可以用来低秩表示(因为最小化核范数,相当于最小化矩阵的秩——低秩);
Matlab代码:;

(5)矩阵的L0范数:矩阵的非0元素的个数,通常用它来表示稀疏,L0范数越小0元素越多,也就越稀疏。

(6)矩阵的L1范数:矩阵中的每个元素绝对值之和,它是L0范数的最优凸近似,因此它也可以近似表示稀疏;
Matlab代码:

(7)矩阵的F范数:矩阵的各个元素平方之和再开平方根,它通常也叫做矩阵的L2范数,它的有点在它是一个凸函数,可以求导求解,易于计算;
Matlab代码:

(8)矩阵的L21范数:矩阵先以每一列为单位,求每一列的F范数(也可认为是向量的2范数),然后再将得到的结果求L1范数(也可认为是向量的1范数),很容易看出它是介于L1和L2之间的一种范数
Matlab代码: