TIPQuestion:为什么机器学习里总在说 L1 / L2 / 正则化?
范数的定义#
从数学的角度上讲,范数是一个函数,它接受一个向量作为输入,并输出一个非负实数,表示这个向量的“大小”或“长度”。范数必须满足以下三个条件:
-
非负性:对于任何向量 x,范数 ∥x∥ 都必须是非负的,即 ∥x∥≥0,并且只有当 x=0 时,∥x∥=0。
-
绝对齐次性:对于任何标量 α 和任何向量 x,范数必须满足 ∥αx∥=∣α∣∥x∥。这意味着如果你将一个向量缩放一个标量,那么它的范数也会相应地缩放。
-
三角不等式:对于任何两个向量 x 和 y,范数必须满足 ∥x+y∥≤∥x∥+∥y∥。这意味着两个向量的和的范数不会超过它们各自范数的和。
-
范数 ≠ 客观长度
-
范数 = 人为定义的“评价标准”
向量范数#
1-范数(曼哈顿距离,L1)#
L1范数是向量元素绝对值的和。对于一个向量 x=(x1,x2,…,xn),L1范数定义为:
∥x∥1=∣x1∣+∣x2∣+…+∣xn∣2-范数(欧几里得距离,L2)#
L2范数是向量元素的平方和的平方根。对于一个向量 x=(x1,x2,…,xn),L2范数定义为:
∥x∥2=x12+x22+…+xn2p-范数(Hölder范数,或Lp范数)#
Lp范数是向量元素的p次幂和的1/p次幂。 对于一个向量 x=(x1,x2,…,xn),Lp范数定义为:
∥x∥p=(∣x1∣p+∣x2∣p+…+∣xn∣p)p1单位球#
所有满足:
∥x∥p=1的点组成的集合。对于不同的范数,单位球的形状也不同:

加权p-范数#
普通的范数视所有维度(所有特征)同等重要。但实际处理数据时,有些维度更重要,有些则包含更多噪声。通过对角矩阵 (一个方阵中,除了主对角线(从左上角到右下角的那条线)上有数字外,其余地方全是 0) W,我们给不同的坐标轴加上了权重。
TIP当 W 是非奇异矩阵(不一定是角阵)时,这本质上是在做一个线性变换后再量长度。在机器学习中,这常用于处理数据不均匀缩放的情况(马氏距离的基础)
∥x∥p,W=∥Wx∥p=(i=1∑n∣wixi∣p)p1
矩阵范数#
诱导范数#
TIP这里的 Ax 是用外积的角度理解的,A的列和x中的元素一一对应,即AB=秩1矩阵之和
定义:∥A∥=supx=0∥x∥∥Ax∥
如果把矩阵 A 看作一个加工机器,输入向量 x。∥x∥ 是输入的”大小”。∥Ax∥ 是输出的”大小”。诱导范数 ∥A∥ 就是这个机器能实现的最大“放大倍数”。
关于这个理解的数学细节:
NOTE
- sup 是上确界的意思,表示在所有非零向量 x 中,∥x∥∥Ax∥ 的最大值。
- 这里面的下标 (m,n),(m),(n) 仅表示向量的维度,而非 Lm 或 Ln 范数。符号 ∥⋅∥(m) 和 ∥⋅∥(n) 可以表示任何同类型的向量范数。
一个m×n的矩阵A,输入一个n维向量x,输出一个m维向量Ax。所以在定义域(输入空间)中定义范数∥⋅∥(n),在值域(输出空间)中定义范数∥⋅∥(m)。诱导矩阵范数∥A∥(m,n)是使不等式
∥Ax∥(m)≤C∥x∥(n)对于所有x成立的最小常数C。换句话说,∥A∥(m,n)是矩阵A在输入空间和输出空间的范数定义下的最大放大倍数(∥x∥∥Ax∥ 的上确界)。
称范数 ∥⋅∥(m,n) 为由向量范数 ∥⋅∥(m) 和 ∥⋅∥(n) 诱导的矩阵范数。
因为放大倍数是一个比值,我们干脆把输入的长度固定为 1(单位圆/单位球),看看经过矩阵 A 变换后,这个球被拉伸得最厉害的地方有多长。
常见的诱导范数#
具体的L1,L∞推导过程和
L2推导过程
| 输入范数 ∥∥⋅∥∥n | 输出范数 ∥∥⋅∥∥m | 诱导矩阵范数 ∥∥A∥∥m,n | 数学表示 |
|---|
| L1 | L1 | 列和范数(最大列和) | ∥∥A∥∥1=max1≤j≤n∑i=1m∥aij∥ |
| L2 | L2 | 谱范数(A的最大奇异值) | ∥∥A∥∥2=σmax(A)=λ1 ,其中 λ1 是ATA的最大特征值 |
| L∞ | L∞ | 行和范数(最大行和) | ∥∥A∥∥∞=max1≤i≤m∑j=1n∥aij∥ |
Frobenius范数#
Frobenius范数是矩阵元素的平方和的平方根。对于一个矩阵 A=[aij],Frobenius范数定义为:
∥A∥F=i=1∑mj=1∑naij2Frobenius范数可以看作是把矩阵拉直成一个 m×n 维的长向量,然后计算这个向量的 2-范数(欧几里得长度)
Frobenius范数与向量范数的联系#
-
向量的2-范数可以看作是一个特殊的Frobenius范数:当矩阵 A 是一个列向量时,记作x,n×1 ,Frobenius范数就退化成了这个向量的2-范数:
∥x∥F=i=1∑n∣xi∣2=∥x∥2
-
从矩阵的列向量角度理解,每一列 a:j 都是一个 n×1 向量,Frobenius范数就是所有列向量的2-范数的平方和的平方根:
∥A∥F=j=1∑n∥a:j∥22
-
同理,从矩阵的行向量角度理解,每一行 ai: 都是一个 1×m 向量,Frobenius范数也是所有行向量的2-范数的平方和的平方根:
∥A∥F=i=1∑m∥ai:∥22
基本性质#
有了和向量范数(2-范数)的联系,我们可以验证Frobenius范数满足范数的三个基本性质:
- 非负性 :∥A∥F≥0,并且只有当 A 是零矩阵时,∥A∥F=0。
- 绝对齐次性 :对于任何标量 α 和任何矩阵 A,∥αA∥F=∣α∣∥A∥F。
- 三角不等式 :对于任何两个同型矩阵 A 和 B,∥A+B∥F≤∥A∥F+∥B∥F。
TIP简要证明一下三角不等式:
∑(a+b)2=∑a2+∑b2+2∑ab≤∑a2+∑b2
-
这玩意可以和矩阵的秩联系起来,若 aj 表示矩阵的第j列向量,那么 ∥A∥F=∑j=1n∥aj∥22=tr(ATA)=trAAT=Energe(A)
-
矩阵范数的相容性(Compatibility)或次可乘性(Sub-multiplicativity):两个矩阵乘积的范数,总是小于或等于这两个矩阵各自范数的乘积。∥∥AB∥F≤∥∥A∥F⋅∥∥B∥F
- 值得注意的是,Frobenius 范数还满足算子相容性:∥Ax∥2≤∥A∥F∥x∥2这说明矩阵对向量的变换程度,也不会超过矩阵自身的 Frobenius 范数。等号右边的值远大于左边是正常的,因为这只是一个松散的上界(Upper Bound)。只有当矩阵的结构非常特殊(如秩为 1 的矩阵)时,等号才可能成立。
-
由2推广,当 B=A−1 时,可以证明:一个F范数为 ϵ 的n阶矩阵 A 满足 ∥A−1∥F≥ϵn。