跳到主要内容

琥珀色怎么记 — 三个圈、两种工作状态,和什么叫一份好的记法

这一章讲三件事: 三个天天被混着说的名字到底什么关系; 一台机器「学」和「用」为什么是两笔完全不同的账; 以及同一样东西记成不同的形状,能力会差多少。

它在全书链条里的位置: 上一章的落点是「给例子,让它自己找规律」。 但在讲「怎么找」之前,得先说清楚例子进到机器里长什么样—— 这一章讲的就是这件事,它是后面每一章的暗线。

1. 三个词不是同义词,是三个圈

新闻里「人工智能」「机器学习」「深度学习」几乎随便换着用。它们其实是层层包含的三个圈1:

┌─────────────────────────────────────────┐
│ 人工智能:让机器有智能(最外圈,是个目标) │
│ ┌────────────────────────────────────┐ │
│ │ 机器学习:从例子里自动找规律 │ │
│ │ ┌───────────────────────────────┐ │ │
│ │ │ 深度学习:用多层网络自动找特征 │ │ │
│ │ └───────────────────────────────┘ │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────┘

这张图看的是范围大小,不是时间先后。 最外圈是一个愿望; 中间那圈是实现这个愿望最成功的一条路;最里面那圈是这条路上近年最强的一支。 第 01 章讲的专家系统属于最外圈但不属于中间圈——它不从例子里学。

这个区分有实际用处。 你看到一条新闻说「某某公司的 AI 出错了」, 先问它属于哪个圈:如果是一套写死的规则出错,那是有人写错了规则; 如果是从例子里学出来的东西出错,那多半是例子有问题,或者它撞上了没见过的情况。 两种错的修法完全不同。

2. 学和用是两笔账:训练与推断

这一节要钉死一组词,后面每一章都靠它。

书里用厨师打过一个比方,很准。训练是让机器学本事2: 像厨师学做菜,要看菜谱、切很多土豆、炒糊几口锅、被师傅骂几次,最后才知道火候怎么掌握。 机器也是:拿大量例子反复练习,答错了就往回拧那些数,下一次少错一点。 这个过程很贵、很慢、很耗电,像培养一个人从小学读到博士。

推断是把学好的本事拿来用。 厨师学成之后,顾客点一份番茄炒蛋, 他不需要重新读完所有菜谱,只要把已经会的手艺使出来。 你向一个聊天程序提问、让手机认一张照片、让导航预测堵车,都是推断3推断比训练便宜得多——也正因为便宜,它才能被放进手机、网页、汽车里。

记住这个区分,很多新闻就好懂了:

你看到的说法它在说哪一头类比
「训练一个大模型花了几千万美元」训练办一所学校
「推断成本降低了十倍」推断开一家餐馆,一盘菜的成本

为什么强调这个词? 因为英文 inference 在中文世界一半被译成「推理」。 作者立了规矩把它固定成「推断」,好和「解题、论证」那个推理分开; 这份拆解全程照办。这个词在第 18 章还会再出现一次—— 到那时你会看到,整个行业投进去的计算,重心正在从前一头挪到后一头。

3. 那台机器最小的一块砖

上一章说机器是「一堆极简单的小单元层层连起来」。现在把一个单元拆开看。

它接收几个输入,每个输入配一个数,表示这个输入有多要紧; 把「输入 × 各自的数」全部加起来,再送进一道开关,决定往下传什么4。 三样东西各有名字,先给名字,后面全书都用:

那个「这个输入有多要紧」的数,叫权重(它大,意味着这个输入变一点、 输出就跟着变很多;它小,意味着这个输入几乎不影响结果)5

加权求和之后还要再加一个常数,这个常数叫偏置(可以理解成这个单元的默认倾向: 所有输入都是零的时候,它输出什么)。

最后那道开关叫激活函数(一个把加出来的数再变换一次的小函数)。 它必须是弯的、不能是直的——这一点第 7 节专门讲,它是「深」这件事成立的全部前提。

这块砖简单到有点让人失望。 但书里点得很准:整个网络的全部学习能力, 就凝聚在这个看起来简陋的式子里,只不过它要被重复使用几百万次。

为什么长这样? 因为它抄的是人脑。人脑大约有 860 亿个神经元6, 每个神经元接收来自其他神经元的信号,累积超过某个门槛就「放电」, 把一个电脉冲传给下一个。1949 年一位加拿大心理学家提出: 两个神经元经常一同激活,它们之间的连接就会被加强—— 后来被总结成一句朗朗上口的话:一起放电的细胞会连在一起7学过的东西和练出的本事不存在某个固定位置上,而是分散在连接的强弱里。 这句话是下一节的引子。

4. 走查:琥珀色怎么记

这一节是全章的主走查。 从头到尾只用一个输入:琥珀色。

计算机要记住「琥珀色」,有两种完全不同的记法。

记法一:给每种颜色发一个号。 红 = 1,蓝 = 2,绿 = 3,琥珀色 = 4…… 然后用一串数来表示它:第 4 位是 1,其他全是 0。 这种记法叫局部表示(每样东西独占一个位子,一串数里只有一个 1)8。 这一串数在书里叫一个向量(就是一串按固定顺序排好的数,像 [0, 0, 0, 1, 0, 0])。

一串数里有几个数,就说它有几(维度就是这串数的长度)。走查的第一步落在这里:

局部表示下的琥珀色
这串数长什么样[0, 0, 0, 1, 0, 0, 0, …]
长度(维度)世界上有多少种颜色,就多长——成百上千
看得出是琥珀色吗看得出,第 4 位是 1
看得出它和咖啡色像不像吗完全看不出。 两串数在不同位置各有一个 1,别的全是 0

第二个格子是全章的转折。 琥珀色和咖啡色明明很像,但在这种记法下, 它们和「琥珀色与天蓝色」的关系一模一样:毫不相干。

记法二:用几个连续的数。 琥珀色 = (1.00, 0.75, 0.00),咖啡色 = (0.44, 0.31, 0.22)9。 三个数分别是红、绿、蓝三种光的强度。这种记法叫分布式表示—— 含义不在某一位上,而在几位合起来。走查的第二步:

分布式表示下的琥珀色
这串数长什么样(1.00, 0.75, 0.00)
长度(维度)3,不管世界上有多少种颜色
看得出是琥珀色吗不那么直观:没有哪一位「就等于琥珀色」
看得出它和咖啡色像不像吗看得出。 三个数分别差 0.56、0.44、0.22,都不算远;换成天蓝色 (0.53, 0.81, 0.92),第三位差了 0.92

两种记法各自丢掉了一样东西,而丢掉的正好相反。 第一种保住了「看一眼就知道是谁」, 丢掉了「像谁」;第二种保住了「像谁」,丢掉了「一眼看出是谁」。 而对机器来说,「像谁」远比「是谁」有用——因为它要处理的,永远是没见过的新东西。

5. 同一招用在词上:那个平行四边形

把这一招从颜色搬到词上,就得到了这一行最著名的一个发现。

给每个词也配一串几百个数,让意思相近的词自然靠近—— 这样一串代表词的数,叫词向量。 学出来的东西让人吃惊:向量运算「国王 − 男人 + 女人」的结果, 竟然约等于「女王」10。同样,「巴黎 − 法国 + 意大利」约等于「罗马」。

这件事为什么值得惊讶? 因为没有人教过它「国王和女王的关系」等于「男人和女人的关系」。 它是从「哪些词常常出现在一起」这件事里自己长出来的。 语义(一个词所指的意思)关系被编码进了几何结构——在局部表示那种记法下,这完全不可能。

这套把词变成一串数的做法,行话叫词嵌入(把一个词嵌进一个几百维的空间里, 让它成为空间中的一个点)。它是后面所有语言模型的第一道工序。

但要留一句提醒。 书里自己也说了:这种向量运算只是帮助理解的经典例子, 并不意味着所有语义关系都能像算术题一样精确计算。你换几十对词试,大部分不会这么整齐。

6. 为什么「深」比「宽」划算

现在把这些单元叠起来。为什么要叠很多层,而不是把一层做得特别宽?

答案是:多层会自发地分工,而且分工方式是「由简到繁」。 把一个训练完的深度网络中间层的输出画出来,能看到这样一条链11:

像素 → 浅层:横边、竖边、斜边
→ 中层:眼睛的轮廓、鼻子的曲线、车轮的圆
→ 深层:猫头、狗脸、汽车、行人
→ 输出:这是一只猫

这张图说的是同一张图片在网络里被看了四遍,每一遍看得更粗、意思更多。 没有人告诉它要这样分工,它自己就这样分了。

更有意思的是,研究者发现这个层次和人脑视觉皮层的分层高度相似: V1 皮层检测简单边缘,V4 处理形状,IT 皮层识别完整物体12这种相似可能不是偶然——两者都在解同一个问题:从像素到语义。

理论上有个结论叫通用近似定理:一个只有一层隐藏层(夹在输入和输出中间、不和外界直接打交道的那些层)、而这一层又足够宽的网络, 能以任意精细的程度逼近一大类连续函数13。听起来「一层就够了」。 但这个定理有三行小字常被忽略:

  1. 「足够宽」可能要天文数字个单元;
  2. 它只说这样的参数存在,没说怎么找到;
  3. 它说的是连续函数,而现实里很多关系不连续、带噪、根本不是函数。

实测的经验是:同样想表达复杂关系,10 层每层 100 个单元, 往往比 2 层每层 10000 个更容易学出有用的东西,也更省参数。 这就是现代网络大多走「深」路线的原因。

7. 但「深」有一个前提:每层之间必须拐一下

这一节短,但它是全书最硬的一条约束。

假设那道开关是直的,比如「输出 = 2 × 输入」。那么两层连起来会怎样? 第一层做一次变换,第二层再做一次,合起来还是一次变换—— 两个直的接在一起,还是直的。无论堆多少层,整个网络等价于单层14

所以那道开关必须是弯的。今天最常用的一个弯法简单得可笑: 负的归零,正的不变15。就这么一句,它有个名字叫 ReLU。

为什么这么简单的东西能顶用? 因为「弯」这件事本身就够了。 一条折线只要有足够多的转折点,就能逼近任何形状; 每一层的每个单元贡献一个转折点,几十层几千个单元叠起来,能折出极复杂的边界。

记住这条因果链: 想要深 → 必须每层之间有非线性 → 所以每个单元末尾都挂一道弯的开关。 去掉最后一步,前面两步全塌。(为什么把这道开关从 S 形换成「负的归零」是个分水岭,第 08 章讲。)

8. 端到端:把中间那些人工环节全拆掉

这一节讲第 01 章那句「机器学会了用特征,却没学会找特征」是怎么被翻过来的。

传统做法是把一个复杂任务切成好几段,每段单独设计、单独训练,再用胶水代码串起来。 早期的语音识别就是这样一条流水线16:

音频信号 → 提取声学特征 → 音素识别 → 词识别 → 句子识别
↑人设计 ↑人设计 ↑人设计 ↑人设计

这条流水线有两个致命毛病。 一是每段只顾把自己那一段做到最好, 但整个系统的目标是「把句子听对」,每段的最优拼起来未必是整体最优; 二是前一段的错误会被后一段放大,最后拿到的是累积起来的错。

端到端学习换了个做法:直接从原始输入学到最终输出,中间那些人工模块一个不留, 整条链由一个网络完成17。这样整条流水线围绕同一个目标一起调,也不存在错误一段段传递。

这件事的效果不是渐进的。Google 翻译在 2016 年从传统流水线切换到端到端之后, 质量不是慢慢变好,而是一夜之间上了一大截18

它还有个副作用:软件工程变简单了。 传统流水线要几十位专家各管一段, 代码复杂又脆弱;端到端是一个模型一个目标,一名研究生就能搭起来。 这一行在工业界铺开得这么快,很大程度上靠的是这个。

9. 落点:深度学习真正的贡献是「表示」

把前面几节串起来,这一章的落点就出来了。

深度学习最大的贡献不是层数多,而是让机器自己从原始数据里学出该看哪些量。 这种能力书里叫表示学习——机器学会的不只是「怎么分类」,更是「怎么看世界」19

它的意义超出「自动化」本身。人设计的特征受限于人的认知: 我们觉得颜色深浅重要,机器就只能用颜色深浅。 而机器自己学出来的,可能是某种人根本没想过的抽象模式—— 比如某个特定尺度下的纹理疏密、某种只在特定场景里才有意义的形状组合。 这些人看不出来的东西,反而常常更管用。

最后一块拼图是工程上的:几千亿个数怎么可能一起调? 答案是自动微分——你只要像写数学公式一样把网络定义出来, 框架会自动追踪每一步计算,再自动算出每个数该往哪边挪20。 书里给了一个很有冲击力的对照:今天用 20 行 Python 代码就能搭一个上亿参数的网络, 一行梯度都不用手写21

补充(不在书里,依据我们的 frontier 书架): 这件「自动追踪、自动倒推」的事, 最小的能跑通的实现只有 154 行代码——一个叫 micrograd 的教学项目, 核心两个文件加起来 94 行 + 60 行,连乘法、加法、幂、以及那个「负的归零」的开关都写全了22这个数值得记住:它说明自动微分不是什么庞然大物,是一件小到能读完的事。

10. 作者的判断与证据

有证据的部分。 三个圈的包含关系、训练与推断的成本差、局部表示与分布式表示的对比、 逐级抽象的可视化结果、Google 翻译 2016 年的跃升,这些都是可查的。

要分开看的三处:

  1. 「网络的层次和人脑视觉皮层高度相似」。 书里写的是「这种相似可能不是偶然」—— 是一个猜想,不是结论。别把它读成「网络在模仿大脑」; 下一句紧接着的解释是「两者在解同一个问题,得出的解可能相近」。
  2. 平行四边形那个例子。 书里自己加了限定:并不意味着所有语义关系都能精确计算。 这句限定常常在别处被丢掉,于是这个例子被过度解读了十年。
  3. 通用近似定理。 定理本身是数学结论,成立;但书里强调的是它的三行小字。 「理论上能」和「实际好学」是两回事,这是全书反复出现的一个提醒。

判断(我们的,不是书里的):这一章真正的主角是第 4 节那张对照表,不是三个圈。 「像谁」比「是谁」有用,是后面每一章的前提:注意力算的是「谁和谁有关系」, 查资料比的是「哪一段和这个问题近」,多模态做的是「让图和字住在同一片地方」。 全都建立在「东西被记成了一串能比远近的数」这件事上。 如果错,会错在: 有些任务里「是谁」才要紧——比如查一个身份证号、 对一次账。这类任务用一串连续的数来记,反而是自找麻烦。

11. 边界与局限

  • 这一章没有讲那些数是怎么被调出来的。 「让相近的词靠近」说起来轻巧, 具体靠什么目标训出来,要到第 12 章。
  • 人脑那部分只讲了相似处的一半。 书里在第 3 章末尾专门讲了差异 (人脑功耗约 20 瓦,大模型要一整个机房;人脑能终身学习,网络会灾难性遗忘)—— 那部分我们放在第 07 章末尾。
  • 「深比宽划算」是实测经验,不是定理。 书里给的是「实际经验告诉我们」, 没有给出证明,也没有给出「多深算够」的判据。
  • 端到端不是永远更好。 书里这一版没展开它的代价:出了错很难定位是哪一段的问题, 也很难把人的先验知识塞进去。这两点在第 04 章讲归纳偏置时会补。

12. 可带走的

  1. 三个圈是包含关系,不是同义词。 遇到「AI 出错」的新闻,先问它属于哪个圈,修法完全不同。
  2. 训练和推断是两笔账。 前者像办学校,后者像开餐馆;看到成本数字先分清是哪一头。
  3. 一个单元只有三样东西:权重、偏置、激活函数。 全书后面所有复杂结构,都是这三样重复几百万次。
  4. 一份好的记法,要让「像谁」能被算出来。 这是分布式表示压倒局部表示的唯一理由,也是全书的暗线。
  5. 琥珀色 = (1.00, 0.75, 0.00) 只要 3 个数,而给每种颜色发号要几百个。 记住这个对照,你就懂了为什么现代模型都用连续的数。
  6. 深的价值在逐级抽象,而逐级抽象的前提是每层之间有非线性。 抽掉后半句,前半句立刻不成立。
  7. 端到端换掉的是「每段各自最优、合起来不最优」这个结构病。 它带来的跃升往往不是渐进的。

13. 原文地图

主题原书章原文位置
三个圈的包含关系第1章 智能的第三次浪潮text/02-ch01.txt:21(搜「层层包含」)
训练与推断第1章 智能的第三次浪潮text/02-ch01.txt:385(搜「训练是让模型学本事」) · :388(搜「推断是用学好的模型做事」) · :393(搜「训练一个大模型花了几千万美元」)
人工神经元与三样东西第1章 智能的第三次浪潮text/02-ch01.txt:471(搜「加权求和后的结果送入」) · :491(搜「这个输入对结果有多重要」)
人脑与赫布规则第1章 智能的第三次浪潮text/02-ch01.txt:450(搜「860 亿个神经元」) · :458(搜「fire together」)
局部表示与分布式表示第1章 智能的第三次浪潮text/02-ch01.txt:429(搜「局部表示」) · :436(搜「分布式表示」) · :437(搜「咖啡色」)
平行四边形第1章 智能的第三次浪潮text/02-ch01.txt:442(搜「女王」)
逐级抽象与视觉皮层第1章 智能的第三次浪潮text/02-ch01.txt:530(搜「浅层的神经元大致在检测边缘」) · :536(搜「V1 皮层检测简单边缘」)
通用近似定理第1章 智能的第三次浪潮text/02-ch01.txt:508(搜「通用近似定理」)
非线性是深的前提第1章 智能的第三次浪潮text/02-ch01.txt:539(搜「无论堆多少层」) · :542(搜「负的归零」)
端到端第1章 智能的第三次浪潮text/02-ch01.txt:548(搜「音素识别」) · :554(搜「直接从原始输入学到最终输出」) · :558(搜「2016 年从传统流水线」)
表示学习与自动微分第1章 智能的第三次浪潮text/02-ch01.txt:400(搜「表示学习」) · :571(搜「自动微分」) · :573(搜「20 行 Python」)

Footnotes

  1. 出处:「第1章 智能的第三次浪潮」第 21 段(text/02-ch01.txt:21,搜「层层包含」)。 书里用的类比是「汽车、家用轿车、特斯拉」。

  2. 出处:「第1章 智能的第三次浪潮」第 385 段(text/02-ch01.txt:385,搜「训练是让模型学本事」)。 厨师那个比方是原文自己用的:看菜谱、切土豆、炒糊几口锅、被师傅骂几次。

  3. 出处:「第1章 智能的第三次浪潮」第 388 段(text/02-ch01.txt:388,搜「推断是用学好的模型做事」)。 原文的两句总结是:「前者像办学校,后者像开餐馆,一个决定能不能培养出厨师,一个决定一盘菜卖得划不划算」 (第 396 段,text/02-ch01.txt:396,搜「一盘菜卖得划不划算」)。

  4. 出处:「第1章 智能的第三次浪潮」第 471 段(text/02-ch01.txt:471,搜「加权求和后的结果送入」)。 原文写成一个式子:输出 = 激活函数(权重 × 输入之和 + 偏置)。

  5. 出处:「第1章 智能的第三次浪潮」第 491 段(text/02-ch01.txt:491,搜「这个输入对结果有多重要」)。 同一段还解释了偏置:「你可以理解为『神经元的默认倾向』,也就是在所有输入都为零的情况下,神经元会输出什么」。

  6. 出处:「第1章 智能的第三次浪潮」第 450 段(text/02-ch01.txt:450,搜「860 亿个神经元」)。 原文给的参照物很好用:光是脑白质中较长的有髓神经纤维,总长就可达十几万公里,足以绕地球三四圈。

  7. 出处:「第1章 智能的第三次浪潮」第 458 段(text/02-ch01.txt:458,搜「fire together」)。 这条规律 1949 年由唐纳德·赫布在《行为的组织》里提出,后来称为赫布规则

  8. 出处:「第1章 智能的第三次浪潮」第 429 段(text/02-ch01.txt:429,搜「局部表示」)。 原文也叫它 one-hot 编码——直译是「只有一个是热的」,指一串数里只有一位是 1。

  9. 出处:「第1章 智能的第三次浪潮」第 436 段(text/02-ch01.txt:436,搜「分布式表示」)与第 437 段(text/02-ch01.txt:437,搜「咖啡色」)。 本章表里天蓝色那一行 (0.53, 0.81, 0.92) 不在书里,是我们为了做对照补的一个常见取值 (补充,来自通用知识);琥珀色与咖啡色两组数是书里的原值。

  10. 出处:「第1章 智能的第三次浪潮」第 442 段(text/02-ch01.txt:442,搜「女王」)。 「巴黎 − 法国 + 意大利 ≈ 罗马」出现在第 6 章讲 Word2Vec 那一节 (text/07-ch06.txt:233,搜「罗马」),我们在第 12 章会回到它。

  11. 出处:「第1章 智能的第三次浪潮」第 530 段(text/02-ch01.txt:530,搜「浅层的神经元大致在检测边缘」)。

  12. 出处:「第1章 智能的第三次浪潮」第 536 段(text/02-ch01.txt:536,搜「V1 皮层检测简单边缘」)。 原文的措辞是「这种相似可能不是偶然」——是猜想,不是结论。

  13. 出处:「第1章 智能的第三次浪潮」第 508 段(text/02-ch01.txt:508,搜「通用近似定理」)。 三行小字在第 518 段(text/02-ch01.txt:518,搜「理论上能学」)。

  14. 出处:「第1章 智能的第三次浪潮」第 539 段(text/02-ch01.txt:539,搜「无论堆多少层」)。 原文的理由一句话:线性变换的复合还是线性变换。

  15. 出处:「第1章 智能的第三次浪潮」第 542 段(text/02-ch01.txt:542,搜「负的归零」)。 这个开关的正式名字是 ReLU,第 05 章会专门讲它为什么能顶用。

  16. 出处:「第1章 智能的第三次浪潮」第 548 段(text/02-ch01.txt:548,搜「音素识别」)。 原文列的那条流水线是:音频信号 → 特征提取 → 音素识别 → 词识别 → 句子识别。

  17. 出处:「第1章 智能的第三次浪潮」第 554 段(text/02-ch01.txt:554,搜「直接从原始输入学到最终输出」)。

  18. 出处:「第1章 智能的第三次浪潮」第 558 段(text/02-ch01.txt:558,搜「2016 年从传统流水线」)。 原文的措辞是「不是渐进改进,而是一夜之间变好了一大截」。

  19. 出处:「第1章 智能的第三次浪潮」第 400 段(text/02-ch01.txt:400,搜「表示学习」)。

  20. 出处:「第1章 智能的第三次浪潮」第 571 段(text/02-ch01.txt:571,搜「自动微分」)。 书里给不写代码的读者留了一个比方:把它理解成一位极其耐心的会计, 网络里每一次计算花了多少钱、谁该为错误负责多少,它都替你一笔笔记账。

  21. 出处:「第1章 智能的第三次浪潮」第 573 段(text/02-ch01.txt:573,搜「20 行 Python」)。

  22. 补充(不在书里,依据我们的 frontier 书架):自动微分最小的可跑实现只有两个文件。 依据: shelf=ai-frontier-reference/micrograd@src:micrograd/engine.py:94 @7bc720e951fe422b8f8814aa5aa1b64121d26b4c 事实=这个文件一共 94 行,里面就是「记账 + 倒推」的全部逻辑。 另一份: shelf=ai-frontier-reference/micrograd@src:micrograd/nn.py:60 @7bc720e951fe422b8f8814aa5aa1b64121d26b4c 事实=这个文件一共 60 行,把单元、层、多层网络三样都定义完了;94 + 60 = 154。