在使用基本的梯度下降法优化算法时,会遇到一个常见的问题一一要优化的参数对于目标函数的依赖各不相同。形象地说,对于某些参数,通过算法已经优化到了极小值附近,但是有的参数仍然有着很大的梯度,这就是使用统一的全局学习率可能出现的问题。如果学习率太小,则梯度很大的参数会有一个很慢的收敛速度;如果学习率太大,则己经优化得差不多的参数可能会出现不稳定的情况。因此,最近,提出了一些增量(或者基于小批量)的算法来自适应模型参数的学习率。
下面对这些算法进行简单介绍。
AdaGrad算法
AdaGrad算法能够独立地适应所有模型参数的学习率,当参数的损失偏导值比较大时,它应该有一个较大的学习率;而当参数的损失偏导值比较小时,它应该有一个较小的学习率。
首先设全局学习率为σ,初始化的参数为ω,一个为了数值稳定而创建的小常数δ(建议默认取=10-7),以及一个梯度累积变量r (初始化r=0 )。然后就是算法的主体,循环执行以下步骤,在没有达到停止的条件前不会停止。
1)从训练、数据集中取出包含m 个样本的小批量数据的对应的目标用yi 表示:
2 )在小批量数据的基础上按照以下公式计算梯度:
3 )累积平方梯度ÿ