原理

Adagrad的核心思想是为每个参数维护一个历史梯度平方和,并基于这个累积值来调整学习率。对于具有较大历史梯度平方和的参数,其学习率会减小;而对于那些历史梯度平方和较小的参数,则允许有较大的学习率。

梯度更新

给定时间步时的参数,在时刻的更新规则如下:

  • 表示在第次迭代时对参数计算得到的梯度。
  • 是一个对角矩阵,其每个对角元素是直到时间步为止所有先前梯度关于的平方和。更新公式
  • 是初始学习率。
  • 是为了数值稳定性而添加的小常数(通常设置为),以避免除零错误。

优点

  • 无需手动设置学习率:Adagrad自动调整学习率,这减少了调参的工作量。

  • 适合稀疏数据:对于稀疏特征的数据集表现良好,因为它能够给予罕见但信息量大的特征更大的更新步骤。

缺点

  • 学习率单调递减:由于Adagrad使用了所有先前梯度的平方和,这可能导致学习率过快地变得太小,以至于最终几乎停止学习。

  • 全局学习率的影响:尽管Adagrad能自适应地调整每个参数的学习率,但它仍然依赖于全局学习率的选择。如果选择不当,可能会影响性能。