在当前点
x
0
x_0
x0 处做二阶泰勒展开:
f
(
x
)
≈
f
(
x
0
)
+
(
x
−
x
0
)
T
g
+
1
2
(
x
−
x
0
)
T
H
(
x
−
x
0
)
f(x) \approx f(x_0) + (x-x_0)^T g + \frac{1}{2}(x-x_0)^T H (x-x_0)
f(x)≈f(x0)+(x−x0)Tg+21(x−x0)TH(x−x0)其中
g
g
g 是梯度,
H
H
H 是
x
0
x_0
x0 点的 Hessian 矩阵。
如果设定学习率(步长)为
ϵ
\epsilon
ϵ, 则
x
=
x
0
−
ϵ
g
x=x_0 - \epsilon g
x=x0−ϵg上式变成
f
(
x
0
−
ϵ
g
)
≈
f
(
x
0
)
+
ϵ
g
T
g
+
1
2
ϵ
2
g
T
H
g
f(x_0-\epsilon g) \approx f(x_0) + \epsilon g^T g + \frac{1}{2}\epsilon^2 g^T Hg
f(x0−ϵg)≈f(x0)+ϵgTg+21ϵ2gTHg
其中有3 项:函数的原始值、函数斜率导致的预期改善、函数曲率导致的校正。
从上图可以看出,我们使用沿负梯度方向大小为
ϵ
\epsilon
ϵ 的下降步,假设当前点梯度是1。如果不考虑函数曲率导致的校正:
- 如果二阶导数是0,代价函数将下降 ϵ \epsilon ϵ。
- 如果二阶导数是负的,函数曲线向下凹陷(向上凸出),因此代价函数将下降的比 ϵ \epsilon ϵ 多。
- 如果二阶导数是正的,函数曲线是向上凹陷(向下凸出),因此代价函数将下降的比 ϵ \epsilon ϵ 少。
当
g
T
H
g
g^THg
gTHg 为零或负时,近似的泰勒级数表明增加
ϵ
\epsilon
ϵ 将永远使
f
(
x
)
f(x)
f(x) 下降。在实践中,泰勒级数不会在
ϵ
\epsilon
ϵ 大的时候也保持准确,因此在这种情况下我们必须采取更启发式的选择。当
g
T
H
g
g^THg
gTHg 为正时,通过计算可得,使近似泰勒级数下降最多的最优步长为
ϵ
∗
=
g
T
g
g
T
H
g
\epsilon^* = \frac{g^Tg}{g^THg}
ϵ∗=gTHggTg
Hessian 的特征值决定了最优学习率的量级。
因为
λ
m
i
n
(
H
)
≤
g
T
H
g
g
T
g
≤
λ
m
a
x
(
H
)
\lambda_{min}(H) \leq \frac{g^THg}{g^Tg} \leq \lambda_{max}(H)
λmin(H)≤gTggTHg≤λmax(H)所以
1
λ
m
a
x
≤
ϵ
∗
≤
1
λ
m
i
n
\frac{1}{\lambda_{max}}\leq \epsilon^* \leq \frac{1}{\lambda_{min}}
λmax1≤ϵ∗≤λmin1