算法背景
梯度下降法的优化各式各样,主要分为两种:
- 减少每一次的计算量【SGD、、、】
- 优化下降路径【动量法、AdaGrad、前两者结合的Adam算法】
今天介绍通过优化学习率来达到优化梯度下降路径的AdaGrad方法
Adagrad算法
Adagrad优化算法被称为自适应学习率优化算法,但是调整学习率很难被人为操作,所以 Adagrad 能够自适应做这件事。
如下图所示,为几个不同的梯度下降算法的梯度下降过程,其中五角星为最优点:
核心思想
如果一个参数的梯度一直都非常大,那么其对应的学习率就变小一点,防止震荡,而一个参数的梯度一直都非常小,那么这个参数的学习率就变大一点,使得其能够更快地更新。
算法核心
Adagrad优化算法就是在每次使用一个 batch size的数据进行参数更新的时候,计算所有参数的梯度,对于每个参数,初始化一个变量 s ,然后每次将该参数的梯度平方求和累加到这个变量 s 上,然后在更新这个参数的时候,学习率就变为:
-
η为初始学习率
-
ϵ是为了数值稳定性而加上的,因为有可能 s 的值为 0,那么 0 出现在分母就会出现无穷大的情况,通常 ϵ 取 10的负10次方。
-
这样不同的参数由于梯度不同,他们对应的 s 大小也就不同,所以上面的公式得到的学习率也就不同,这也就实现了自适应的学习率。
使用自适应的学习率就可以帮助算法在梯度大的参数方向减缓学习速率,而在梯度小的参数方向加快学习速率,这就可以促使神经网络的训练速度的加快。