Skip to content

04. 模型怎样算出预测 ​

现在已经明确:输入是重量,目标是教学运费。先不训练,直接修改两个参数,观察同一组样本怎样得到不同预测。这一步建立对模型计算的直觉,后面的优化只是在替人寻找参数。

从一条计算式开始 ​

先把日常说法写出来:预测运费 = 每千克费用 × 重量 + 固定费用。为了让计算式简短,给各部分取一个字母名字:

写法在运费例子中的含义
x输入的包裹重量,单位千克
w每增加 1 千克,预测运费增加多少
b与重量无关的固定费用,通常称为偏置
ŷ模型预测的运费,读作“y 帽”
y记录中的目标运费,也就是拿来对照的答案

这样就得到 ŷ = wx+b。数学里把 w × x 简写成 wx;ŷ 上的小帽子提醒我们,这是估计值,还需要和真实记录 y 比较。偏置可以想成整套报价的起步位置:即使重量项暂时为零,式子里还留着 b 这一部分。这里只讨论这个公式的含义,实际业务仍只接收大于零的重量。

取 w=1,b=1,2 千克的预测是 1×2+1=3 元,与目标 5 元差了 2 元。改成 w=2,b=1,预测成为 5 元。

把重量放在横轴、预测放在纵轴,这个关系画出来是一条直线。w 越大,重量每增加一格,价格上升得越多,线就越陡;这个陡峭程度叫斜率。只改变 b,所有重量的预测一起增加或减少相同数值,整条线随之上下移动。这种按输入乘系数再相加的形式,通常称为线性模型。

下面把两个参数交给滑条控制。预测与目标的偏差还会汇总成一个损失分数;先观察线和偏差怎样变化,第 06 篇再逐步计算这个分数。

04812运费 / 元重量 / 千克123
预测 = 0 × 重量 + 0损失 L 13.8333

琥珀点:教学目标;蓝线和蓝点:当前预测;红色虚线:预测减目标的差。

先把 w 从 0 调到 2,观察不同重量的预测变化,再把 b 调到 1。琥珀点保持不变,因为训练目标没有随着参数变化。蓝点和蓝线表示模型当前的输出,红色虚线是偏差。

一组参数必须同时解释多条样本 ​

如果只看 2 千克对应 5 元,w=2,b=1 和 w=1,b=3 都能满足。加入 1 千克对应 3 元后,后一组参数就会预测成 4 元。多条输入不同的样本约束了可接受的参数,但是否足够代表真实任务仍需判断。

初始预测线和匹配教学数据的预测线,对同一组样本产生不同偏差

这组数据恰好都落在同一条直线上,因此一组参数就能完全匹配三个点。真实记录有称重偏差或价格波动时,点通常会散在线的两侧,找不到让每条都完全准确的直线。模型就需要在这些偏差之间折中:究竟怎样给一整条线打分,正是第 06 篇要解决的问题。

参数、输入与超参数 ​

现在已经有两个可调旋钮 w,b,训练会根据数据自动调整它们。还有一类设置控制“怎样训练”,例如每次把旋钮改动多少、总共修改多少次。这类训练前选定的设置称为超参数,可以理解成调旋钮的方法设置。第 07 篇的学习率就是其中一种。先分清这两个层次即可:参数参与计算预测,超参数控制训练过程。

这个模型的 w 有“元/千克”的单位,b 的单位是“元”。w 这样的乘法系数也常被称为权重。如果改用克作为输入,为了得到相同运费,系数就要缩小一千倍。因此看到一个权重很大,首先要看输入的单位和取值范围,不能直接据此判断这个因素更重要。

一条线能解决什么 ​

若真实费用先收首重价、超过某个重量后才计续重,整个区间未必能用一条直线表达。加大训练步数不会改变这个表达限制。可以按规则计算、采用分段形式,或选择适合目标的其他模型。

不要把当前教学模型用于自动收费。这个例子有意减少业务因素,是为了观察“输入如何经过参数成为输出”。模型形式正确与否,始终取决于任务,而不取决于训练是否顺利。

已经能够预测单条样本、观察参数变化,并解释一组参数如何同时影响所有样本。下一篇扩展输入的组织方式:05. 图片怎样变成数字数组;随后再用损失函数衡量一组预测的好坏。

别急,先让缓存热一下。