线性回归:梯度下降

梯度下降法 一种以迭代方式找出产生权重和偏差的数学技术 选择损失最低的模型。梯度下降法找到最佳权重和偏差 重复以下过程进行多次用户定义的迭代。

模型开始训练时使用接近于零的随机权重和偏差, 然后重复以下步骤:

  1. 使用当前权重和偏差计算损失。

  2. 确定用于减少损失的权重和偏差的移动方向。

  3. 在减小权重的方向上移动权重和偏差值 损失。

  4. 返回第 1 步并重复该过程,直到模型无法减少 损失。

下图概述了梯度下降法为找到 使模型产生损失最低的权重和偏差。

图 12. 梯度下降过程的图示。

图 12. 梯度下降法是一个迭代过程, 和偏差,从而生成损失最低的模型。

点击加号图标可详细了解梯度下降法背后的数学原理。

在具体层面上,我们可以详细讲解梯度下降法的步骤。 使用包含七个示例汽车重量(磅)的小型数据集 以及每加仑英里数的评级:

千磅(功能) 每加仑英里(标签)
3.5 18
3.69 15
3.44 18
3.43 16
4.34 15
4.42 14
2.37 24
  1. 在开始训练时,模型会将权重和偏差设置为零:
  2. $$ \small{Weight:\ 0} $$ $$ \small{Bias:\ 0} $$ $$ \small{y = 0 + 0(x_1)} $$
  3. 使用当前模型参数计算 MSE 损失:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$ $$ \small{Loss= 303.71} $$
  5. 计算每个权重损失函数的正切斜率 和偏差:
  6. $$ \small{Weight\ slope: -119.7} $$ $$ \small{Bias\ slope: -34.3} $$

    点击加号图标,了解如何计算斜率。

    要计算直线与权重正切的斜率, 我们将损失函数的导数为 再求解 等式。

    我们将用于进行预测的方程式写为:
    $ f_{w,b}(x) = (w*x)+b $。

    我们将写出实际值:$ y $。

    我们将使用以下公式计算 MSE:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    其中 $i$ 表示 $ith$ 训练样本,$M$ 表示 样本数量。

    权重导数

    损失函数相对于权重的导数写为:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    求得的值为:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

    首先,我们将每个预测值相加减去实际值 再乘以特征值两倍。 然后,用总和除以样本数。 所得结果是直线与该值正切的斜率 权重。

    如果我们用权重和偏差等于 0,则直线的斜率为 -119.7。

    偏导导数

    损失函数相对于 偏差写为:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $

    求得的值为:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

    首先,我们将每个预测值相加减去实际值 然后乘以二。然后用总和除以 数量。结果就是直线的斜率 与偏差值正切。

    如果我们用权重和偏差等于 0,则直线的斜率为 -34.3。

  7. 沿负斜率的方向移动一小步,就得到 下一个权重和偏差。现在,我们随意定义 “small amount”设为 0.01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$ $$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$ $$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$ $$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$ $$ \small{New\ weight = 1.2} $$ $$ \small{New\ bias = 0.34} $$

使用新的权重和偏差来计算损失和重复次数。正在完成 经过六次迭代的过程,我们就会得到以下权重、偏差, 和损失:

迭代 重量 偏差 损失 (MSE)
1 0 0 303.71
2 1.2 0.34 170.67
3 2.75 0.59 67.3
4 3.17 0.72 50.63
5 3.47 0.82 42.1
6 3.68 0.9 37.74

您可以看到,权重和偏差每次更新,损失都会降低。 在此示例中,我们在 6 次迭代后停止。在实践中, 一直训练到 收敛。 当模型收敛时,进一步迭代不会进一步减少损失 因为梯度下降法找到了 以尽可能缩小损失。

如果模型继续训练超过收敛的情况, 的波动会很小,因为模型会不断更新 接近其最小值。这可能会使您 验证模型是否确实已收敛。确认模型 则需要继续训练,直到损失已收敛 已稳定。

模型收敛曲线和损失曲线

在训练模型时,您通常会关注损失 曲线来确定模型是否 融合。损失曲线显示 损失在模型训练时如何变化。以下是典型的损失 绘制的曲线损失在 y 轴,迭代在 x 轴:

图 13。损失曲线图,显示先急剧下降,然后平缓下降。

图 13. 损失曲线,显示模型围绕 第 1,000 个迭代标记。

您可以看到,损失在前几次迭代期间急剧降低, 然后逐渐降低,直到第 1,000 次迭代 标记。经过 1000 次迭代后,我们基本上可以确定, 收敛。

在下图中,我们在训练过程中在三个点绘制了模型, 过程:开头、中间和结尾。直观呈现模型的状态 和快照之间的差异, 减少损失和模型收敛。

在图中,我们使用在特定迭代中得出的权重和偏差, 代表模型。在包含数据点和模型快照的图表中 从模型到数据点的蓝色损失线表示损失量。通过 线条越长,损失就越大。

在下图中,我们可以看到,模型在第二次迭代前后 则由于损失较大而不太擅长进行预测。

图 14.偏离数据点的模型损失曲线及相应图表。

图 14. 模型在开始时的损失曲线和快照 训练过程。

在第 400 次迭代左右,我们可以看到,梯度下降法找到了 权重和偏差,从而生成更好的模型。

图 15模型的损失曲线和相应图表,穿过数据点,但不以最佳角度。

图 15. 模型在训练过程中的损失曲线和快照。

在第 1,000 次迭代时,我们可以看到模型已收敛, 从而生成一个损失可能最低的模型。

图 16.模型的损失曲线及相应图,很好地拟合了数据。

图 16. 接近训练结束的模型的损失曲线和快照 过程。

练习:检查您的理解情况

梯度下降法在线性回归中有何作用?
梯度下降法是一个迭代过程, 权重和偏差,以最大限度减少损失。
梯度下降法有助于确定 训练模型,例如 L1 或 L2
在选择损失时不涉及梯度下降法 用于模型训练。
梯度下降法会从数据集中移除离群值,以帮助模型 做出更好的预测。
梯度下降法不会更改数据集。

收敛函数和凸函数

线性模型的损失函数始终会产生一个 面。由于 当线性回归模型收敛时,我们就知道该模型具有 找到损失最小的权重和偏差。

如果我们针对包含一个特征的模型绘制损失曲面图,就可以看到 凸形。以下是每加仑数据集的英里数损失面 示例。权重在 x 轴上,偏差在 y 轴上, 损失在 z 轴上:

图 17损失曲面的三维图。

图 17. 呈现凸形的损失曲面。

在此示例中,权重为 -5.44 且偏差为 35.94 产生的损失最小 5.54 分:

图 18.损失面的三维图,底部为 (-5.44, 35.94, 5.54)。

图 18. 损失曲面,上面显示了生成的权重和偏差值 是最小的损失。

当线性模型找到损失最小值时,便会收敛。因此, 只会导致梯度下降法将权重和偏差值 将金额设定得非常小如果我们将权重和偏差点绘制成图表, 在梯度下降法中,这些点看起来就像一个球滚下山, 最后在已经不再向下倾斜的点停止

图 19梯度下降点移动到最低点的凸 3-D 损失曲面。

图 19. 损失图,其中显示梯度下降点在最低点停止

请注意,黑色损失点创建了损失曲线的确切形状: 然后逐渐下降,直到达到最低 损失曲面上的点。

需要注意的是,模型几乎从来没有 只不过会找到一个非常接近的值。 另外还需要注意的是,权重和偏差的最小值 对应于零损失,只是对于该损失产生最小损失的值 参数。

使用损失最小的权重和偏差值 - 在本例中 权重为 -5.44,偏差为 35.94,我们可以绘制该模型的图表, 非常适合数据:

图 201000 磅与每加仑英里数的图表,模型拟合数据。

图 20. 使用生成的权重和偏差值绘制的模型 是最小的损失。

这将是最适合此数据集的模型,因为没有其他权重和偏差 生成的模型损失更低。