梯度下降是一种优化算法。通过调整网络的参数,使网络的预测值与网络的实际/期望值之间的差异尽可能小,可以改善神经网络的性能。梯度下降采用参数的初始值,并使用基于演算的操作将其值调整为使网络尽可能精确的值,是优化神经网络性能的主要方法。
假设有一个图表示神经网络产生的误差量。图的底部是误差最小的点,而图的顶部是误差最大的点。如果想要从图形的顶部向下移动到底部,梯度就是一种量化误差与神经网络权值之间关系的方法。
这两者之间的关系可以用斜率来表示,不正确的权重会产生更多的误差。斜率/梯度的陡度表示模型的学习速度。更陡的斜率意味着误差的大幅减少,模型学习速度更快,而如果斜率为零,则模型处于一个平台上,没有学习,可以通过计算模型的梯度来减少误差。
为了进行梯度下降,首先必须计算梯度。计算梯度需要知道损失成本函数,用成本函数来确定导数。在微积分中,导数指的是函数在某一点的斜率,所以基本上就是根据损失函数来计算斜率。
计算导数,或者确定斜率。通过给适当的符号来调整系数,得到损失的导数将确定斜率的上下方向。梯度下降的类型主要有三种:
批量梯度下降:这种形式的梯度下降在更新系数之前会遍历所有的训练样本。这种类型的梯度下降很可能是最有效的梯度下降计算形式,因为权重只有在整个批处理完成后才更新,这意味着总更新次数更少。缺点是,某些时候,批量梯度下降会使训练耗时较长。
随机梯度下降:在随机梯度下降中,每次梯度下降迭代和参数更新只处理一个训练实例。因为只处理一个训练示例,所以它比批处理梯度下降收敛更快。但是,由于该过程必须对训练集中的每个项目执行,因此如果数据集较大的话,则可能需要相当长的时间才能完成。
小批量梯度下降:小批量梯度下降通过将整个训练数据集分割成若干子部分来操作。它创建通过网络运行的较小的批量,当使用小批量计算错误时,系数将更新。小批量梯度下降是介于随机梯度下降和批量梯度下降之间的中间地带,该模型的更新频率明显高于批量梯度下降,这意味着该模型的最优参数收敛速度略快且更稳健。