Adagrad 优化器背后的直觉
Adagrad代表自适应梯度优化器。有梯度下降、随机梯度下降、小批量 SGD 等优化器,都用于减少与权重相关的损失函数。权重更新公式如下:
基于迭代,这个公式可以写成:
在哪里
w(t) = 当前迭代的 w 值, w(t-1) = 前一次迭代的 w 值, η = 学习率。
在 SGD 和小批量 SGD 中,每个权重的 η 值曾经是相同的,或者说对于每个参数。通常, η = 0.01 。但是在 Adagrad Optimizer 中,核心思想是每个权重都有不同的学习率 (η) 。这个修改非常重要,在现实世界的数据集中,一些特征是稀疏的(例如,在词袋中大部分特征为零所以它是稀疏的)和一些是密集的(大多数特征将是中午零) ,因此对于所有权重保持相同的学习率值不利于优化。 adagrad 的权重更新公式如下:
其中alpha(t)表示每次迭代时每个权重的不同学习率。
这里, η是一个常数, epsilon是一个小的正值,以避免在alpha(t)变为 0 的情况下除以零错误,因为如果 alpha(t) 变为 0,那么学习率将变为 0,然后乘以导数会使 w(old) = w(new),这将导致小的收敛。
是关于重量的损失的导数,并且将始终为正,因为它是一个平方项,这意味着 alpha(t) 也将保持为正,这意味着alpha(t) >= alpha(t-1) 。
从公式可以看出,作为alpha(t)和彼此成反比,这意味着随着alpha(t) 的增加, 会减少。这意味着随着迭代次数的增加,学习率会自适应地降低,因此您无需手动选择学习率。
Adagrad 的优点:
- 无需手动调整学习率。
- 更快的收敛
- 更可靠
Adagrad 优化器的一个主要缺点是 alpha(t) 会随着迭代次数的增加而变大,因此会以较大的速度下降。这将使旧权重几乎等于新权重,这可能会导致收敛缓慢。