系列文章目录
参考文献
前言
列举常用的向量范数和矩阵范数的定义,秃然爱上coding
范数引入是为了防止过拟合,或者是解可逆。凌空,如果从机器学习的角度,可能会更好理解。
从基本的最小二乘线性模型开始,初始,最小二乘的loss(需要优化的目标函数)如下,
E
D
(
w
)
=
1
2
∑
n
=
1
N
t
n
−
w
T
Φ
(
X
n
)
2
E_D(w)=\frac{1}{2}\sum_{n=1}^N{t_n-w^T\Phi(X_n)}^2
ED(w)=21n=1∑Ntn−wTΦ(Xn)2
其中,tn是目标变量,xn是观测变量(自变量),
Φ
\Phi
Φ是基函数(后期推导与核化无关),是w参数,解为,
W
M
L
=
(
Φ
T
Φ
)
−
1
Φ
T
t
W_{ML}=(\Phi^T\Phi)^{-1}\Phi^Tt
WML=(ΦTΦ)−1ΦTt
上述公式不好求解,因为其实矩阵求逆的病态问题,因此求其近似解。用SGD(梯度下降法)求近似解,或者加入正则项(L2),实际应用中,加入2范数的正则项可以得到闭式解,在实际应用中要比SGD快。因此,加入L2之后的loss,
1
2
∑
n
=
1
N
{
t
n
−
W
T
Φ
(
x
n
)
}
2
+
λ
2
W
T
W
\frac{1}{2}\sum_{n=1}^N\{{t_n-W^T\Phi(x_n)}\}^2+\frac{\lambda}{2}W^TW
21n=1∑N{tn−WTΦ(xn)}2+2λWTW
闭式解为,
W = ( λ + Φ T Φ ) − 1 Φ T t W=(\lambda+\Phi^T\Phi)^{-1}\Phi^Tt W=(λ+ΦTΦ)−1ΦTt
只要上述
λ
≠
0
\lambda\neq0
λ=0总是有解,此时,loss为,
1
2
∑
n
=
1
N
{
t
n
−
W
T
Φ
(
x
n
)
}
2
+
λ
2
∑
j
=
1
M
∣
w
j
∣
q
\frac{1}{2}\sum_{n=1}^N\{{t_n-W^T\Phi(x_n)}\}^2+\frac{\lambda}{2}\sum_{j=1}^M\vert w_j\vert^q
21n=1∑N{tn−WTΦ(xn)}2+2λj=1∑M∣wj∣q
不同的范数曲线如下,
(图来源于参考书PRML)
上图中,可以明显看到一个趋势,即q越小,曲线越贴近坐标轴,q越大,曲线越远离坐标轴,并且棱角越明显。那么 q=0 和 q=oo 时极限情况如何
就是十字架和正方形。除了图形上的直观形象,在数学公式的推导中,q=0 和 q=oo 时两种极限的行为可以简记为非零元的个数和最大项。那么他们用在机器学习里有什么区别呢?
以1范数和2范数为例:
上图中,蓝色的圆圈表示原问题可能的解范围,橘色的表示正则项可能的解范围。而整个目标函数(原问题+正则项)有解当且仅当两个解范围相切。从上图可以很容易地看出,由于2范数解范围是圆,所以相切的点有很大可能不在坐标轴上(感谢评论区@临熙指出表述错误),而由于1范数是菱形(顶点是凸出来的),其相切的点更可能在坐标轴上,而坐标轴上的点有一个特点,其只有一个坐标分量不为零,其他坐标分量为零,即是稀疏的。所以有如下结论,1范数可以导致稀疏解,2范数导致稠密解。那么为什么不用0范数呢,理论上它是求稀疏解最好的规范项了。然而在机器学习中,特征的维度往往很大,解0范数又是NP-hard问题,所以在实际中不可行。但是用1范数解是可行的,并且也可以得到稀疏解,所以实际稀疏模型中用1范数约束。至此,我们总结一下,在机器学习中,以0范数和1范数作为正则项,可以求得稀疏解,但是0范数的求解是NP-hard问题; 以2范数作为正则项可以得到稠密解,并且由于其良好的性质,其解的定义很好,往往可以得到闭式解,所以用的很多。另外,从距离的角度说一下范数。1范数对应街区距离,2范数对应大家熟知的欧式距离,无穷范数对应棋盘距离(切比雪夫距离)。
-
欧式距离(Euclidenan Distance,也叫作直线距离)
-
城市距离(也叫作L1距离):
不是直线距离,而是按照街区计算的距离, -
棋盘距离(切比雪夫距离):
作者:凌空
链接:https://www.zhihu.com/question/20473040/answer/175915374
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一、向量范数
-
L0范数
L0范数是指向量中非零元素的个数,如果使用L0规则化一个参数矩阵W,就是希望W中大部分元素是0,实现稀疏。 -
1-范数:
∥ x ∥ 1 = ∑ i = 1 N ∣ x i ∣ \Vert x\Vert _1=\sum_{i=1}^N\vert x_i\vert ∥x∥1=i=1∑N∣xi∣,向量元素绝对值之和,MATLAB调用函数
normal(x, 1)
- 2-范数
∥ x ∥ 2 = ∑ i = 1 N x i 2 \Vert x\Vert_2=\sqrt{\sum_i=1^N{x_i}^2} ∥x∥2=i∑=1Nxi2,也是Euclid范数(欧几里得范数,常用计算向量长度),也就是向量的平方和再开方,MATLAB调用函数;
normal(x,2)
-
∞
\infty
∞-范数
∥ x ∥ ∞ = m a x i ∣ x i ∣ \Vert x\Vert_{\infty}=max_i\vert x_i\vert ∥x∥∞=maxi∣xi∣,也就是所有向量元素绝对值中的 最大值 ,MATLAB调用函数,
normal(x, inf)
-
−
∞
-\infty
−∞-范数
∥ x ∥ − ∞ = m i n i ∣ x i ∣ \Vert x\Vert_{-\infty}=min_i\vert x_i \vert ∥x∥−∞=mini∣xi∣
也就是所有向量元素绝对值中的最小值 ,matlab 调用函数为,
normal(x, -inf)
- P范数
∥ x ∥ p = ( ∑ i = 1 N ∣ x i ∣ p ) 1 p \Vert x\Vert_p = (\sum_{i=1}^N \vert x_i\vert ^p)^{\frac{1}{p}} ∥x∥p=(i=1∑N∣xi∣p)p1,也就是向量元素绝对值的p次方和的1/p次幂,MATLAB的调用函数,
normal(x,p)
二、矩阵范数
- 1-范数:
A 1 = m a x j ∑ i = 1 m ∣ a i , j ∣ A_1=max_j\sum_{i=1}^m\vert a_{i,j}\vert A1=maxji=1∑m∣ai,j∣
列和范数,也就是所有矩阵列向量的绝对值之和的最大值,MATLAB的调用函数,
normal(A, 1)
- 2-范数:
∥ A ∥ 2 = λ 1 , λ < b r / > 为 A T A 的 最 大 特 征 值 \Vert A\Vert_2=\sqrt{\lambda_1},\lambda<br/>为A^TA的最大特征值 ∥A∥2=λ1,λ<br/>为ATA的最大特征值,谱范数,也就是 A ′ A A'A A′A矩阵的最大特征值的开平方,MATLAB调用函数是,
normal(x, 2)
-
∞
\infty
∞-范数
∥ A ∥ − ∞ = m a x i ∑ j = i N ∣ a i , j ∣ \Vert A\Vert_{-\infty}=max_i \sum_{j=i}^N\vert a_{i,j}\vert ∥A∥−∞=maxij=i∑N∣ai,j∣,行和范数,也就是所有的矩阵行向量绝对值之和的最大值,MATLAB调用函数,
normal(A, inf)
- F-范数:
A F = ( ∑ i = 1 m ∑ j = 1 n ∣ a i , j ∣ 2 ) 1 2 A_F=(\sum_{i=1}^m\sum_{j=1}^n\vert a_{i,j}\vert^2)^{\frac{1}{2}} AF=(i=1∑mj=1∑n∣ai,j∣2)21
也就是矩阵元素的绝对值的平方和再开方,MATLAB调用函数为,
normal(A, 'fro')
- 核范数:
A ∗ = ∑ i = 1 n λ i A_*=\sum_{i=1}^n\lambda_i A∗=i=1∑nλi
其中 λ i \lambda_i λi是A的奇异值。也就是奇异值之和。