L0, L1, L2, L2,1范数
机器学习中的范数定义不同于数学中的定义。
对于向量
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范数等组合,这些统称为结构化稀疏。
参考