学习过程是通过反向传播来完成的,以更新网络的内部值并减少损失,从而提供更准确的预测。这个过程在前一节中有描述,被称为梯度下降,这是最早的优化器算法之一。
随着数据复杂度和训练用例数量的增加,求最小值及其计算代价也变得更加困难。考虑到这一点,多年来出现了多种优化算法。
随机梯度下降(SGD)是一种迭代算法,它遵循一个函数,直到找到它的最低点梯度下降。唯一的不同之处在于SGD是根据随机例子更新网络的内部参数,而不是处理所有的例子。该方法计算成本较低,但参数方差较大,波动步长较大。
动量算法旨在减少SGD的振荡和方差,使用存储在每次迭代中的参数,以一种让人联想到加速度[29]的方式影响下一次更新。
之前的优化器使用恒定的学习率,当梯度稀疏或很小时,这是一个问题。
算法如AdaGrad[30]及其变体,如RMSProp [31], Adam[32],或AdaDelta[33],引入一个参数来修改它,实现可变学习率。
这些变体旨在缓解AdaGrad使用过去梯度[34]的指数移动平均所遭受的学习率衰减。