📜  Adagrad 优化器背后的直觉

📅  最后修改于: 2022-05-13 01:58:07.381000             🧑  作者: Mango

Adagrad 优化器背后的直觉

Adagrad代表自适应梯度优化器。有梯度下降、随机梯度下降、小批量 SGD 等优化器,都用于减少与权重相关的损失函数。权重更新公式如下:

(\mathrm{w})_{\mathrm{new}}=(\mathrm{w})_{\mathrm{old}}-\eta \frac{\partial \mathrm{L}}{\mathrm{dw}(\text { old })}

基于迭代,这个公式可以写成:

w_{t}=w_{t-1}-\eta \frac{\partial L}{\partial w(t-1)}

在哪里



w(t) = 当前迭代的 w 值, w(t-1) = 前一次迭代的 w 值, η = 学习率。

在 SGD 和小批量 SGD 中,每个权重的 η 值曾经是相同的,或者说对于每个参数。通常, η = 0.01 。但是在 Adagrad Optimizer 中,核心思想是每个权重都有不同的学习率 (η)这个修改非常重要,在现实世界的数据集中,一些特征是稀疏的(例如,在词袋中大部分特征为零所以它是稀疏的)和一些是密集的(大多数特征将是中午零) ,因此对于所有权重保持相同的学习率值不利于优化。 adagrad 的权重更新公式如下:

\mathrm{w}_{\mathrm{t}}=\mathrm{w}_{\mathrm{t}-1}-\eta_{\mathrm{t}}^{\prime} \frac{\partial \mathrm{L}}{\partial \mathrm{w}(\mathrm{t}-1)}

其中alpha(t)表示每次迭代时每个权重的不同学习率。

\eta_{\mathrm{t}}^{\prime}=\frac{\eta}{\operatorname{sqrt}\left(\alpha_{\mathrm{t}}+\epsilon\right)}

这里, η是一个常数, epsilon是一个小的正值,以避免在alpha(t)变为 0 的情况下除以零错误,因为如果 alpha(t) 变为 0,那么学习率将变为 0,然后乘以导数会使 w(old) = w(new),这将导致小的收敛。

\alpha_{t}=\sum_{i=1}^{t} g_{i}^{2}

g_{i=} \frac{\partial L}{\partial w(o l d)}

g_i是关于重量的损失的导数,并且g_i^2将始终为正,因为它是一个平方项,这意味着 alpha(t) 也将保持为正,这意味着alpha(t) >= alpha(t-1)

从公式可以看出,作为alpha(t)\eta_t^'彼此成反比,这意味着随着alpha(t) 的增加, \eta_t^' 会减少。这意味着随着迭代次数的增加,学习率会自适应地降低,因此您无需手动选择学习率。

Adagrad 的优点:

  • 无需手动调整学习率。
  • 更快的收敛
  • 更可靠

Adagrad 优化器的一个主要缺点是 alpha(t) 会随着迭代次数的增加而变大,因此\eta_t^'会以较大的速度下降。这将使旧权重几乎等于新权重,这可能会导致收敛缓慢。