跳到主要内容

感知器 — 一组输入 (1, 0, 1) 从头走到尾

这一章讲三件事: 机器学习里最基本的那台机器长什么样(它只有三条线); 「学习」这两个字具体指哪几个动作; 以及「往哪边挪」这个问题是怎么被回答的。

它在全书链条里的位置: 第 19 章说「规则由机器从数据里自己找」。 这一章把「自己找」这四个字拆成能看见的步骤。 而拆到最后你会发现,它用的正是第 01 章那句「把大问题分解成小单元」。 需要的基础: 第 19 章的参数、目标、训练数据。

1. 先看现象:最小的那台机器,只有三条线

机器学习里最基本的一种计算方法,叫感知器1

它小到可以整个画出来2:

x₁ ─── w₁ ───┐
├──→ [ s ] ──f──→ y
x₂ ─── w₂ ───┤

x₃ ─── w₃ ───┘

图说:左边三个 x 是输入,右边的 y 是输出。
三条线上各挂着一个数 w,中间的 s 是它们汇总的结果,
f 是最后那道闸门。全章就是把这张图上的每个字母走一遍。

原书说,你可以把它当成「根据输入求输出的一种计算方法」, 也可以把它当成电路里的一个电子元件;而书里选择把它称为模型3—— 也就是第 19 章那个「先假设一种关系」的假设本身。

全章的主走查(从这一节到第 8 节,同一组输入走到底)
─────────────────────────────────────────────────────────
输入 (x₁, x₂, x₃) = (1, 0, 1) 权重 (w₁, w₂, w₃) = (0.6, −0.2, 0.5)
§2 加权和 s = 1.1
§4 过闸门 y = 1
§6 给个目标 2.0,算出差多远 → 0.81
§7 看出该往哪挪 → 权重变成 (0.7, −0.2, 0.6)
§7 重算 s = 1.3,差多远降到 0.49
─────────────────────────────────────────────────────────

⚠ 这一组输入、这三个权重、那个目标值、以及挪动的步子,
全部是我们为演示编的,不是真实数值。原书这张图上没有具体的数。

2. 每条线上挂的那个数,叫权重

这一节走主走查的第一、二步。

三条线上各挂一个数,把输入乘上它再全部加起来,得到 s4:

s = w₁x₁ + w₂x₂ + w₃x₃

这个「先各自乘上一个数、再加总」的结果,叫加权和5而那三个数 w₁、w₂、w₃ 叫作权重——w 取自英文 weight 的首字母6

权重是干什么的?它反映对应的那个输入有多要紧7

  • 三个权重都取 1,就是三个输入同等对待、直接相加;
  • 某个权重取 0,那个输入在求和时直接被无视8

代进我们那组数(走查第一、二步):

s = 0.6 × 1 + (−0.2) × 0 + 0.5 × 1
= 0.6 + 0 + 0.5
= 1.1

注意中间那一项:x₂ 是 0,所以不管 w₂ 是多少,它对 s 都没有贡献。
这一点在第 7 节挪权重时会变得很关键。

s = 1.1。 走查的前两步完成。

这里有一句原书写下的、很值得记住的话:即使是相同的输入,只要权重的值改变, 计算结果也会改变——所以通过调整权重就能对结果加以调整9「学习」这件事的全部空间,就在这一句里。

3. 那个式子还有个更短的写法

这一节交代一个你出门一定会撞见的名字。

把那三个权重摆成一排、把输入也摆成一排,按位置对应着相乘,再全部加起来—— 这个运算叫内积(也叫点积)10:

(w₁ w₂ w₃) · (x₁ x₂ x₃) = w₁x₁ + w₂x₂ + w₃x₃
└ 权重那一排 ┘ └ 输入那一排 ┘

图说:两排数,按位置一一配对相乘,再把结果全加起来。
和上一节那个加权和是同一件事,只是写法短了。

为什么要换个写法?因为机器学习里要处理的数实在太多11三个还写得下,三千个就没法一个个写了; 用一排数(第 19 章的向量)整体表示,式子才看得清在说什么。

原书用的记法是把两排数各自用一个加粗的字母代表,写成 wx 两个字母12

4. 最后那道闸门:激活函数

这一节走主走查的第三步。

算出 s 之后还有一步:让 s 过一道闸门,才得到输出 y13:

y = f(s)

这个 f 叫激活函数14它可以有很多种定义,原书为了说明,采用最简单的一种15:

f(s) = 0 (当 s ≤ 0)
f(s) = 1 (当 s > 0)

不管 s 是多少,输出只可能是 0 或 1 两个值之一。 原书在这里点了一句很好的话:这一步是把连续的值拿进逻辑的世界—— 也就是我们第 02 到 05 章那个真假两分的世界16

闸门的门槛在 0 这个位置,而这个门槛值叫作阈值17「阈」就是门槛的意思:够得着门槛就是 1,够不着就是 0,可以照字面理解18

代进我们的走查(第三步):s = 1.1,大于 0,所以 y = 1。

输入 (1, 0, 1) → 加权和 1.1 → 过闸门 → 输出 1

图说:走到这里,这台机器已经完整地跑了一遍。
但它还没有「学」到任何东西 —— 权重是我们随手定的。

5. 「学习」是四个动作

这一节走主走查的第四步,把「学习」这个词拆开。

机器学习里的学习,就是通过调整参数,得到与目标尽可能接近的输出19对感知器来说,要调的参数就是那三个权重。

原书把这件事拆成四步,一圈一圈重复20:

① 准备好训练数据(每条包括:输入 + 目标)
② 把输入代进模型,得到输出
③ 拿输出和目标比一比
④ 调整参数,让下次的输出更接近目标
↑ │
└────────────────────────────────────┘

图说:第 ③ 步的「比一比」和第 ④ 步的「往哪调」是这一章剩下的全部内容。

我们的走查现在走到第 ③ 步——但要比,得先有个目标。

给它编一个:目标 t = 2.0(这个数是我们为演示编的)。 于是问题变成:输出离 2.0 差多远,以及怎么改才能更近。

顺带一句,原书给的训练数据长这样:(x₁, x₂, t) = (10, 2, 5)—— 前两个是输入,最后一个是目标21格式就是这么朴素。

6. 「差多远」怎么算

这一节走主走查的第五步,而这里有一个必须交代的动作。

先说那个动作:从这一节起,我们把第 4 节那道闸门摘掉。

为什么必须摘? 因为闸门只吐 0 和 1。 输出是 1、目标是 2.0,差 1.0;可你把 w₁ 从 0.6 挪到 0.7,s 从 1.1 变成 1.3, 过完闸门输出还是 1——差多远一点没变。 看不见变化,就不知道该往哪挪。

原书做的正是同一件事:讲到这一步的时候,它明说「简单起见, 设输入只有两个,并且省略掉激活函数的步骤」22我们照做,只是保留三个输入,以便同一组数走到底。

接下来是怎么比。原书说得很清楚:对输出的评价不是「好或不好」, 而是要知道它与目标相比「到底有多不好」23

办法是取差、再平方,有几条数据就全部加起来24:

差多远 = (目标 − 输出)²

为什么要平方?
① 输出比目标大、还是比目标小,都算「偏离」—— 平方之后一律为正;
② 恰好相等时差是 0,平方还是 0。

这个衡量「有多不好」的式子,叫损失函数25; 它的值越大,输出和目标偏离得越厉害;越接近 0,偏离得越小26

顺带把另一个名字也认了:每一条数据上「目标减输出」的那个差,叫误差—— 原书那个式子的全名就叫「平方和误差函数」。

代进我们的走查(第五步):

输出 y = 1.1(摘掉闸门,直接用加权和)
目标 t = 2.0
差多远 = (2.0 − 1.1)² = 0.9² = 0.81

0.81。这就是这台机器现在有多差。

7. 「往哪边挪」这个问题怎么答

这一节走主走查的第六、七步,是这一章的核心。

现在知道差 0.81 了,可该把哪个权重往哪边挪?

先看一张图。 因为损失的大小随着权重变化, 所以可以把它想象成一张高低起伏的地形图:横着两个方向是两个权重, 高度是「差多远」。学习的目标就是在这张地形图上找到地势尽可能低的地方27

差多远(越高越差)
╲ ╱
╲ ╱╲ ╱
╲╱ ╲ ╱
● ╲╱ ← 谷底
你在这儿
───────────────────────→ 权重
图说:人用眼睛一看就知道哪里低,可计算机没有「看一眼」这个能力。
它只能从脚下这一点出发,问一句「往哪边走会更低」。

「在当前这一点上,朝哪个方向走下降最快」——这个方向的名字叫梯度。 (注意:原书从头到尾没有解释过这个词,中文版译者专门加了一条注说明这一点28。)

而「顺着这个方向一小步一小步往下走」的做法,叫梯度下降法29原书对它的说明只有一句大白话:无论是在山峰还是在山谷, 只要不断重复从落脚点向低处前进,就一定能到达地势低的位置30

代进我们的走查(第六步):往哪挪?

s = w₁ × 1 + w₂ × 0 + w₃ × 1 = w₁ + w₃ ← x₂ 是 0,w₂ 根本不参与
现在 s = 1.1,目标 2.0 —— s 偏小,所以 w₁ 和 w₃ 都该往上挪。
w₂ 挪不挪都一样(这一条输入对它没有意见)。

挪多少?我们挑 0.1 这个步子(这个步子是我们编的)。第七步:

权重:(0.6, −0.2, 0.5) → (0.7, −0.2, 0.6)
重算:s = 0.7 × 1 + (−0.2) × 0 + 0.6 × 1 = 1.3
差多远:(2.0 − 1.3)² = 0.7² = 0.49 ← 从 0.81 降到了 0.49

0.81 → 0.49。这一圈的「学习」完成了。

主走查走完了:同一组输入 (1, 0, 1),从加权和 1.1、输出 1, 一路走到「挪完权重之后 s 变成 1.3、差多远降到 0.49」。 再转几圈,s 会越来越靠近 2.0。

8. 步子迈多大,以及会不会卡在小坑里

这一节交代上一节那个「0.1」背后的两个真问题。

第一个问题:步子迈多大。 步子越大,朝目标前进得越快; 但步子太大,说不定有些小山谷就直接跨过去了31这个步子的大小,叫学习率32原书给的经验是:第一步可以大一些,之后看学习的进展再调整33

第二个问题:走到不动了,就是最低点吗? 不一定。 原书说的是:如果运气够好,会走到某个地方, 从那儿往哪个方向走损失都不再减小; 到了那儿,这个模型就可以说是「训练好的模型」了34

注意「如果运气够好」这半句——它掩着一件事: 你停下的地方可能只是一个小坑,而不是整张地图的最低处。 这种「四周都比这里高、但它并不是全局最低」的地方,行话叫局部最优 (这个名字原书没有给,是我们补的)。

第三,也是这一章的落点:为什么非要这么一小步一小步挪?

因为参数一多,「往这个方向试一下、往那个方向试一下」这种莽撞做法就不行了—— 原书明说:那样会发生第 7 章讲的指数爆炸35也就是我们第 13 章那件事。

而这一整套做法,原书自己回指了第 1 章: 本书在第 1 章中提到过「将大问题分解为小单元」,这里也是同样的思路—— 并不是要一口气从整个地图中找到最低的地点, 而是从当前的落脚点出发,看往哪个方向走更低36

这就是第 01 章那句主旨在全书最后一次现身,而且是原书自己点的名。

9. 程序员做什么、不做什么

这一节收尾,把人和机器的分工说清。

原书写得很干脆37:

干什么
程序员选模型、选损失函数、准备训练数据
机器调参数——程序员不去直接指定参数的具体数值

程序员是间接地让参数往更优的方向变化的38

还有一句值得抄下来:即使模型、损失函数都相同,只要训练数据不同, 学习之后得到的模型也会截然不同39原书打的比方是:硬件配置完全相同的两台计算机,装的软件不一样, 整个运行模式就不一样40

10. 作者的判断、我们的判断,以及这一章的边界

说法书里给了什么
感知器的结构与两个式子给了图和式子,并逐项解释了 w、s、f
权重反映输入的重要性给了两个极端例子(全取 1、取 0)
用内积写更清楚给了理由:机器学习里的数太多,不整合就看不清式子在说什么
讲损失时省掉激活函数书里明说了这一步是「简单起见」,但没有解释为什么必须省
梯度下降给了地形图这个画面,而**「梯度」这个词书里一个字都没解释**
会不会卡在小坑里书里只写了「如果运气够好」,没有给这种情况起名字

判断(我们的,不是书里的):这一章最容易被读成「一堆名词」, 但它其实只有一个动作——「看差多远,再往差得少一点的方向挪一点」。 这个动作值钱的地方在于:它不要求你知道正确答案在哪, 只要求你能判断「这次比上次好一点还是差一点」。 调参数、调配置、调运营策略,凡是「说不清最优解、但能比较好坏」的场合, 用的都是同一条路子。 如果错,会错在: 它有个前提——「好坏」必须能用一个数量出来, 而且这个数要随着你的调整平滑地变化。这正是本章第 6 节 非要摘掉那道闸门的原因:阶梯式的输出跳来跳去,没法比较「好一点点」。 判据是:你手上那件事的「好坏」能不能被一个连续变化的数刻画。

这一章的边界:

  • 「梯度」这个词原书完全没有解释——译者专门加注说明了,读者需要另找资料;
  • 没有讲损失函数怎么选,只给了「差的平方再加总」这一种,并说「如何选取恰当的损失函数 是个重要且有难度的问题」;
  • 没有讲学习率具体怎么调,只说「看情况」;
  • 没有讲一次用一条数据还是一批数据;
  • 走查里的所有数值都是我们编的,原书那张图上没有具体的数; 书里唯一给出的训练数据是 (10, 2, 5)(−3, 1, 3) 那两组。

11. 可带走的

  1. 最基本的那台机器只有三条线:三个输入、三个权重、一个汇总、一道闸门;
  2. 每条线上挂的那个数叫权重,它反映这个输入有多要紧;取 0 就等于无视这个输入;
  3. 把输入乘上权重再加总,叫加权和;写短一点就是两排数的内积;
  4. 最后那道闸门叫激活函数,门槛值叫阈值;它把连续的数拿进了真假两分的世界;
  5. 走查:(1, 0, 1) 配 (0.6, −0.2, 0.5) → s = 1.1 → 过闸门输出 1;
  6. 「学习」是四步:备数据 → 得输出 → 和目标比 → 挪参数,一圈圈重复;
  7. 比的不是「好不好」,是「有多不好」:取差、平方、加总,这个式子叫损失函数;
  8. 走查续:目标 2.0 → 差多远 0.81 → 把 w₁、w₃ 各挪 0.1 → s = 1.3 → 差多远 0.49;
  9. 「往哪边下降最快」那个方向叫梯度,顺着它一小步一小步走叫梯度下降法;
  10. 步子大小叫学习率;走到不动的地方可能只是个小坑(局部最优),不一定是最低点;
  11. 为什么不能一个个方向试?因为参数一多就是第 13 章那个指数爆炸;
  12. 这一整套正是第 01 章那句「把大问题分解成小单元」——不看整张地图,只看脚下这一步。

12. 原文地图

主题原书章原文位置
感知器是什么附录 迈向机器学习的第一步text/15-apx.txt:241(搜「感知器的工作流程」) · :245(搜「我们把感知器称为模型」)
加权和与权重附录 迈向机器学习的第一步text/15-apx.txt:262(搜「s = w1 x1 + w2 x2 + w3 x3」) · :264(搜「称为权重」) · :285(搜「w 取自权重的英文单词 weight 的首字母」) · :290(搜「就意味着在求和时会无视」)
内积附录 迈向机器学习的第一步text/15-apx.txt:301(搜「用向量内积的形式来表达」) · :311(搜「根据它们的下标按顺序相乘」) · :345(搜「机器学习中要处理的」)
激活函数与阈值附录 迈向机器学习的第一步text/15-apx.txt:267(搜「称为激活函数」) · :371(搜「0,」) · :377(搜「两种情况中进行二选一的判定」) · :381(搜「以 0 为阈值」)
学习的四步附录 迈向机器学习的第一步text/15-apx.txt:413(搜「机器学习中的学习就是通过调整参数」) · :419(搜「首先准备好训练数据」)
损失函数附录 迈向机器学习的第一步text/15-apx.txt:453(搜「省略掉激活函数的步骤」) · :474(搜「到底有多不好」) · :479(搜「平方和误差函数」) · :493(搜「的大小表示了输出优劣中」)
梯度下降与学习率附录 迈向机器学习的第一步text/15-apx.txt:558(搜「高低起伏的图」) · :570(搜「这里我们就要用到梯度下降法」) · :574(搜「训练好的模型」) · :582(搜「这里步伐的大小称为学习率」)
参数一多就爆炸、回指第 1 章附录 迈向机器学习的第一步text/15-apx.txt:590(搜「这样会发生「指数爆炸」」) · :576(搜「本书在第 1 章中提到过」)
程序员做什么附录 迈向机器学习的第一步text/15-apx.txt:596(搜「程序员是如何参与机器学习的」) · :599(搜「即使模型、损失函数都相同」)

Footnotes

  1. 出处:「附录 迈向机器学习的第一步」第 241 段(text/15-apx.txt:241,搜「感知器的工作流程」)。原书在这一章开头的目录里也把它列为要讲的知识点之一,并在脚注里说明它「有时也称感知机」——那是译者注。

  2. 出处:「附录 迈向机器学习的第一步」第 250 段(text/15-apx.txt:250,搜「x1」)。这是原书的图 A-7,我们照它重画了一张字符图。

  3. 出处:「附录 迈向机器学习的第一步」第 243 段(text/15-apx.txt:243,搜「大家既可以认为感知器就是一种根据输入求输出的」)与第 245 段(text/15-apx.txt:245,搜「我们把感知器称为模型」)。原文一共给了四种看法:计算方法、算法、电子元件、模型。

  4. 出处:「附录 迈向机器学习的第一步」第 262 段(text/15-apx.txt:262,搜「s = w1 x1 + w2 x2 + w3 x3」)与第 264 段(text/15-apx.txt:264,搜「称为权重」)。

  5. 出处:「附录 迈向机器学习的第一步」第 280 段(text/15-apx.txt:280,搜「在感知器中下面这样的式子称为加权和」)。原文强调:它并不是简单相加,而是对各个输入赋予相应的权重之后再求和。

  6. 出处:「附录 迈向机器学习的第一步」第 285 段(text/15-apx.txt:285,搜「w 取自权重的英文单词 weight 的首字母」)。

  7. 出处:「附录 迈向机器学习的第一步」第 286 段(text/15-apx.txt:286,搜「反映了相应输入的重」)。

  8. 出处:「附录 迈向机器学习的第一步」第 288 段(text/15-apx.txt:288,搜「如果所有输入的权重」)与第 290 段(text/15-apx.txt:290,搜「就意味着在求和时会无视」)。

  9. 出处:「附录 迈向机器学习的第一步」第 291 段(text/15-apx.txt:291,搜「即使是相同的输入,只要权重的值改变」)。

  10. 出处:「附录 迈向机器学习的第一步」第 301 段(text/15-apx.txt:301,搜「用向量内积的形式来表达」)与第 311 段(text/15-apx.txt:311,搜「根据它们的下标按顺序相乘」)。「也叫点积」是我们补的一句,原书只用了「内积」。

  11. 出处:「附录 迈向机器学习的第一步」第 345 段(text/15-apx.txt:345,搜「机器学习中要处理的」)。原文的原话是:用向量正好可以将大量的数整合,让我们更加清楚地看到算式在表达什么含义。

  12. 出处:「附录 迈向机器学习的第一步」第 337 段(text/15-apx.txt:337,搜「用黑体字」)。原书这一段还讲了「转置」这个记号,我们没有引入。

  13. 出处:「附录 迈向机器学习的第一步」第 267 段(text/15-apx.txt:267,搜「称为激活函数」)。

  14. 出处:「附录 迈向机器学习的第一步」第 368 段(text/15-apx.txt:368,搜「这里的 f 称为激活函数」)。原书说它也称激励函数。

  15. 出处:「附录 迈向机器学习的第一步」第 371 段(text/15-apx.txt:371,搜「0,」)与第 375 段(text/15-apx.txt:375,搜「如果 s 小于或者等于 0」)。原文明说这只是「为方便说明」采用的一种定义。

  16. 出处:「附录 迈向机器学习的第一步」第 378 段(text/15-apx.txt:378,搜「两种情况中进行二选一的判定」)。原文说这既可以说是把连续的值拿进逻辑世界,也可以说是把模拟世界转变为数字世界。

  17. 出处:「附录 迈向机器学习的第一步」第 382 段(text/15-apx.txt:382,搜「以 0 为阈值」)。

  18. 出处:「附录 迈向机器学习的第一步」第 381 段(text/15-apx.txt:381,搜「所谓阈」)。原文说:如果值够大、能够跨越门槛则结果为 1,不足以跨越则为 0,这个词完全可以直接按字面意思理解。

  19. 出处:「附录 迈向机器学习的第一步」第 413 段(text/15-apx.txt:413,搜「机器学习中的学习就是通过调整参数」)。

  20. 出处:「附录 迈向机器学习的第一步」第 419 段(text/15-apx.txt:419,搜「首先准备好训练数据」)起的四行。原书的图 A-8 把这四步画成了一个圈。

  21. 出处:「附录 迈向机器学习的第一步」第 464 段(text/15-apx.txt:464,搜「(x1, x2, t) = (10, 2, 5)」)与第 468 段(text/15-apx.txt:468,搜「(−3, 1, 3)」)。这是原书给的仅有的两组具体数据,它们用的是两输入的模型;我们的走查没有用它们,而是全程用同一组三输入的数,以免中途换输入。

  22. 出处:「附录 迈向机器学习的第一步」第 453 段(text/15-apx.txt:453,搜「省略掉激活函数的步骤」)。原文只说了「简单起见」,没有解释为什么必须省——上面那段解释是我们补的。

  23. 出处:「附录 迈向机器学习的第一步」第 477 段(text/15-apx.txt:477,搜「到底有多不好」)。

  24. 出处:「附录 迈向机器学习的第一步」第 479 段(text/15-apx.txt:479,搜「平方和误差函数」)与第 486 段(text/15-apx.txt:486,搜「首先求出第 k 个目标」)。原文解释了取平方的目的:无论目标和输出中的哪一个偏大,都能衡量出它们偏离对方的大小。

  25. 出处:「附录 迈向机器学习的第一步」第 493 段(text/15-apx.txt:493,搜「的大小表示了输出优劣中」)。原文的说法是:E 的大小表示了输出优劣中「劣」的程度。

  26. 出处:「附录 迈向机器学习的第一步」第 491 段(text/15-apx.txt:491,搜「的值越大,输出和目标之间的偏离就越大」)。

  27. 出处:「附录 迈向机器学习的第一步」第 558 段(text/15-apx.txt:558,搜「高低起伏的图」)与第 559 段(text/15-apx.txt:559,搜「学习的目标就是在地图中找到地势尽可能低的地点」)。原书的图 A-9 是一张三维网格地形图。

  28. 出处:「附录 迈向机器学习的第一步」第 585 段(text/15-apx.txt:585,搜「按照日文原文翻译为梯度下降法」)。这是译者注:原文说,针对「梯度」本书中并没有进行任何解释,读者可以参考其他资料。所以「哪个方向下降最快」这句解释是我们补的。

  29. 出处:「附录 迈向机器学习的第一步」第 570 段(text/15-apx.txt:570,搜「这里我们就要用到梯度下降法」)。原书脚注说它经常也称最速下降法。

  30. 出处:「附录 迈向机器学习的第一步」第 570 段(text/15-apx.txt:570,搜「只要不断重复从落脚」)。

  31. 出处:「附录 迈向机器学习的第一步」第 581 段(text/15-apx.txt:581,搜「每一步迈出的步伐越大」)。

  32. 出处:「附录 迈向机器学习的第一步」第 582 段(text/15-apx.txt:582,搜「这里步伐的大小称为学习率」)。

  33. 出处:「附录 迈向机器学习的第一步」第 583 段(text/15-apx.txt:583,搜「在迈出第一步时,步伐可以大一些」)。

  34. 出处:「附录 迈向机器学习的第一步」第 571 段(text/15-apx.txt:571,搜「如果运气够好」)与第 142 段(text/15-apx.txt:142,搜「训练好的模型」)。「局部最优」这个名字原书没有给,是我们补的。

  35. 出处:「附录 迈向机器学习的第一步」第 588 段(text/15-apx.txt:588,搜「我们的例子里只有两个参数」)与第 590 段(text/15-apx.txt:590,搜「这样会发生「指数爆炸」」)。原文明确回指了第 7 章——也就是我们的第 13 章。

  36. 出处:「附录 迈向机器学习的第一步」第 576 段(text/15-apx.txt:576,搜「本书在第 1 章中提到过」)。这是原书自己的回指:「将大问题分解为小『单元』」——也就是我们第 01 章第 8 节那句主旨。

  37. 出处:「附录 迈向机器学习的第一步」第 596 段(text/15-apx.txt:596,搜「程序员是如何参与机器学习的」)。

  38. 出处:「附录 迈向机器学习的第一步」第 598 段(text/15-apx.txt:598,搜「而是通过模型、损失函数、训练数据,间接地让参数的选取向着更」)。

  39. 出处:「附录 迈向机器学习的第一步」第 599 段(text/15-apx.txt:599,搜「即使模型、损失函数都相同」)。

  40. 出处:「附录 迈向机器学习的第一步」第 601 段(text/15-apx.txt:601,搜「这就像硬件配置完全」)。