摞成层 — 从一台感知器到一张网,以及人类还剩下什么
这一章讲三件事: 一个感知器不够用,该怎么办; 参数一多之后「往哪边挪」这个问题为什么会变难,以及怎么解决; 还有这本书最后一个真正的判断——机器学习铺开之后,人类还剩下什么。
它在全书链条里的位置: 这是全书的最后一章。 第 20 章那台机器只有三条线;这一章把它摞起来, 于是第 13 章那个指数爆炸最后一次现身。 需要的基础: 第 20 章的全部内容;走查续用那里那组输入。
1. 一个不够用,就摞成层
先说为什么要摞。原书的话很直接:单个感知器能做的事情还是太有限了1。
于是把多个感知器组合起来,构成多层结构,以便处理更复杂的判断—— 这就叫神经网络2。
它的定义只有一句:把像感知器那样有输入有输出的节点排列起来、 形成带有层次的结构3。
输入 中间那一排节点 输出
x₁ ●──┐ ┌──● ──┐ ┌──● y₁
├──────────┤ ├──────────┤
x₂ ●──┼──────────┼──● ──┼──────────┼──● y₂
├──────────┤ ├──────────┤
x₃ ●──┘ └──● ──┘ └──● y₃
└── 第 1 层 ─┘ └── 第 2 层 ─┘
图说:一共三排圆圈:左边三个是输入,中间一排是节点,右边三个是输出。
圆圈之间有两组连线,每根连线上都挂着一个权重(为了不糊,图里省略没画)。
**「第 1 层」「第 2 层」数的是连线,不是圆圈的排数** —— 这正是下一节要说的坑。
这张图照原书图 A-10 重画。
「神经网络」这个名字来自生物的信息传递方式4。 但有一处和第 20 章不同要注意:感知器的输出是二元的(只有 0 和 1), 而神经网络中节点的输出不是二元的,是可以做微分运算的连续值5—— 这一点在第 4 节会变得很关键。
2. 「几层」有两种数法
这一节先扫掉一个会让人读岔的地方。
上面那张图,有人叫它 2 层,有人叫它 3 层6:
| 数法 | 数什么 | 上图算几层 |
|---|---|---|
| 按连线数 | 带权重的连接有几组 | 2 层 |
| 按节点排数 | 输入、中间、输出一共几排 | 3 层 |
原书说得很实在:不同的书、不同的论文可能有不同的计数方式7。 所以看到「几层网络」这个说法时,先确认对方在数什么。
不管怎么数,一件事是确定的:只要把网络一层层地连接起来, 就能得到多层神经网络8。
3. 主走查续:同一组输入过两层
这一节接着第 20 章那组输入往下走,每一步的数都算出来。
还是那组输入 (1, 0, 1)(和第 20 章同一组)。 中间那排三个圆圈、右边三个输出,每个都挂着自己的三个权重 ——下面这些权重全部是我们为演示编的,不是真实数值。
第 1 步:三个输入 ──第 1 层的连线──→ 中间那排三个圆圈
h₁ 的三个权重 (0.6, −0.2, 0.5) ← 就是第 20 章那台机器的三个数
0.6 × 1 + (−0.2) × 0 + 0.5 × 1 = 1.1
h₂ 的三个权重 (0.2, 0.4, −0.3)
0.2 × 1 + 0.4 × 0 + (−0.3) × 1 = −0.1
h₃ 的三个权重 (−0.5, 0.1, 0.8)
(−0.5) × 1 + 0.1 × 0 + 0.8 × 1 = 0.3
中间那排吐出来的是 (1.1, −0.1, 0.3)。
第一行值得看一眼:它和第 20 章算出来的 1.1 一模一样 ——
那台机器就是这里的一个圆圈。
第 2 步:那三个数 ──第 2 层的连线──→ 三个输出
y₁ 的三个权重 (0.5, 0.3, −0.2)
0.5 × 1.1 + 0.3 × (−0.1) + (−0.2) × 0.3 = 0.55 − 0.03 − 0.06 = 0.46
y₂ 的三个权重 (−0.4, 0.7, 0.6)
(−0.4) × 1.1 + 0.7 × (−0.1) + 0.6 × 0.3 = −0.44 − 0.07 + 0.18 = −0.33
y₃ 的三个权重 (0.2, −0.5, 1.0)
0.2 × 1.1 + (−0.5) × (−0.1) + 1.0 × 0.3 = 0.22 + 0.05 + 0.30 = 0.57
第 3 步:最终的输出 (y₁, y₂, y₃) = (0.46, −0.33, 0.57)
图说:同一组 (1, 0, 1),连着过了两次「乘上权重再加总」。
第 20 章那台机器只做了一次、吐出一个数;这里吐出三个。
现在数一数要调的数有几个(照书里那张图数出来的):
输入 3 个 ──第 1 层连线──→ 中间 3 个节点:每个节点接 3 条线 = 9 个权重
中间 3 个 ──第 2 层连线──→ 输出 3 个: 每个输出接 3 条线 = 9 个权重
合计:18 个
对照:第 20 章那台机器只有 3 个权重。
只不过多摞了一排节点,要调的数就从 3 个变成了 18 个 —— 六倍。
这就是主走查的落点:同一组输入没变,要调的数变成了原来的六倍。 而这正是下一节那个问题的来源。