原理
Adagrad的核心思想是为每个参数维护一个历史梯度平方和,并基于这个累积值来调整学习率。对于具有较大历史梯度平方和的参数,其学习率会减小;而对于那些历史梯度平方和较小的参数,则允许有较大的学习率。
梯度更新
给定时间步时的参数,在时刻的更新规则如下:
- 表示在第次迭代时对参数计算得到的梯度。
- 是一个对角矩阵,其每个对角元素是直到时间步为止所有先前梯度关于的平方和。更新公式
- 是初始学习率。
- 是为了数值稳定性而添加的小常数(通常设置为),以避免除零错误。
优点
-
无需手动设置学习率:Adagrad自动调整学习率,这减少了调参的工作量。
-
适合稀疏数据:对于稀疏特征的数据集表现良好,因为它能够给予罕见但信息量大的特征更大的更新步骤。
缺点
-
学习率单调递减:由于Adagrad使用了所有先前梯度的平方和,这可能导致学习率过快地变得太小,以至于最终几乎停止学习。
-
全局学习率的影响:尽管Adagrad能自适应地调整每个参数的学习率,但它仍然依赖于全局学习率的选择。如果选择不当,可能会影响性能。