AdaGrad(Adaptive Gradient Algorithm)是一种自适应学习率的梯度下降算法,由Duchi等人在2011年提出。它的核心思想是对每个参数根据其历史梯度的平方和进行自适应地调整学习率。这意味着对于出现频率高的特征,其学习率会较低;而对于出现频率低的特征,其学习率会较高。这种方式使得模型在稀疏数据上的表现更好。

AdaGrad算法的主要特点包括:

  1. 自适应学习率:AdaGrad算法通过记录每次迭代过程中的梯度方向和大小,对不同的参数使用不同的自适应学习率。具有较大偏导的参数相应地有一个快速下降的学习率,而具有小偏导的参数在学习率上有相对较小的下降。
  2. 对稀疏数据的适应性:AdaGrad算法特别适合处理稀疏数据,因为它能够为不常见的特征赋予更大的学习率,从而在更新时给予更多的权重。
  3. 学习率衰减:随着训练的进行,AdaGrad算法中的学习率会逐渐减小,因为累积的梯度平方和会不断增加,导致分母变大,学习率随之减小。

AdaGrad的参数更新公式如下:

  • :计算损失函数关于参数的梯度。
  • :累积梯度的平方和。
  • :根据累积的梯度平方和调整学习率,其中是为了数值稳定性而添加的一个小常数。
  • :更新参数。

尽管AdaGrad算法在处理稀疏数据时表现良好,但它也存在一些缺点,比如学习率会随着时间逐渐减小到接近于零,导致训练后期几乎不更新参数,这限制了其在某些任务中的应用。此外,AdaGrad对初始学习率的选择非常敏感,需要仔细调整以获得最佳性能。