深度学习_深度学习基础知识_Adagrad

Adagrad介绍

Adagrad是一种基于梯度的优化算法:它将学习速率与参数相适应,对不同的变量提供不同的学习率(它增加了罕见但信息丰富的特征的影响)。因此,它非常适合处理稀疏数据。

在基本的梯度下降法优化中,有个一个常见问题是,要优化的变量对于目标函数的依赖是各不相同的。对于某些变量,已经优化到了极小值附近,但是有的变量仍然在梯度很大的地方,这时候一个统一的全局学习率是可能出现问题的。如果学习率太小,则梯度很大的变量会收敛很慢,如果学习率太大,已经趋于收敛的变量可能会不稳定。下图就是原始SGD更新参数的方式:

在这里插入图片描述

针对上面的问题,Adagrad(Adaptive Gradient)优化方法出现了,字面上理解就是自适应学习率。AdaGrad的基本思想是对每个变量用不同的学习率,这个学习率在一开始比较大,用于快速梯度下降。随着优化过程的进行,对于已经下降很多的变量,则减缓学习率,对于还没怎么下降的变量,则保持一个较大的学习率:

在这里插入图片描述

上式中 t t 代表迭代的次数。 ϵ ϵ 一般是一个极小值,作用是防止分母为0 。 G i , t G_i,t 表示了前 t t 步参数 θ i θ_i 梯度的平方累加.把沿路的Gradient的平方根,作为Regularizer。分母作为Regularizer项的工作机制如下:

  1. 训练前期,梯度较小,使得Regularizer项很大,放大梯度。[激励阶段]

  2. 训练后期,梯度较大,使得Regularizer项很小,缩小梯度。[惩罚阶段]

Adagrad的缺点

AdaGrad的缺点是虽然不同变量有了各自的学习率,但是初始的全局学习率还是需要手工指定。如果全局学习率过大,优化同样不稳定;而如果全局学习率过小,因为AdaGrad的特性,随着优化的进行,学习率会越来越小,很可能还没有到极值就停滞不前了。

发布了156 篇原创文章 · 获赞 48 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Rocky6688/article/details/104838871