优化与训练

AdaGrad(自适应梯度)

/ AD-uh-grad /

AdaGrad 是最早一批自动给每个权重配专属学习率的优化器之一。它的指导念头是:那些已经被大幅更新过很多次的权重,多半不再需要大步子了,而那些极少挪动的权重,则值得更大的步子。于是它逐渐放慢那些频繁更新的方向,让那些被冷落的方向赶上来——当有些特征频繁出现、另一些却罕见时,这很管用。

从机制上说,AdaGrad 为每个权重保留一份「它有史以来见过的所有梯度平方」的累加和,再把那个权重的步子除以这个和的平方根。因为这个和只增不减,每个权重的有效步长会随时间不断缩小。这让 AdaGrad 特别擅长稀疏问题——比如文本,大多数词都很罕见——因为罕见的特征累加得少,仍能得到有意义的更新。

可正是这个只增不减的和,是 AdaGrad 的致命弱点。分母永不停止增长,于是步长最终缩向零,在模型还没练完之前学习就磨到停顿——对于训练时间很长的深层网络,这是个真问题。这个缺陷,恰恰就是 RMSprop 和 Adam 所要修补的:用一份衰减平均,去替换那个累加和。如今 AdaGrad 很少是最终的选择,但它是人人都在用的那些自适应优化器的历史根脉,所以值得一懂。

训练一个文本分类器时,「the」几乎出现在每个样本里,而「perihelion(近日点)」只出现一次。AdaGrad 让那个罕见词的权重在它唯一一次露面时迈出一大步、富有意义,而「the」——已被调整过数千次——只得到一个极小的步子。坏处是:过了足够多遍之后,每一步都缩得太小,学习几乎停了下来。

早期对罕见特征很棒;后期因步长缩到几近于无而停滞。

AdaGrad 那个单调缩小的步长,对稀疏、短期的训练是优点,对漫长的深度学习训练却是缺陷。正是这一个局限,才有了 RMSprop 和 Adam。

又称
Adaptive Gradient自适应梯度自適應梯度