上图示例为鞍点 解决方案:动量(Momentum)方法、AdaGrad方法、Adam方法 分析:随机梯度下降本质上是采用迭代方式更新参数,每次迭代在当前位置的基础上,沿着某一方向迈一小步抵达下一位置,然后再下一位置重复上述步骤。随机梯度下降法的更新公式表示为:
θ
t
+
1
=
θ
t
−
η
g
t
\theta_{t+1}=\theta_{t}-\eta g_{t}
θt+1=θt−ηgt,其中,当前估计的负梯度
−
g
t
-g_{t}
−gt表示步子的方向,学习速率
η
\eta
η,控制步幅,改造的随机梯度下降法仍然基于这个更新公式。 动量(Momentum)方法 为了解决随机梯度下降法山谷震荡和鞍点停滞的问题,我们做一个简单的思维实验。想象一下纸团在山谷和鞍点处的运动轨迹,在山谷中纸团受重力作用沿山道滚下,两边是不规则的山壁,纸团不可避免地撞在山壁上,由于质量小受山壁弹力的干扰大,从一侧山壁反弹回来撞向另一侧山壁,结果来回震荡地滚下;如果当纸团来到鞍点的一片平坦之地时,还是由于质属小,速度很快减为零。纸团的情况和随机梯度下降法遇到的问题面直如出一辙。直观地,如果换成一个铁球,当沿着山谷滚下时,不容易受到途中旁力的干扰,轨迹会更稳更直;当来到鞍点中心处,在惯性作用下继续前行,从而有机会冲出这片平坦的陷阱,因此,有了动量方法,模型参数的迭代公式为:
v
t
=
γ
v
t
−
1
+
η
g
t
v_{t}=\gamma v_{t-1}+\eta g_{t}
vt=γvt−1+ηgt。
θ
t
+
1
=
θ
t
−
v
t
{\theta_{t+1}={\theta}_{t}-{v_{t}}}
θt+1=θt−vt。 具体来说,前进步伐
v
t
v_{t}
vt,由两部分组成。一是学习速率
η
{\eta}
η乘以当前估计的梯度
g
t
{g_{t}}
gt;二是带衰减的前一次步伐
v
t
−
1
{v_{t-1}}
vt−1这里,惯性就体现在对前一次步伐信息的重利用上。类比中学物理知识,当前梯度就好比当前时刻受力产生的加速度,前一次步伐好比前一-时刻的速度,当前步伐好比当前时刻的速度。为了计算当前时刻的速度,应当考虑前一时刻速度和当前加速度共同作用 的结果,因此
v
t
{v_{t}}
vt直接依赖于
v
t
−
1
{v_{t -1}}
vt−1和
g
t
{g_{t}}
gt,而不仅仅是
g
t
{g_{t}}
gt。另外,衰减系数
γ
{\gamma}
γ扮演了阻力的作用。 中学物理还告诉我们,刻画惯性的物理量是动量,这也是算法名字的由来。沿山谷滚下的铁球,会受到沿坡道向下的力和与左右山壁碰撞的弹力。向下的力稳定不变,产生的动量不断累积,速度越来越快;左右的弹力总是在不停切换,动量累积的结果是相互抵消,自然减弱了球的来回震荡。因此,与随机梯度下降法相比,动量方法的收敛速度更快,收敛曲线也更稳定,如下图示
θ
t
+
1
,
i
=
θ
t
,
i
−
η
∑
k
=
0
t
g
k
,
i
2
+
ϵ
g
t
,
i
\theta_{t+1, i}=\theta_{t, i}-\frac{\eta}{\sqrt{\sum_{k=0}^{t} g_{k, i}^{2}+\epsilon}} g_{t, i}
θt+1,i=θt,i−∑k=0tgk,i2+ϵηgt,i
其中,
θ
t
+
1
{\theta_{t+1}}
θt+1表示(t+1)时刻的参数向量
θ
t
+
1
{\theta_{t+1}}
θt+1的第
i
{i}
i个参数,
g
k
,
i
{g_{k,i}}
gk,i表示第
k
{k}
k时刻的梯度向量
g
k
{g_{k}}
gk的第
i
{i}
i个维度(方向)。另外,分母中求和的形式实现了退火过程,这是很多优化技术中常见的策略,意味着随着时间的推移,学习速率
η
∑
k
=
0
t
g
k
,
i
2
+
ϵ
\frac{\eta}{\sqrt{\sum_{k=0}^{t} g_{k, i}^{2}+\epsilon}}
∑k=0tgk,i2+ϵη越来越小。从而保证了算法的最终收敛。
Adam方法 Adam方法将惯性保持和环境感知这两个优点集于一身。 一方面,Adam记录梯度的一阶矩(first moment),即过往梯度与当前梯度的平均,这体现了惯性保持;另一方面,Adam还记录梯度的二阶矩( sccond moment),即过往梯度平方与当前梯度平方的平均,这类似AdaGrad方法,体现了环境感知能力,为不同参数产生自适应的学习速率。一阶矩和二阶矩采用类似于滑动窗口内求平均的思想进行融合,即当前梯度和近一段时间内梯度的平均值,时间久远的梯度对当前平均值的贡献呈指数衰减。具体来说,一阶矩和二阶矩采用指数衰退平均( exponential decay average)技术,计算公式为
m
t
=
β
1
m
t
−
1
+
(
1
−
β
1
)
g
t
m_{t}=\beta_{1} m_{t-1}+\left(1-\beta_{1}\right) g_{t}
mt=β1mt−1+(1−β1)gt
v
t
=
β
2
v
t
−
1
+
(
1
−
β
2
)
g
t
2
v_{t}=\beta_{2} v_{t-1}+\left(1-\beta_{2}\right) g_{t}^{2}
vt=β2vt−1+(1−β2)gt2,其中
β
1
{\beta_{1}}
β1,
β
2
{\beta_{2}}
β2为衰减系数,
m
t
{m_{t}}
mt是一阶矩,
v
t
{v_{t}}
vt是二阶矩。 如何理解一-阶矩和二阶矩呢?一阶矩相当于估计
E
[
g
t
]
\mathbb{E}\left[g_{t}\right]
E[gt]:由于当下梯度g,是随机采样得到的估计结果,因此更关注它在在统计意义上的期望;二阶矩相当于估计
E
[
g
t
]
\mathbb{E}\left[g_{t}\right]
E[gt],这点与AdaGrad方法不同,不是从开始到现在的加和,而是它的期望。它们的物理意义是,当
∥
m
t
∥
\left\|m_{t}\right\|
∥mt∥大且
v
t
{v_{t}}
vt大时,梯度大且稳定,这表明遇到一个明显的大坡,前进方向明确;当
∥
m
t
∥
\left\|m_{t}\right\|
∥mt∥趋于零且
v
t
{v_{t}}
vt大时,梯度不稳定,表明可能遇到一个峡谷,容易引起反弹震荡;当
∥
m
t
∥
\left\|m_{t}\right\|
∥mt∥大且
v
t
{v_{t}}
vt趋于零时,这种情况不可能出现;当
∥
m
t
∥
\left\|m_{t}\right\|
∥mt∥趋于零且
v
t
{v_{t}}
vt趋于零时,梯度趋于零,可能到达局部最低点,也可能走到一片坡度极缓的平地,此时要避免陷入平原( plateau)。另外,Adam方法还考虑了
m
t
{m_{t}}
mt,
v
t
{v_{t}}
vt在零初始值情况下的偏置矫正。具体来说,Adam的更新公式为
θ
t
+
1
=
θ
t
−
η
⋅
m
^
t
v
^
t
+
ϵ
\theta_{t+1}=\theta_{t}-\frac{\eta \cdot \hat{m}_{t}}{\sqrt{\hat{v}_{t}+\epsilon}}
θt+1=θt−v^t+ϵη⋅m^t其中,
m
^
t
=
m
t
1
−
β
1
t
,
v
^
t
=
v
t
1
−
β
2
t
\hat{m}_{t}=\frac{m_{t}}{1-\beta_{1}^{t}}, \hat{v}_{t}=\frac{v_{t}}{1-\beta_{2}^{t}}
m^t=1−β1tmt,v^t=1−β2tvt