On this page

    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$ 用来控制数值稳定性