杨曼,黄远民,石远豪
(1.佛山职业技术学院,广东 佛山 528137;2.佛山赛宝信息产业技术研究院有限公司,广东 佛山 528000)
一般而言,损失函数很复杂,参数空间庞大,而通过巧妙的使用梯度来寻找函数最小值的方法就是梯度法,梯度表示的是各点处的函数值减小最多的方向。在神经网络的学习中,寻找最小值的梯度法称为梯度下降法,由于神经网络中选取的训练数据多为随机批量数据,因此称为随机梯度下降法。用数学公式来表示方法如下式所示:

在使用SGD训练参数时,SGD每次都会在当前位置上沿着负梯度方向更新,并不考虑之前的方向梯度大小,有时候会下降的非常慢,并且可能会陷入到局部最小值中,动量的引入就是为了加快学习过程,引入一个新的变量去积累之前的梯度(通过指数衰减平均得到),实现加速学习过程的目的。用数学公式来表示方法如下式所示:

这里变量v表示物体在梯度方向上的受力,遵循在力的作用下,物体的速度增加这一法则,v初始为None,若当前的梯度方向与累积的历史梯度方向一致,则当前的梯度会被加强,从而这一步下降的幅度更大。若当前的梯度方向与累积的梯度方向不一致,则会减弱当前下降的梯度幅度。a初始值设定为0.5、0.9或者0.99。
AdaGrad算法的思想是每一次更新参数,不同的参数使用不同的学习率。将每一个参数的每一次迭代的梯度取平方累加后再开方,用全局学习率除以这个数,作为学习率的动态更新。……