机器学习中的范数定义不同于数学中的定义。
对于向量 x x x ( x = [ x 1 , x 2 , x 3 , . . . x m ] x=[x_1,x_2,x_3,... x_m] x=[x1,x2,x3,...xm])和一个 n n n行, t t t列的矩阵 X X X,它的 L0, L1, L2, L2,1范数定义如下:
L0范数:向量/矩阵的非0元素的个数,通常用它来表示稀疏,L0范数越小,0元素越多,也就越稀疏。
∣ ∣ x ∣ ∣ 0 = c o u n t ( x i ≠ 0 ) , i ∈ ( 1 , 2 , . . m ) ∣ ∣ X ∣ ∣ 0 = c o u n t ( x i , j ≠ 0 ) , i ∈ ( 1 , 2 , . . n ) , j ∈ ( 1 , 2 , . . t ) ||x||_0 = count(x_i \neq0) , i \in (1,2,..m) \\||X||_0 = count(x_{i,j} \neq0) , i \in (1,2,..n), j \in (1,2,..t) ∣∣x∣∣0=count(xi=0),i∈(1,2,..m)∣∣X∣∣0=count(xi,j=0),i∈(1,2,..n),j∈(1,2,..t)
L1范数:向量/矩阵中的每个元素绝对值之和,它是L0范数的最优凸近似,因此它也可以近似表示稀疏;
∣ ∣ x ∣ ∣ 1 = ∑ i = 1 m ∣ x i ∣ ∣ ∣ X ∣ ∣ 1 = ∑ i = 1 n ∑ j = 1 t ∣ x i , j ∣ ||x||_1 = \sum _{i=1}^m |x_i| \\||X||_1 = \sum _{i=1}^n \sum _{j=1}^t |x_{i,j}| ∣∣x∣∣1=i=1∑m∣xi∣∣∣X∣∣1=i=1∑nj=1∑t∣xi,j∣
L2范数:向量/矩阵的各个元素平方之和再开平方根,它通常也叫做矩阵的L2范数,它是一个凸函数,可以求导求解,易于计算;
∣ ∣ x ∣ ∣ 1 = ∑ i = 1 m x i 2 ∣ ∣ X ∣ ∣ 1 = ∑ i = 1 n ∑ j = 1 t x i , j 2 ||x||_1 = \sqrt { \sum _{i=1}^m x_i^2} \\||X||_1 = \sqrt { \sum _{i=1}^n \sum _{j=1}^t x_{i,j}^2} ∣∣x∣∣1=i=1∑mxi2∣∣X∣∣1=i=1∑nj=1∑txi,j2
L2,1范数:矩阵 X X X每一行行内元素的L2范数之和,也即先求每一行行内元素的L2范数,然后再求所有行L2范数的L1范数。向量 x x x是不存在L2,1范数的,只有矩阵才有。
∣ ∣ X ∣ ∣ 2 , 1 = ∑ i = 1 n ∑ j = 1 t X i , j = ∑ i = 1 n ∣ ∣ X i , : ∣ ∣ 2 ||X||_{2,1}=\sum _{i=1}^{n} \sqrt {\sum _{j=1}^{t} X_{i,j}} = \sum _{i=1}^{n} ||X_{i,:}||_2 ∣∣X∣∣2,1=i=1∑nj=1∑tXi,j=i=1∑n∣∣Xi,:∣∣2
最小化L2,1范数,就需要让行的L1范数尽可能小,即 ∣ ∣ X i , : ∣ ∣ 2 ||X_{i,:}||_2 ∣∣Xi,:∣∣2尽可能为0,也就是让尽可能多的行内的所有元素都是0,以此实现行稀疏的效果。不同于L1范数,是让尽可能多的 X i , j X_{i,j} Xi,j为0,也即单个的元素为0。
除了L2,1范数,还有L0.5,1范数,L1,2范数等组合,这些统称为结构化稀疏。
参考
向量与矩阵的范数(比较1-范数、2-范数、无穷范数、p-范数、L0范数 和 L1范数等)
L2,1范数的作用