论文提出了一个估计梯度对神经网络影响的函数
n
e
t
(
g
t
)
net(g_t)
net(gt),这个函数基于Adam二阶动量更新规则
作者根据该公式分析,指出Adam存在的几个个问题:
- 神经网络在通过Adam优化的过程中,二阶动量 v t v_t vt与梯度 g t g_t gt存在正相关,所以当一个 g t g_t gt更新到错误方向时, v t v_t vt更新也会出现错误,见公式 v t = β 2 v t − 1 + ( 1 − β 2 ) g t 2 v_t=\beta_2v_{t-1}+(1-\beta_2)g_t^2 vt=β2vt−1+(1−β2)gt2。
- Adam的步长更新存在不均衡问题,见公式 α v t \frac{\alpha}{\sqrt{v_t}} vtα,即梯度越大的时候,步长更新越小,梯度越小是步长更新越大。最终导致了Adam算法可能不收敛。
- 因此,在Adam的优化中,正确的梯度方向 C C C对结果产生的影响小于错误的梯度方向 − 1 -1 −1。
作者提出来解决方案,
- 将 g t g_t gt与 v t v_t vt解相关,使用 g t − n g_{t-n} gt−n计算 v t v_t vt。
- 将 g t ( t = 1...... n ) g_t(t=1......n) gt(t=1......n),分为两部分,分别用来计算一阶动量 m t m_t mt与二阶动量 v t v_t vt,即将 v t v_t vt与 m t m_t mt解相关(这块没理解为啥)。
- 对神经网络不同的层的参数更新使用不同的步长,每层一个步长。每层的参数更新只使用这一层前面参数。
存在的问题: - 为何 g t g_t gt与 g t − n g_{t-n} gt−n相互独立,我认为,这两个变量必然是 g t g_t gt依赖于 g t − n g_{t-n} gt−n,因为每次更新 θ \theta θ必然依赖于 g g g,新的 θ t + 1 \theta_{t+1} θt+1更新依赖于 g t g_t gt, θ t + 1 \theta_{t+1} θt+1又影响 g t + 1 g_{t+1} gt+1,所以 g t 、 g t + 1 g_t、g_{t+1} gt、gt+1相互依赖。