从本节开始,将介绍深度学习中常见的优化算法。在介绍随机梯度下降之前,将针对最速下降法与梯度下降法之间差异性做一些说明。
关于条件数的介绍优点喧宾夺主~本节主要目的不是描述梯度下降法的缺陷,而是描述最速下降法与梯度下降法之间的差异性。
在梯度下降法在强凸函数的收敛性证明中介绍了梯度下降法在 m m m-强凸函数上的收敛性定理:
条件:
结论:
数值解序列
{
x
k
}
k
=
0
∞
\{x_k\}_{k=0}^{\infty}
{xk}k=0∞以
Q
\mathcal Q
Q-线性收敛的收敛速度收敛于最优数值解
x
∗
x^*
x∗。
在证明过程中,实现了线性收敛的定义式的证明:
∥
x
k
+
1
−
x
∗
∥
∥
x
k
−
x
∗
∥
=
∥
x
k
−
α
⋅
∇
f
(
x
k
)
−
x
∗
∥
∥
x
k
−
x
∗
∥
≤
1
−
α
⋅
2
L
m
L
+
m
∈
(
0
,
1
)
‖xk+1−x∗‖‖xk−x∗‖=‖xk−α⋅∇f(xk)−x∗‖‖xk−x∗‖≤√1−α⋅2LmL+m∈(0,1)
∥xk−x∗∥∥xk+1−x∗∥=∥xk−x∗∥∥xk−α⋅∇f(xk)−x∗∥≤1−α⋅L+m2Lm∈(0,1)
如果目标函数
f
(
⋅
)
f(\cdot)
f(⋅)满足二阶连续可微的条件下,并且其梯度函数
∇
f
(
⋅
)
\nabla f(\cdot)
∇f(⋅)满足
L
\mathcal L
L-利普希兹连续,那么
f
(
⋅
)
f(\cdot)
f(⋅)对应的
Hessian Matrix
⇒
∇
2
f
(
⋅
)
\text{Hessian Matrix} \Rightarrow \nabla^2 f(\cdot)
Hessian Matrix⇒∇2f(⋅)必然存在并且有:
下面的推导过程详见梯度下降法在强凸函数的收敛性分析。其中
I
\mathcal I
I表示单位矩阵。对正定矩阵
∇
2
f
(
⋅
)
\nabla^2 f(\cdot)
∇2f(⋅)进行分解,可得到
n
n
n个正特征值:
{
λ
i
}
i
=
1
n
\{\lambda_i\}_{i=1}^n
{λi}i=1n;
其中
Q
\mathcal Q
Q是正交矩阵。
∇
2
f
(
⋅
)
=
Q
Λ
Q
−
1
=
Q
(
λ
1
λ
2
⋱
λ
n
)
Q
−
1
\nabla^2 f(\cdot) = \mathcal Q \Lambda \mathcal Q^{-1} = \mathcal Q (λ1λ2⋱λn) \mathcal Q^{-1}
∇2f(⋅)=QΛQ−1=Q
λ1λ2⋱λn
Q−1
这些特征值必然满足:
0
<
m
≤
λ
m
i
n
≤
λ
m
a
x
≤
L
{
λ
m
i
n
=
min
{
λ
i
}
i
=
1
n
λ
m
a
x
=
max
{
λ
j
}
j
=
1
n
0 < m \leq \lambda_{min} \leq \lambda_{max} \leq \mathcal L \quad {λmin=min{λi}ni=1λmax=max{λj}nj=1
0<m≤λmin≤λmax≤L{λmin=min{λi}i=1nλmax=max{λj}j=1n
在上述条件下,取一种特殊情况:
关于
α
=
1
L
=
2
L
+
L
∈
(
0
,
2
L
+
m
)
α=1L=2L+L∈(0,2L+m)
α=L1=L+L2∈(0,L+m2)恒成立,目的是将条件数与收敛速度关联起来。
λ
m
a
x
=
L
;
λ
m
i
n
=
m
;
α
=
1
L
\lambda_{max} = \mathcal L;\lambda_{min} = m;\alpha = \frac{1}{\mathcal L}
λmax=L;λmin=m;α=L1
将上述情况代入原式,那么线性收敛定义式可简化为:
∥
x
k
−
α
⋅
∇
f
(
x
k
)
−
x
∗
∥
∥
x
k
−
x
∗
∥
≤
1
−
1
L
⋅
2
L
m
L
+
m
=
λ
m
a
x
−
λ
m
i
n
λ
m
a
x
+
λ
m
i
n
=
1
−
1
K
[
∇
2
f
(
⋅
)
]
1
+
1
K
[
∇
2
f
(
⋅
)
]
‖xk−α⋅∇f(xk)−x∗‖‖xk−x∗‖≤√1−1L⋅2LmL+m=√λmax−λminλmax+λmin=√1−1K[∇2f(⋅)]1+1K[∇2f(⋅)]
∥xk−x∗∥∥xk−α⋅∇f(xk)−x∗∥≤1−L1⋅L+m2Lm=λmax+λminλmax−λmin=1+K[∇2f(⋅)]11−K[∇2f(⋅)]1
其中
K
[
∇
2
f
(
⋅
)
]
=
λ
m
a
x
λ
m
i
n
K[∇2f(⋅)]=λmaxλmin
K[∇2f(⋅)]=λminλmax被称作
Hessian Matrix
⇒
∇
2
f
(
⋅
)
\text{Hessian Matrix} \Rightarrow \nabla^2 f(\cdot)
Hessian Matrix⇒∇2f(⋅)的条件数
(
Condition Number
)
(\text{Condition Number})
(Condition Number),可以发现:
也就是说:
范数通常被用来度量向量空间中,向量的长度或大小。我们通常使用特征空间中的点与特征空间原点之间的明可夫斯基距离来描述向量的范数:
D
m
k
(
x
,
O
)
=
[
∑
k
=
1
n
(
x
k
)
m
]
1
m
\mathcal D_{mk}(x,\mathcal O) = \left[\sum_{k=1}^{n}(x_k )^m \right]^{\frac{1}{m}}
Dmk(x,O)=[k=1∑n(xk)m]m1
其中
m
m
m表示阶数,上式也称作
m
m
m-阶范数。例如
m
=
2
m=2
m=2对应的二阶范数(也称欧式范数):
∥
x
∥
2
=
[
∑
k
=
1
n
(
x
k
)
2
]
1
2
=
x
1
2
+
x
2
2
+
⋯
+
x
n
2
‖x‖2=[n∑k=1(xk)2]12=√x21+x22+⋯+x2n
∥x∥2=[k=1∑n(xk)2]21=x12+x22+⋯+xn2
范数不仅描述了向量的大小;反过来,如果固定范数的阶数和大小,它可以描述满足阶数与大小条件的集合。以二维特征空间为例,在范数大小为
1
1
1的前提下,不同阶数对应的集合形状表示如下:

很明显,当阶数
p
<
1
p < 1
p<1是,其对应集合是一个非凸集合;相反,对应集合是一个凸集合。
在笔记线搜索方法——方向角度的结尾提到:在当前迭代步骤中,负梯度方向作为下降方向,对应目标函数的下降效果最明显,因而被称作最速下降方向,从而称最速下降法为梯度下降法。但如果详细追究,它们之间依然存在一些区别。
梯度下降法直观地认为:负梯度方向
−
∇
f
(
⋅
)
-\nabla f(\cdot)
−∇f(⋅)是目标函数
f
(
⋅
)
f(\cdot)
f(⋅)的值下降最快的方向。对应迭代过程表示如下:
x
k
+
1
=
x
k
+
η
⋅
Δ
x
k
Δ
x
k
=
−
∇
f
(
x
k
)
x_{k+1} = x_k + \eta \cdot \Delta x_k \quad \Delta x_k = - \nabla f(x_k)
xk+1=xk+η⋅ΔxkΔxk=−∇f(xk)
因而每次迭代过程中将决策变量
x
k
x_k
xk沿着负梯度方向移动,从而使目标函数值逐渐收敛。思路虽然简单,但由于下降方向
⇒
−
∇
f
(
⋅
)
\Rightarrow - \nabla f(\cdot)
⇒−∇f(⋅)被确定,导致梯度下降法的收敛速度非常大的依赖于目标函数
f
(
⋅
)
f(\cdot)
f(⋅)自身
Hessian Matrix
\text{Hessian Matrix}
Hessian Matrix的条件数。
解释:
Hessian Matrix
\text{Hessian Matrix}
Hessian Matrix并没有直接参与梯度下降法的迭代过程,只是下降方向被确定为
−
∇
f
(
⋅
)
- \nabla f(\cdot)
−∇f(⋅)时,作为
f
(
⋅
)
f(\cdot)
f(⋅)自身性质的条件数就已经对梯度下降法的收敛速度进行约束了。
根据上面链接笔记中的描述:负梯度方向只是下降方向的一种,而下降方向
P
k
\mathcal P_k
Pk的判定逻辑是:满足目标函数
f
(
x
k
+
1
)
=
f
(
x
k
+
α
k
P
k
)
f(x_{k+1}) = f(x_k + \alpha_k \mathcal P_k)
f(xk+1)=f(xk+αkPk)的一阶泰勒展开式与
f
(
x
k
)
f(x_k)
f(xk)之间存在严格的单调性:
其中
O
(
∥
α
k
P
k
∥
)
\mathcal O(\|\alpha_k \mathcal P_k\|)
O(∥αkPk∥)表示关于
α
k
P
k
\alpha_k\mathcal P_k
αkPk的二阶无穷小。
f
(
x
k
+
1
)
=
f
(
x
k
+
α
k
P
k
)
=
f
(
x
k
)
+
1
1
!
α
k
⋅
(
P
k
)
T
∇
f
(
x
k
)
+
O
(
∥
α
k
P
k
∥
)
≈
f
(
x
k
)
+
α
k
⋅
(
P
k
)
T
∇
f
(
x
k
)
Monotonicity:
f
(
x
k
+
1
)
−
f
(
x
k
)
≈
α
k
⋅
(
P
k
)
T
∇
f
(
x
k
)
<
0
⇒
(
P
k
)
T
∇
f
(
x
k
)
<
0
(
α
k
>
0
)
f(xk+1)=f(xk+αkPk)=f(xk)+11!αk⋅(Pk)T∇f(xk)+O(‖αkPk‖)≈f(xk)+αk⋅(Pk)T∇f(xk)Monotonicity: f(xk+1)−f(xk)≈αk⋅(Pk)T∇f(xk)<0⇒(Pk)T∇f(xk)<0(αk>0)
f(xk+1)Monotonicity: f(xk+1)−f(xk)=f(xk+αkPk)=f(xk)+1!1αk⋅(Pk)T∇f(xk)+O(∥αkPk∥)≈f(xk)+αk⋅(Pk)T∇f(xk)≈αk⋅(Pk)T∇f(xk)<0⇒(Pk)T∇f(xk)<0(αk>0)
从方向导数的角度考虑,将第
k
k
k次迭代过程的更新方向记作变量
P
\mathcal P
P,从而将最速下降方向
P
k
\mathcal P_k
Pk描述为:选择合适的更新方向
P
\mathcal P
P,使得
f
(
x
k
+
1
)
f(x_{k+1})
f(xk+1)或者
f
(
x
k
+
1
)
−
f
(
x
k
)
f(x_{k+1}) - f(x_k)
f(xk+1)−f(xk)关于
P
\mathcal P
P方向的方向导数最小:
由于
f
(
x
k
)
f(x_k)
f(xk)是已知项,因而其关于
P
\mathcal P
P的方向导数为
0
0
0。但
f
(
x
k
+
1
)
f(x_{k+1})
f(xk+1)与
f
(
x
k
+
1
)
−
f
(
x
k
)
f(x_{k+1}) - f(x_k)
f(xk+1)−f(xk)描述的意义不相同,这里使用
f
(
x
k
+
1
)
−
f
(
x
k
)
f(x_{k+1}) - f(x_k)
f(xk+1)−f(xk)进行描述。关于该方向导数的描述,见《深度学习(花书)》P55.如果对上述最速下降方向进行标准化,即标准化最速下降方向
(
Normalized Steepest Descent
)
(\text{Normalized Steepest Descent})
(Normalized Steepest Descent):在单位范数
(
Unit Norm
)
(\text{Unit Norm})
(Unit Norm)步长内能够使目标函数下降最多的方向。记作:
需要注意的是,这里的单位范数步长描述的并不是
α
k
\alpha_k
αk(因为它是标量),而是对
P
\mathcal P
P的约束。由于这里仅观察
P
\mathcal P
P的变化情况,从而令
α
k
=
1
\alpha_k=1
αk=1。
P
n
s
d
=
arg
min
P
{
[
∇
f
(
x
k
)
]
T
P
∣
∥
P
∥
≤
1
}
\mathcal P_{nsd} = \mathop{\arg\min}\limits_{\mathcal P} \{[\nabla f(x_k)]^T \mathcal P \mid \|\mathcal P\| \leq 1\}
Pnsd=Pargmin{[∇f(xk)]TP∣∥P∥≤1}
对应非标准化的最速下降方向
P
s
d
\mathcal P_{sd}
Psd可表示为:
其中
∥
⋅
∥
∗
\| \cdot \|_*
∥⋅∥∗表示对偶范数;其对应展开式中
sup
\sup
sup表示上确界。
P
s
d
=
∥
∇
f
(
x
k
)
∥
∗
P
n
s
d
=
sup
{
[
∇
f
(
x
k
)
]
T
P
n
s
d
∣
∥
P
n
s
d
∥
≤
1
}
Psd=‖∇f(xk)‖∗Pnsd=sup{[∇f(xk)]TPnsd∣‖Pnsd‖≤1}
Psd=∥∇f(xk)∥∗Pnsd=sup{[∇f(xk)]TPnsd∣∥Pnsd∥≤1}
可以看出:最速下降方向受到单位范数步长的限制。重点在于:不同类型的单位范数步长,其对应的限制范围也存在差异。例如
p
=
1
,
2
,
4
p=1,2,4
p=1,2,4时对应小于单位范数的描述范围对比如下:
其中橙色线描述的单位圆也被称作欧式范数。

再如:矩阵
2
2
2-范数
∥
z
∥
Q
\|z\|_{\mathcal Q}
∥z∥Q:对应小于单位范数描述范围表示如下:
关于矩阵2范数
∥
z
∥
Q
=
(
z
T
Q
z
)
1
/
2
\|z\|_{\mathcal Q} = (z^T \mathcal Qz)^{1/2}
∥z∥Q=(zTQz)1/2的描述范围与
Q
\mathcal Q
Q的性质相关。下图中的橙色线表示对角矩阵
Q
=
(
1
0
0
2
)
\mathcal Q = (1002)
Q=(1002)的情况;蓝色线则表示正定矩阵
Q
=
(
1
1
1
2
)
\mathcal Q = (1112)
Q=(1112)的情况。

如果上述关于 P n s d = arg min V { [ ∇ f ( x k ) ] T P ∣ ∥ P ∥ ≤ 1 } \mathcal P_{nsd} = \mathop{\arg\min}\limits_{\mathcal V} \{[\nabla f(x_k)]^T \mathcal P \mid \|\mathcal P\| \leq 1\} Pnsd=Vargmin{[∇f(xk)]TP∣∥P∥≤1}的描述中,单位范数步长 ∣ ∣ P ∣ ∣ ||\mathcal P|| ∣∣P∣∣是欧式范数,那么此时的最速下降法与梯度下降法等价。因为在欧式范数 ∥ P ∥ ≤ 1 \|\mathcal P\|\leq 1 ∥P∥≤1的描述范围内,某位置 x k x_k xk的标准最速下降方向 P n s d \mathcal P_{nsd} Pnsd与该位置对应的负梯度方向 − ∇ f ( x k ) -\nabla f(x_k) −∇f(xk)相同。举一个例子:
假设目标函数
f
(
x
)
=
x
T
Q
x
;
x
∈
R
2
f(x) = x^T \mathcal Q x;x \in \mathbb R^2
f(x)=xTQx;x∈R2是标准型,并且
Q
=
I
\mathcal Q = \mathcal I
Q=I(单位矩阵)。该函数的等值线以及欧式范数的描述范围表示如下:
此时,无论是欧式范数描述范围还是等值线,都是标准圆的格式,因而使得
[
∇
f
(
x
k
)
]
T
P
[\nabla f(x_k)]^T \mathcal P
[∇f(xk)]TP达到最小的方向就是负梯度方向。

其中红色虚线表示 f ( x ) f(x) f(x)的等值线;蓝色圆以及内部的灰色阴影表示欧式范数描述范围。在迭代过程中某时刻黄色点 x k x_k xk,此时该点处的梯度方向 ∇ f ( x k ) \nabla f(x_k) ∇f(xk)与负梯度方向 − ∇ f ( x k ) -\nabla f(x_k) −∇f(xk)见上图。
从最速下降法的角度观察,为了让 x k x_k xk更快地达到最优值点(特征空间原点处所在位置):
至此,找到一个红色点,坐标空间原点指向红色点的向量就是
P
n
s
d
\mathcal P_{nsd}
Pnsd。从图像中可以看出:负梯度方向
−
∇
f
(
x
k
)
-\nabla f(x_k)
−∇f(xk)与
P
n
s
d
\mathcal P_{nsd}
Pnsd所指方向完全相同。
由于欧式范数的原因,
P
n
s
d
\mathcal P_{nsd}
Pnsd与
−
∇
f
(
x
k
)
-\nabla f(x_k)
−∇f(xk)大小、方向均完全相同。
很明显,此时的这种目标函数格式,可以满足:全局范围内,梯度下降方向等价于最速下降方向。
那么在其他目标函数中,欧式范数会产生什么样的现象
?
?
?
假设目标函数
f
(
x
)
=
x
T
Q
x
;
x
∈
R
2
f(x) = x^T \mathcal Q x;x\in \mathbb R^2
f(x)=xTQx;x∈R2,其中
Q
\mathcal Q
Q是正定矩阵且
Q
=
(
1
1
1
2
)
\mathcal Q = (1112)
Q=(1112)。假设这里依然使用欧式范数,对应等值线与欧式范数描述范围表示如下:
区别于上图,此时的等值线是椭圆,并且对应正交基与坐标轴不平行。

与上面的配置相同,此时的最速下降法与梯度下降法依然是等价的。绿色箭头表示负梯度方向
−
∇
f
(
x
k
)
-\nabla f(x_k)
−∇f(xk)或
P
n
s
d
\mathcal P_{nsd}
Pnsd。这里发现一个新现象:更新方向
−
∇
f
(
x
)
-\nabla f(x)
−∇f(x)或
P
n
s
d
\mathcal P_{nsd}
Pnsd并没有指向最优方向,也就是说:这里的更新方向并不是最优方向;真正指向最优方向的是红色箭头。
换一种角度:假设这里没有使用欧式范数,而是使用
L
1
\mathcal L_1
L1范数,也可以得到一些其他效果:

其中绿色箭头描述的是梯度下降法产生的更新方向;红色箭头则描述的是最速下降法的更新方向。很明显:红色箭头描述的位置相比于绿色箭头更接近最优解。此时两者不等价。
范数的选取对于收敛速度产生较大的影响。当目标函数
f
(
⋅
)
f(\cdot)
f(⋅)二阶连续可微的情况下,使用矩阵
2
2
2-范数,它的收敛速度会显著提高。在关于目标函数
f
(
x
)
f(x)
f(x)优化问题的迭代过程中,在
x
k
x_k
xk点处如果使用其对应
Hessian Matrix
⇒
∇
2
f
(
x
k
)
\text{Hessian Matrix} \Rightarrow \nabla^2 f(x_k)
Hessian Matrix⇒∇2f(xk)定义的矩阵
2
2
2-范数,该位置对应的实际更新方向
P
s
d
\mathcal P_{sd}
Psd可表示为:
P
s
d
=
−
[
∇
2
f
(
x
k
)
]
−
1
∇
f
(
x
k
)
\mathcal P_{sd} = - [\nabla^2 f(x_k)]^{-1} \nabla f(x_k)
Psd=−[∇2f(xk)]−1∇f(xk)
这就是经典牛顿法描述的更新方向。
这里不再展开,只是为了描述选取合适的关于更新方向的范数约束,可以提高迭代的收敛速度。
Reference
\text{Reference}
Reference:
笔记 || 梯度法与最速下降法的本质区别