关于范数的一些理解(定义加应用)
一、对范数的初步了解
1.1一些经常见到的范数表达形式
我们在学习机器学习或者一些电子书时,有时可以看到这样一种表达式:
∥ x ∥ \|x\| ∥x∥, ∥ X ∥ \|X\| ∥X∥
这是什么呢?其实这就是范数,上述的
x
x
x,
X
X
X分别表示的是向量和矩阵,而范数正是用于衡量向量或矩阵的大小或长度的。
范数是一类函数,那么有哪些范数,具体有哪些符号呢?
- 曼哈顿范数,(即L1范数),符号为 ∥ x ∥ 1 \|x\|_1 ∥x∥1
- 欧几里德范数,(即L2范数),符号为 ∥ x ∥ 2 \|x\|_2 ∥x∥2
- 无穷范数,(即L∞范数),符号为 ∥ x ∥ ∞ \|x\|_\infty ∥x∥∞
当然了,范数远不止上述所列的。
1.2 范数的定义及意义
范数的定义为:
∥ x ∥ p \|x\|_p ∥x∥p= ∑ i = 1 n ∣ x i ∣ p p \sqrt[p]{\sum_{i=1}^n|x_i|^p} p∑i=1n∣xi∣p
其中, n n n, p p p均为整数, p p p为1,则为L1范数, p p p为2,则为L2范数。下面将举几个范数的例子以理解其意义:
- L 0 L0 L0范数: ∥ x ∥ 0 \|x\|_0 ∥x∥0= ∑ i = 1 n ∣ x i ∣ 0 0 \sqrt[0]{\sum_{i=1}^n|x_i|^0} 0∑i=1n∣xi∣0
- L 1 L1 L1范数: ∥ x ∥ 1 \|x\|_1 ∥x∥1= ∑ i = 1 n ∣ x i ∣ 1 1 \sqrt[1]{\sum_{i=1}^n|x_i|^1} 1∑i=1n∣xi∣1,相当于 ∥ x ∥ 1 \|x\|_1 ∥x∥1= ∑ i = 1 n ∣ x i ∣ \sum_{i=1}^n|x_i| ∑i=1n∣xi∣
- L 2 L2 L2范数: ∥ x ∥ 2 \|x\|_2 ∥x∥2= ∑ i = 1 n ∣ x i ∣ 2 2 \sqrt[2]{\sum_{i=1}^n|x_i|^2} 2∑i=1n∣xi∣2
- L ∞ L_\infty L∞范数: ∥ x ∥ ∞ \|x\|_\infty ∥x∥∞= ∑ i = 1 n ∣ x i ∣ ∞ ∞ \sqrt[\infty]{\sum_{i=1}^n|x_i|^\infty} ∞∑i=1n∣xi∣∞
L0范数仅仅用于统计向量
x
x
x中非零元素个数,以下是个人理解,则
x
=
(
3
,
0
,
1
)
x=(3,0,1)
x=(3,0,1),
x
0
=
3
0
+
0
0
+
1
0
x^0=3^0+0^0+1^0
x0=30+00+10,我认为这里的
0
0
0^0
00应该不具有数学意义的,那么上述
x
0
=
2
x^0=2
x0=2,即统计出了向量中的非零个数。
L1范数:
∥
x
∥
1
\|x\|_1
∥x∥1=
∥
x
∥
1
\|x\|_1
∥x∥1=
∑
i
=
1
n
∣
x
i
∣
\sum_{i=1}^n|x_i|
∑i=1n∣xi∣,表示的是
x
x
x中所有的元素绝对值的和
L2范数:
∥
x
∥
2
\|x\|_2
∥x∥2=
∑
i
=
1
n
∣
x
i
∣
2
2
\sqrt[2]{\sum_{i=1}^n|x_i|^2}
2∑i=1n∣xi∣2表示的是向量
x
x
x的大小,例如
x
=
(
3
,
2
,
1
)
x=(3,2,1)
x=(3,2,1),则
L
2
L2
L2范数为:
3
2
+
2
2
+
1
2
2
=
14
2
\sqrt[2]{3^2+2^2+1^2}=\sqrt[2]{14}
232+22+12=214,则向量
x
x
x的大小为
14
2
\sqrt[2]{14}
214
L ∞ L_\infty L∞范数: ∥ x ∥ ∞ \|x\|_\infty ∥x∥∞= ∑ i = 1 n ∣ x i ∣ ∞ ∞ \sqrt[\infty]{\sum_{i=1}^n|x_i|^\infty} ∞∑i=1n∣xi∣∞表示的是向量 x x x中元素绝对值最大的那个元素,例如 x = ( 3 , 2 , 1 x=(3,2,1 x=(3,2,1,那么 3 ∞ + 2 ∞ + 1 ∞ ∞ ≈ 3 \sqrt[\infty]{3^\infty+2^\infty+1^\infty}\approx3 ∞3∞+2∞+1∞≈3,得到元素绝对值最大的那个元素。
二、范数的作用
范数是用来限制噪声容量和不必要的特征加入的。
什么意思呢?比如给你一组数据,这组数据的特征因子为:
- 身高
- 体重
- 天气
- 温度
- 时间(月初、月中、月末)
- 各菜品销售额
标签为:
- 某时间段的总销售额
如果你不加思索的将特征一股脑的输入到网络中(或者是让机器进行学习),得到的总销售额曲线可能跟所给出的总销售额曲线完全吻合,但事实上我们需要的曲线并不是这种曲线,这种现象称为过拟合,在现实中,如果你用得到该曲线的网络对其他时间段的销售数据进行预测,效果并不会很理想,因为你加入了过多的不必要数据进行训练,试想,一个店的菜品销售总额会与一个人身高体重有很大的关系吗(这里指的并不是完全没有关系,只是说关系非常小)?而范数可以解决这个问题。
我们都知道一种矩阵表达式:
A x = b Ax=b Ax=b
其中 A A A表示特征因子, b b b表示标签, x x x表示权重矩阵,我们可以将 x x x构造成一个稀疏矩阵(矩阵元素有多个零元素,如 x = [ 1 , 0 , 0 , 2 ] T x=[1,0,0,2]^T x=[1,0,0,2]T),降低特征因子 A A A中的噪声,例如: A = [ 3 , 2 ] A=[3,2] A=[3,2],我们认为2为噪声,那么可以构造 x = [ 1 , 0 ] T x=[1,0]^T x=[1,0]T,对 A A A进行去噪声化(其中, x x x中1可根据 A A A中3的权重进行调整)。那么,范数在这里面有着什么样的作用呢?范数在这里面起的是寻找最优解的作用, x x x的L1范数为: ∑ i = 1 n ∣ x i ∣ 1 1 \sqrt[1]{\sum_{i=1}^n|x_i|^1} 1∑i=1n∣xi∣1,设 x = ( m , n ) t x=(m,n)^t x=(m,n)t, A x = 3 m + 2 n = b = 3 Ax=3m+2n=b=3 Ax=3m+2n=b=3,整理得 m = 1 − 2 3 n m=1-\frac{2}{3}n m=1−32n,放入直角坐标系中,这是一条直线, x x x的L1范数: ∑ i = 1 n ∣ x i ∣ 1 1 \sqrt[1]{\sum_{i=1}^n|x_i|^1} 1∑i=1n∣xi∣1可能为另一条直线,当这两条直线相交时,我们就可以找到 m , n m,n m,n的最佳取值,这就是范数在这里面起的作用。