我们永远无法将其参数调整为单个示例
2022年2月10日整理发布:这会导致过度拟合,即网络在有限数量的输入上表现非常好,但在其他输入上表现非常糟糕。相反,我们希望权重处于它们会导致最小总体误差的最佳点。
为了找到最佳配置,我们将使用梯度下降,这是一种学习算法,在该算法中,我们不断测量模型的准确性并进行小幅调整,直到达到最小误差。
梯度下降的第一步是衡量我们模型的整体准确度。为此,我们通过将访问者数量乘以我们的初始权重来预测每次观察的销售额。然后我们从我们的预测中减去观察到的销售额来计算误差。我们还将跟踪平方误差,这基本上是错误时间本身。平方误差可防止负误差和正误差相互抵消。它也更加强调更大的错误,这有利于训练。这是我们的预测与起始权重 (0.5) 的样例。
在训练神经网络时,重要的是要有一个单一的指标来衡量模型的整体性能。这个度量被称为损失函数。对于我们当前的问题,我们将使用均方误差(MSE),即均方误差之和除以观察次数。我们当前的 MSE 是 671.58。我们训练的目标是最小化损失函数。
所以,我们现在知道我们的体重不是应该的。但是我们如何决定是减重还是增重呢?一种简单(且低效)的找出方法是在两个方向上进行小幅移动,并保留降低 MSE 的那个。
我们调整权重的量称为学习率。为网络选择正确的学习率非常重要。如果学习率太大,你会过冲,这意味着你会一步一步跳过最优配置。如果学习率太小,达到最佳点需要很长时间。
对于我们的问题,我们将选择 0.01 作为学习率。首先,我们将权重添加 0.01,将其设置为 0.51。重新计算预测后,我们看到我们的均方误差上升到 723.72。
接下来,我们将权重减少 0.01,将其设置为 0.49。重新处理计算后,我们的 MSE 现在为 621.41。这表明正确的方向是减轻重量。
当我们遍历整个训练数据并调整神经网络的权重时,我们就完成了一个epoch的训练。神经网络的完整训练将跨越多个时期。
时期和学习率称为超参数,这意味着您必须在训练机器学习模型之前设置它们。神经网络的权重是学习的参数,因为它们是在训练期间调整的。
又经历了几个 epoch 之后,我们意识到当我们的人工神经元的权重设置为 0.24 时,我们的均方误差处于最低点,进一步降低它会导致 MSE 增加。在这一点上,我们可以说我们的机器学习模型已经收敛,这意味着它已经达到了可能的最低误差。
请注意,这是一种简化的解释,并不是训练网络的最有效方式。有几个技巧可以帮助防止冗余计算(例如找出降低或增加学习率是否会减少错误)并加快学习过程(例如动态改变学习率)。但基本原理保持不变:预测值、测量误差、调整权重。
添加另一个输入
通过仅使用访客数量,我们能够训练神经元对我们的自动售货机将销售的瓶子数量做出准确的预测。如果我们根据之前的观察绘制机器学习模型,我们会看到这条线很好地穿过我们的数据中间。
但正如我们在前面的图表中看到的那样,温度与售出的瓶子数量之间也存在相关性。因此,如果我们将温度集成到我们的机器学习模型中,它应该会提高其性能。
为我们的人工神经元添加温度就像添加另一对权重和输入一样简单。我们的机器学习模型现在将由以下公式表示:
销售额 = 访客 * w0 + 温度 * w1
训练具有多个输入的机器学习模型存在细微差别。您不想在每个阶段以相同的数量更新所有权重。然而,训练过程与我们在上一节中看到的没有什么不同:我们从随机权重开始,预测结果,与基本事实进行比较,并调整我们的权重。
在训练结束时,您将拥有一个性能更好的模型,因为它现在考虑了我们所拥有的有关问题的所有信息。机器学习模型不会达到完美的准确性,因为在现实中,还有很多其他因素我们没有包括在内,还有很多我们无法预测(比如突然停电导致博物馆和自动售货机停电)一整天)。但我们的预测与现实相当。
我们现在可以根据明天的天气预报和网上售票的数量,提前预测我们的自动售货机是否会用完瓶装水。