【d2l】Adadelta

Posted by ShawnD on September 7, 2021

Adadelta

Adadelta 是 AdaGrad的另一个变体。 主要的区别是它减少了坐标的自适应学习率的数量。此外,它使用变化量本身作为未来变化的校准,因此它实际上没有传统意义的学习率。

The Algorithm

Adadelta 使用两个状态变量, $s_t$ 存储梯度的第二动量的 leaky average, $\Delta x_t$ 存储在模型本身参数的变化的第二动量的 leaky average。

给定当前的参数 $\rho$, 与11.8 相似, 我们得到下面的 leaky 更新:

\[s_t = \rho s_{t-1} + (1 - \rho) g_t^2\]

与11.8不同的是, 我们使用缩放的梯度 $g_t’$ 更新:

\[x_t = x_{t-1} - g_t'\]

$g_t’$ 可以计算如下:

\[g_t' = \frac{\sqrt{\Delta x_{t-1} + \epsilon}}{\sqrt{s_t + \epsilon}} \odot g_t\]

其中 $\Delta x_{t-1}$ 是缩放梯度 $g_t’$ 平方的 leaky average。 我们初始化 $\Delta x_0$ 为0, 并且在每个时间步更新 $g_t’$:

\[\Delta x_t = \rho \Delta x_{t-1} + (1 - \rho) g_t'^2\]

$\epsilon$ 用来控制数值稳定性