梯度下降法 一种以迭代方式找出产生权重和偏差的数学技术 选择损失最低的模型。梯度下降法找到最佳权重和偏差 重复以下过程进行多次用户定义的迭代。
模型开始训练时使用接近于零的随机权重和偏差, 然后重复以下步骤:
使用当前权重和偏差计算损失。
确定用于减少损失的权重和偏差的移动方向。
在减小权重的方向上移动权重和偏差值 损失。
返回第 1 步并重复该过程,直到模型无法减少 损失。
下图概述了梯度下降法为找到 使模型产生损失最低的权重和偏差。
图 12. 梯度下降法是一个迭代过程, 和偏差,从而生成损失最低的模型。
点击加号图标可详细了解梯度下降法背后的数学原理。
在具体层面上,我们可以详细讲解梯度下降法的步骤。 使用包含七个示例汽车重量(磅)的小型数据集 以及每加仑英里数的评级:
千磅(功能) | 每加仑英里(标签) |
---|---|
3.5 | 18 |
3.69 | 15 |
3.44 | 18 |
3.43 | 16 |
4.34 | 15 |
4.42 | 14 |
2.37 | 24 |
- 在开始训练时,模型会将权重和偏差设置为零:
- 使用当前模型参数计算 MSE 损失:
- 计算每个权重损失函数的正切斜率 和偏差:
- 沿负斜率的方向移动一小步,就得到 下一个权重和偏差。现在,我们随意定义 “small amount”设为 0.01:
点击加号图标,了解如何计算斜率。
要计算直线与权重正切的斜率, 我们将损失函数的导数为 再求解 等式。
我们将用于进行预测的方程式写为:
$ 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。
使用新的权重和偏差来计算损失和重复次数。正在完成 经过六次迭代的过程,我们就会得到以下权重、偏差, 和损失:
迭代 | 重量 | 偏差 | 损失 (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. 损失曲线,显示模型围绕 第 1,000 个迭代标记。
您可以看到,损失在前几次迭代期间急剧降低, 然后逐渐降低,直到第 1,000 次迭代 标记。经过 1000 次迭代后,我们基本上可以确定, 收敛。
在下图中,我们在训练过程中在三个点绘制了模型, 过程:开头、中间和结尾。直观呈现模型的状态 和快照之间的差异, 减少损失和模型收敛。
在图中,我们使用在特定迭代中得出的权重和偏差, 代表模型。在包含数据点和模型快照的图表中 从模型到数据点的蓝色损失线表示损失量。通过 线条越长,损失就越大。
在下图中,我们可以看到,模型在第二次迭代前后 则由于损失较大而不太擅长进行预测。
图 14. 模型在开始时的损失曲线和快照 训练过程。
在第 400 次迭代左右,我们可以看到,梯度下降法找到了 权重和偏差,从而生成更好的模型。
图 15. 模型在训练过程中的损失曲线和快照。
在第 1,000 次迭代时,我们可以看到模型已收敛, 从而生成一个损失可能最低的模型。
图 16. 接近训练结束的模型的损失曲线和快照 过程。
练习:检查您的理解情况
收敛函数和凸函数
线性模型的损失函数始终会产生一个 凸面。由于 当线性回归模型收敛时,我们就知道该模型具有 找到损失最小的权重和偏差。
如果我们针对包含一个特征的模型绘制损失曲面图,就可以看到 凸形。以下是每加仑数据集的英里数损失面 示例。权重在 x 轴上,偏差在 y 轴上, 损失在 z 轴上:
图 17. 呈现凸形的损失曲面。
在此示例中,权重为 -5.44 且偏差为 35.94 产生的损失最小 5.54 分:
图 18. 损失曲面,上面显示了生成的权重和偏差值 是最小的损失。
当线性模型找到损失最小值时,便会收敛。因此, 只会导致梯度下降法将权重和偏差值 将金额设定得非常小如果我们将权重和偏差点绘制成图表, 在梯度下降法中,这些点看起来就像一个球滚下山, 最后在已经不再向下倾斜的点停止
图 19. 损失图,其中显示梯度下降点在最低点停止
请注意,黑色损失点创建了损失曲线的确切形状: 然后逐渐下降,直到达到最低 损失曲面上的点。
需要注意的是,模型几乎从来没有 只不过会找到一个非常接近的值。 另外还需要注意的是,权重和偏差的最小值 对应于零损失,只是对于该损失产生最小损失的值 参数。
使用损失最小的权重和偏差值 - 在本例中 权重为 -5.44,偏差为 35.94,我们可以绘制该模型的图表, 非常适合数据:
图 20. 使用生成的权重和偏差值绘制的模型 是最小的损失。
这将是最适合此数据集的模型,因为没有其他权重和偏差 生成的模型损失更低。