本课讲 2018 年的一篇教程。哈佛大学的 Alexander Rush 把第 13 课的 Transformer 论文一段一段拆开,每段后面配上能运行的代码。2022 年,Austin Huang 等人又更新了一版。
下面 3 条说明,大人一看就懂。假如你从来没做过,照着做会卡在哪里?在横线上写下你想问的问题。
煮面:把面放进锅里,煮好就吃。 我会问:
画小猫:画一只坐着的小猫。 我会问:
洗手:把手洗干净。 我会问:
比如:要先放水吗?煮多久才算“好”?一句话谁都看得懂,真照着做,问题就冒出来了。论文也是这样。
第 13 课讲了 2017 年提出 Transformer 的论文。它像一份“大厨的说明”:重要的事都写了,很多小步骤却省掉了。官方代码又一层套一层,初学者很难找到“注意力到底在哪一行”。
Rush 干脆自己从头写一遍,边写边讲。他发现,论文里一句话,代码里往往要写很多行:
| 论文里的一句话 | 写代码时要补上的事 |
|---|---|
| 写译文时,不能偷看后面的词 | 做一张阶梯形的“遮挡卡”,挡住后面的位置(见第 3 节的图) |
| 把句子分成一批一批来练 | 句子有长有短,短的要补上空格;还要告诉电脑哪些是空格,别去学它们 |
| 别让电脑把话说太满 | 正确的词只给 9 成把握,剩下 1 成分给其他词 |
还有些细节,论文根本没写,比如遮挡卡做成什么形状。写代码的人只能自己想出来。
有的课本旁边写满了批注。这篇教程就是一本“带批注的论文”,按论文原来的顺序一段接一段排下去:
mask = subsequent_mask(5)示意:一小段的样子。第 ② 条是一行真实的代码,不用看懂。右图就是这张遮挡卡:黄格子露出来,灰格子被挡住,红框是第 3 行。
读完最后一段,就有了一台能练习、能翻译的 Transformer。这种文字和代码交替着写的办法,叫文学编程,是计算机科学家 Knuth 提出的。
每块积木干什么,第 13 课讲过。这里只看教程怎么先做小积木,再拼成大机器:
示意图:绿色弯线是近路。教程先做好一层,再复制 6 份叠起来,像乐高先拼一个房间,再复制成一栋楼。
| 积木 | 干什么(打个比方) | 积木 | 干什么(打个比方) |
|---|---|---|---|
| 词变数字 | 每个词换成一串数字,像一张“数字身份证”。 | 小加工站 | 每个词单独进去,加工一下再出来。 |
| 座位号 | 注意力本身不管先后。贴上座位号,才知道谁排第几。 | 近路和整理 | 近路是第 9 课讲的。整理是把一串数字调到差不多大小。 |
| 注意力 | 每个词看看其他词,找出最有关的。默认 8 个“头”,像 8 双眼睛。 | 编码器 / 解码器 | 一个读原句,一个写译文,各叠 6 层。解码器还多一块“回头看原句”。 |
论文是先走近路合流,再整理。代码换成先整理,再进积木。作者在说明里写了:这样代码更简单。这和第 10 课把整理站挪到小路上很像,后来的大模型大多也这样排。
机器拼好了,教程没有马上拿去翻译。它先出了一道最简单的题:给它一串随机的数字,让它原样照抄出来。这个小测验叫复制任务。
示意:数字是我们编的,不是教程里的真实输出。
照抄题不用下载任何资料,几分钟就能练好。座位号没接好,顺序就会乱。遮挡卡放错了,机器就会偷看答案。所以能抄对,说明零件都接对了。就像新自行车先在院子里骑一圈,再上马路。通过以后,教程才做真任务:把德语翻译成英语。
读论文时,人常常觉得“差不多懂了”。一动手,坑就冒出来:数字排列的形状对不上,遮挡卡放错地方。这篇教程把这些坑提前标了出来,成了学 Transformer 的标准材料。
懂有四级:读过一遍 → 能讲给别人听 → 能照着做出来 → 做坏了能自己修好。越往后,懂得越深。
今天的聊天 AI,大脑结构大多是 Transformer 的后代。它们一般只用解码器那一叠,一个词一个词往后写。很多人学 Transformer 时还会读这份代码。不过,真正的聊天 AI 大得多,零件也换成了更快的版本。这份代码是“教学模型”。它留下的最大财富是一种学习方法:边读边做,再用最简单的题检查每个零件。
玩法(2 个人,约 15 分钟)
1. 菜谱卡:“果酱面包:拿两片面包,抹上果酱,合起来就好了。”A 把它拆成步骤,写进下表,每步只做一个动作。
2. B 当“机器人”,只照字面做,没写的不做。两本书当面包,尺子当小刀,空盒子当果酱瓶。
3. 机器人卡住或做错,就记下来。A 补上一步,从头再做。 换人再拆“纸飞机:对折,折出尖头,就能飞了”。
| 第几步 | 我写的步骤 | 机器人出了什么问题 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 |
1 句话拆成了步。你会发现:“打开瓶盖”这种事菜谱没写,机器人却不知道。论文变代码,也要补上没写的步骤。
第一步:拼积木(1 个人,约 5 分钟)
剪 10 张卡片,照第 4 节积木图里的 10 个名字写好(小加工站写 2 张)。打乱后合上讲义,自己从下往上拼,再翻开检查。
第二步:照抄测试(3 个人,约 10 分钟)
1. 出题员想 5 个数字,每个写在一张小纸片上,再抄进下表。
2. 座位员在纸片背面写座位号 1–5。第 1 轮他“坏了”,什么都不写。
3. 注意力员把纸片打乱再传下去。注意力本身不管顺序,“打乱”就是模拟这一点。
4. 解码员只看纸片,按第 1 位到第 5 位写出来。
| 轮次 | 座位员 | 题目 | 解码员写出的 | 抄对了吗 |
|---|---|---|---|---|
| 1 | 坏了 | |||
| 2 | 正常 |
你会发现:少了座位号,数字一个不少,顺序却乱了。照抄题能查出哪块积木没接好。
给家长和老师:本课讲的是 Harvard NLP 的 The Annotated Transformer。原版由 Alexander M. Rush 于 2018 年 4 月发布(NLP-OSS 2018),2022 年版由 Austin Huang、Suraj Subramanian、Jonathan Sum 等人更新。它按 Attention Is All You Need 原文顺序,每段后紧跟 PyTorch 实现,补上掩码、批处理、学习率调度、标签平滑等细节。代码的 SublayerConnection 是归一化前置,论文是后置 norm(x + sublayer(x))。例子先做随机符号的复制任务,再做 Multi30k 德译英。
讲义中“论文里的一句话”是通俗改写;比喻、积木图、照抄数字和两个活动都是示意,“打乱纸片”只模拟注意力不区分顺序。详见本站 第 14 天中文导读和 30u30 第 14 天目录(英文)。
极客教育 jikejiao.com 原创讲义 · 2026-10