了解梯度下降很重要,因为它是机器学习和深度学习算法中部署的最常用的优化方法。它用于训练机器学习模型,并且基于凸函数。
通过迭代过程,梯度下降通过使用偏微分方程或PDE来精炼一组参数。这样做是为了将给定的成本函数最小化到其局部最小值。梯度下降是法国数学家路易斯·奥古斯丁·柯西(Louis Augustin Cauchy)于1847年发明的。
基本直觉
大多数机器学习和深度学习算法都涉及某种优化。优化是指通过更改其功能来最小化或最大化某些功能的过程。
使用梯度下降时,您将从基于一组参数的成本函数(也称为损失或误差函数)开始。目的是找到最小化成本函数的参数值。该过程从猜测一些初始参数值开始。然后,以减少成本函数的方式反复更改参数值。希望过程以最小限度结束。
更改参数值的过程涉及微积分,特别是计算成本函数的“导数”。导数给出函数在特定点的斜率。换句话说,它指定如何缩放输入中的小变化以获得输出中的相应变化。因此,导数可用于最小化成本函数,因为它告诉我们如何更改参数,以便在找到函数最小值时进行较小的改进。
常用的类比是从初始起点爬下山坡,同时选择一个方向以小步长前进到最小点。梯度下降过程使用成本函数的导数将下坡函数跟随到最小。下图说明了逐步下降过程。
所述学习率是正标量值,确定在梯度下降过程中每一步的大小。如果学习率太小,则梯度下降过程可能会很慢。而如果学习率太大,则梯度下降可能会超过最小值,并且可能无法收敛,甚至发散。即使学习率固定,梯度下降也可以收敛到局部最小值。当我们接近局部最小值时,梯度下降将自动采取较小的步骤,因此无需随时间降低学习率。
学分:斯坦福大学CS229课程笔记。梯度下降的轨迹就像爬下山谷
3种梯度下降
现代机器学习和深度学习算法中使用了三种主要的梯度下降类型。这些变化的主要原因是计算效率。数据集可能具有数百万甚至数十亿个数据点,并且计算整个数据集的梯度可能在计算上非常昂贵。
让我们在这里查看不同的类型:
批次梯度下降
批梯度下降 是最直接的类型。它为训练集中的每个示例计算误差。在评估所有训练示例之后,它会更新模型参数。此过程通常称为培训纪元。批量梯度下降的优点是计算效率高,并且可以生成稳定的误差梯度和稳定的收敛性。一个缺点是稳定的误差梯度有时可能导致收敛状态,而该状态并不是模型可以达到的最佳状态。它还要求整个训练集驻留在内存中,并且对算法可用。
随机梯度下降
相对于单个训练示例,随机梯度下降根据误差的梯度更新参数。这与“批处理梯度下降”不同,“批处理梯度下降”在评估所有训练示例之后都会更新参数。根据问题,这可以使随机梯度下降比批量梯度下降更快。优点之一是频繁的更新提供了详细的改进率。缺点是,频繁更新比批处理梯度下降的计算量更大。更新的频率还会导致噪声梯度增加,并且可能导致错误率波动而不是缓慢降低。
迷你批次梯度下降
迷你批处理梯度下降法 是一种首选方法,因为它结合了随机梯度下降法和批处理梯度下降法。它只是将训练集分成小批,并对每批进行更新。因此,它在批处理梯度下降的效率和随机梯度下降的鲁棒性之间建立了平衡。每批的常见示例数在30到500之间。但是像其他任何机器学习技术一样,也没有明确定义的规则,因为最佳数量可能因不同的问题而有所不同。迷你批处理梯度下降法通常用于深度学习问题。