问题
CS231n: Convolutional Neural Networks for Visual Recognition / Lecture7: Training Neural Networks, Part 2 在讲到 Optimization: Problems with SGD 时,有这样一段话:
As we go up and down in this landscape, now our loss is very sensitive to changes in the vertical direction. By the way, this is referred to as the loss having a bad condition number at this point, which is the ratio between the largest and smallest singular values of the Hessian matrix at that point.
第一次碰见这段话的时候,我一头雾水,condition number是什么?singular values又是什么??还有这个Hessian matrix是个啥子东西???我又退回去看了好几遍,傻傻地以为多看几遍就能看懂,但最后还是没搞明白。后来我上网查了一些资料,了解了条件数、奇异值、海森矩阵的一些知识后,算是可以看懂这段话了。这篇博客主要是关于我对这段话的理解。
知识点
条件数(Condition Number)
Danifree: 机器学习中的矩阵方法(附录A):病态矩阵与条件数
总结Danifree的博客:
矩阵A的条件数K(A)定义为
其中,矩阵
A
A
A的范数特指无穷范数(Infinity Norm),无穷范数其定义为:假设
A
A
A是规格为
m
×
n
m \times n
m×n的矩阵;对于
A
A
A的每一行
r
i
r_i
ri,
r
i
r_i
ri有
n
n
n个元素;对于
r
i
r_i
ri的每一个元素
r
i
j
r_{ij}
rij,我们取其绝对值
∣
r
i
j
∣
|r_{ij}|
∣rij∣;并对
∣
r
i
j
∣
|r_{ij}|
∣rij∣关于
j
j
j求累加和,即
∑
j
=
1
n
∣
r
i
j
∣
\sum_{j=1}^n|r_{ij}|
∑j=1n∣rij∣;我们对每一行都像这样求得一个“元素绝对值累加和”,最后我们会得到m个“行元素绝对值累加和”,而这m个“行元素绝对值累加和”中最大的那个数,即为矩阵
A
A
A的无穷范数。例子可以参考Danifree的博客
A =
[
2
3
−
7
5
4
−
2
7
−
3
6
]
\left[
奇异值(Singular Value)
Deepshuai: 奇异值分解(SVD)原理
总结Deepshuai的博客:
奇异值是特征值的一般情况,特征值是奇异值的特殊情况,当矩阵
A
A
A为方阵时,奇异值等于特征值。
在特征值分解中,我们希望将矩阵
A
A
A表示为以下形式:
在奇异值分解中,我们也希望将矩阵
A
A
A表示为类似的形式:
其中
A
A
A是规格为
m
×
n
m \times n
m×n的矩阵;
U
U
U是规格为
m
×
m
m \times m
m×m的矩阵,
U
U
U中的向量是相互正交的,
U
U
U中的向量称为左奇异向量;
Σ
\Sigma
Σ是规格为
m
×
n
m \times n
m×n的矩阵,
Σ
\Sigma
Σ中非对角线元素的值都为
0
0
0,对角线元素的值称为奇异值;
V
T
V^T
VT是规格为
n
×
n
n \times n
n×n的矩阵,
V
V
V中的向量也是相互正交地,
V
V
V中的向量称为右奇异向量。
奇异值分解的方法是,首先我们求方阵
A
T
A
A^TA
ATA的特征值
其中
v
i
v_i
vi就是右奇异向量,此外
其中
σ
i
\sigma_i
σi就是奇异值,
u
i
u_i
ui就是左奇异向量。
奇异值和特征值一样,在矩阵Σ中也是按从大到小的顺序排列,而且奇异值
σ
i
\sigma_i
σi的值减小的特别快,在大多数的情况下前
10
%
10\%
10%甚至
1
%
1\%
1%的奇异值的和就占了全部奇异值之和的
99
%
99\%
99%以上。也就是说,我们可以利用前r个大的奇异值来近似的描述矩阵,这里给出奇异值分解的定义:
海森矩阵(Hessian Matrix)
Jacobian矩阵和Hessian矩阵,LM最优化方法
总结:
海森矩阵定义为:
粗略地讲,在二次方程中,椭球面的形状受海森矩阵的条件数影响,长轴与短轴分别对应海森矩阵最小特征值和最大特征值的特征向量的方向,其轴长与特征值的平方根成反比。最大特征值与最小特征值相差越大,椭球面越扁,优化路径需要走的路径越弯,计算效率很低。
我们来逐句试着验证一下斜体字的这段话。
首先它说 “在二次方程中”,所以我们需要一个二次方程。为了简单,我们这边只考虑具有两个维度的二次方程,椭圆。我们假设椭圆方程:
x
2
9
\frac{x^2}{9}
9x2 +
y
2
4
\frac{y^2}{4}
4y2 = 1
然后它说 “椭圆面的形状受海森矩阵的条件数影响”,具体是怎么影响的呢,它接着解释 “长轴与短轴分别对应海森矩阵最小特征值和最大特征值的特征向量的方向,其轴长与特征值的平方根成反比”。所以我们先写出我们的海森矩阵:
H
(
f
)
=
[
2
9
0
0
1
2
]
H(f) = \left[
根据上文,
H
(
f
)
H(f)
H(f)的条件数
K
(
H
)
=
∥
H
−
1
∥
∥
H
∥
K(H) = \parallel H^{-1}\parallel\parallel H\parallel
K(H)=∥H−1∥∥H∥,我们先求
H
−
1
H^{-1}
H−1。
[
H
,
I
]
=
[
2
9
0
1
0
0
1
2
0
1
]
\left[H, I\right] = \left[
→
r
2
×
2
r
1
×
9
2
[
1
0
9
2
0
0
1
0
2
]
=
[
I
,
H
−
1
]
\xrightarrow[r_2\times 2]{r_1 \times \frac{9}{2}}\left[
所以
H
−
1
=
[
9
2
0
0
2
]
H^{-1} = \left[
所以
K
(
H
)
=
9
2
×
1
2
=
9
4
K(H) = \frac{9}{2} \times \frac{1}{2} = \frac{9}{4}
K(H)=29×21=49
因为
H
(
f
)
H(f)
H(f)为方阵,所以
H
(
f
)
H(f)
H(f)有特征值,且
H
(
f
)
H(f)
H(f)的奇异值此时就是它的特征值。根据对角矩阵的性质易知,
H
(
f
)
H(f)
H(f)的特征值为
λ
1
=
2
9
\lambda_1 = \frac{2}{9}
λ1=92,
λ
2
=
1
2
\lambda_2 = \frac{1}{2}
λ2=21。半径为
3
3
3的长轴对应
H
(
f
)
H(f)
H(f)的最小特征值
λ
1
\lambda_1
λ1,半径为
2
2
2的短轴对应
H
(
f
)
H(f)
H(f)的最大特征值
λ
2
\lambda_2
λ2。如果轴长和其对应的特征值的平方根成反比,则满足
轴
长
=
k
1
特
征
值
轴长 = k \frac{1}{\sqrt{特征值}}
轴长=k特征值1,的确我们可以发现
3
=
k
1
1
2
9
3 = k_1 \frac{1}{\sqrt{\frac{2}{9}}}
3=k1921,解得
k
1
=
2
k_1 = \sqrt{2}
k1=2;
2
=
k
2
1
1
2
2 = k_2 \frac{1}{\sqrt{\frac{1}{2}}}
2=k2211,解得
k
2
=
2
k_2 = \sqrt{2}
k2=2;得
k
1
=
k
2
k_1 = k_2
k1=k2。因此,最大特征值和最小特征值相差越大,即最大特征值越大,最大特征值的平方根的倒数就越小,短轴越短,最小特征值越小,最小特征值的平方根的倒数就越大,长轴就越长;短轴越短,长轴越长,椭球面越扁;假如我们的椭球面实际上是一个球面,根据梯度下降算法,我们每次会沿半径方向朝圆心走一步(如下图左),我们走过的路径是一条直线;而如果我们的椭球面实际就是一个椭球面,我们每次沿与切线垂直的方向向地形的最低处走一步(如下图右),我们走过的路径是一条曲线,而且椭球面越扁,走过的路径越曲折,优化的效率越低。
(因为嫌画同心椭圆麻烦,上图右借用了百度经验用matplotlib画等高线图像_中学别人画好的图,感谢感谢。)
理解
至此,我们补充完所有需要的知识点。
我们回到我们的问题,我把它贴下来
As we go up and down in this landscape, now our loss is very sensitive to changes in the vertical direction. By the way, this is referred to as the loss having a bad condition number at this point, which is the ratio between the largest and smallest singular values of the Hessian matrix at that point.
第一句话“As we go up and down in this landscape, now our loss is very sensitive to changes in the vertical direction”非常好理解,因为对于图中红点
P
P
P而言,“垂直”方向 “等高线”密集,“坡度”大;“水平”方向 “等高线”稀疏,“坡度”小。
第二句话“By the way, this is referred to as the loss having a bad condition number at this point, which is the ratio between the largest and smallest singular values of the Hessian matrix at that point”,首先它说“顺便说一句,这代表在这点上损失值有一个 bad condition number”,什么condition number条件数算是bad呢?课件上给出了解释——high condition number,high就是bad,条件数越大,条件数越bad。并且它告诉我们,条件数就是海森矩阵最大的奇异值和最小的奇异值的比值。在上面椭圆的例子中,海森矩阵最大的奇异值为
λ
2
=
1
2
\lambda_2 = \frac{1}{2}
λ2=21,最小的奇异值为
λ
1
=
2
9
\lambda_1 = \frac{2}{9}
λ1=92,两者的比值
λ
2
λ
1
=
1
2
÷
2
9
=
1
2
×
9
2
=
9
4
\frac{\lambda_2}{\lambda_1} = \frac{1}{2} \div \frac{2}{9} = \frac{1}{2} \times \frac{9}{2} = \frac{9}{4}
λ1λ2=21÷92=21×29=49,与我们先前求得的条件数一致。
到此,我们就将这段话理解好了。
评论记录:
回复评论: