本文是Deep Learning 之 最优化方法系列文章的AdaGrad方法(自适应算法1)。主要参考Deep Learning 一书。
以下节选自个人深度学习笔记。
内容整合来源于网络与个人理解。
Adagrad
口 应该为不同的参数设置不同的学习步长。
口 梯度越小,则学习步长越大,反之亦然。
口 想象一下:在缓坡上,可以大步地往下跑;而且陡坡上,只能小步地往下挪
③ 上面提到的方法对于所有参数都使用了同一个更新速率。但是同一个更新速率不一定适合所有参数。比如有的参数可能已经到了仅需要微调的阶段,但又有些参数由于对应样本少等原因,还需要较大幅度的调动。
Adagrad就是针对这一问题提出的,自适应地为各个参数分配不同学习率的算法。
其中 同样是当前的梯度,连加和开根号都是元素级别的运算。θ是初始学习率,由于之后会自动调整学习率,所以初始值就不像之前的算法那样重要了。而是一个比较小的数,用来保证分母非0。
其含义是,对于每个参数,随着其更新的总距离增多,其学习速率也随之变慢。
④ Adagrad算法存在三个弊端:
1. 其学习率是单调递减的,训练后期学习率非常小。
2. 其需要手工设置一个全局的初始学习率。
3. 更新时,左右两边的单位不同一。
⑤ 具体见算法:
参考: