下一步,我们将做些什么呢?我们知道错了,并且知道差了多少。我们无需对这种误差感到失望,我们可以使用这个误差,指导我们得到第二个、更好的 C 的猜测值。
再看看这个误差值。我们少了 12.137。由于千米转换为英里的公式是线性的,即英里= 千米 ×C,因此我们知道,增加C 就可以增加 输出。
让我们将 C 从 0.5 稍微增加到 0.6,观察会发生什么情况。 现在,由于将 C 设置为 0.6,我们得到了英里 = 千米 ×C = 100×0.6 = 60,这个答案比先前 50 的答案更好。我们取得了明显的进步。
现在,误差值变得更小了,为2.137。这个数值甚至可能是我们很乐于接受的一个误差值。
这里,很重要的一点是,我们使用误差值的大小指导如何改变 C 的值。我们希望输出值从 50 增大一些,因此我们稍微增加了 C 的值。
我们不必尝试使用代数法计算出 C 需要改变的确切量,让我们继续使用这种方法改进 C 值。如果你还不能被我说服,还是认为计算出确切的答案才够简单,那么,请记住,更多有趣的问题是没有一个简单的数学公式将输出和输入关联起来的。这就是我们需要诸如神经网络这样相对成熟而复杂的方法的原因。
让我们再次重复这个过程。输出值 60 还是太小了。我们再次微调 C, 将其从 0.6 调到 0.7。
糟糕!过犹不及,结果超过了已知的正确答案。先前的误差值为 2.137,现在的误差值为 -7.863。这个负号告诉我们,我们不是不足,而是超调了。请记住上面的公式,误差值等于真实值减去计算值。
如此说来,C = 0.6 比 C = 0.7 好得多。我们可以就此结束这个练习,欣然接受 C = 0.6 带来的小小误差。但是,让我继续向前走一小段距离。 我们为什么不使用一个较小的量,微调 C,将 C 从 0.6 调到 0.61 呢?
这比先前得到的答案要好得多。我们得到输出值 61,比起正确答案 62.137,这只差了 1.137。
因此,最后的这次尝试告诉我们,应该适度调整 C 值。如果输出 值越来越接近正确答案,即误差值越来越小,那么我们就不要做那么大的调整。使用这种方式,我们就可以避免像先前那样得到超调的结果。
同样,读者无需为如何使用确切的方式算出 C 值而分心,请继续关注这种持续细化误差值的想法,我们建议将修正值取为误差值的百分比。直觉上,这是正确的:大误差意味着需要大的修正值,小误差意味着我们只需要小小地微调 C 的值。
无论你是否相信,我们刚刚所做的,就是走马观花地浏览了一遍神经网络中学习的核心过程。我们训练机器,使其输出值越来越接近正确的 答案。
这值得读者停下来,思考一下这种方法,我们并未像在学校里求解数学和科学问题时所做的一样一步到位,精确求解问题。相反,我们尝试得到一个答案,并多次改进答案,这是一种非常不同的方法。一些人将这种方法称为迭代,意思是持续地、一点一点地改进答案。