降低损失:梯度下降法

迭代方法图(图 1)包含一个标题为“计算参数更新”的华而不实的绿色方框。我们现在要用更实质的方法代替这种精明的算法。

假设我们有时间和计算资源来计算 \(w_1\)的所有可能值的损失。对于我们一直在研究的那类回归问题,产生的损失与 \(w_1\) 的图表始终是凸形。换句话说,图表将始终是碗状图,如下所示:

U 形曲线曲线图,纵轴标记为“损失”,横轴标记为权重 w i。

图 2. 回归问题产生的损失与权重图呈凸形。

 

凸形问题只有一个最小值;即只有一个位置的斜率正好为 0。这个最小值就是损失函数收敛的位置。

通过计算整个数据集内每个可能的 \(w_1\)值的损失函数来寻找收敛点的效率非常低下。我们来研究一种更好的机制,这种机制在机器学习领域非常热门,称为梯度下降法

梯度下降法的第一阶段是为 \(w_1\)选择一个起始值(起点)。起点并不重要;因此,许多算法直接将 \(w_1\) 设置为 0 或选择随机值。在下图中,我们选择了一个略大于 0 的起点:

U 形曲线曲线。曲线左侧大约一半的点标为“起点”。

图 3. 梯度下降法的起点。

然后,梯度下降法算法会计算损失曲线在起点的梯度。在图 3 中,损失的梯度等于曲线的导数(斜率),可以告诉您哪个方向是“更暖”还是“冷”。当有多个权重时,梯度是偏导数相对于权重的矢量。

请注意,渐变是一种矢量,因此具有以下两个特征:

  • 方向
  • 震级

梯度始终指向损失函数中增长最显著的方向。梯度下降法朝着负梯度方向前进,以便尽快减少损失。

U 形曲线曲线。曲线左侧的某个点标为“起点”。一个标记为“负渐变”的箭头从此点指向右侧。

图 4. 梯度下降法依赖于负梯度。

为了确定损失函数曲线上的下一个点,梯度下降法算法会将梯度大小的一部分添加到起点,如下图所示:

U 形曲线曲线。曲线左侧的某个点标为“起点”。一个标记为“负渐变”的箭头从此点指向右侧。另一个箭头从第一个箭头的尖端指向曲线上的第二个点。第二个点标记为“下一个点”。

图 5. 梯度步长将我们移动到损失曲线上的下一个点。

然后,梯度下降法会重复此过程,接近最小值。