序列为什么难,注意力解决了什么
建议用时:25 分钟(含练习)
学习目标
能够解释序列建模为什么难,并说明对齐机制解决了哪个别的方法解决不了的新问题。
本节产出
一张信息要跨多远示意图
核心知识:序列的难处是先后,对齐改的是"该回看哪里"
图像那一格是整张同时进来的;序列是一条一条来的。这个区别不是实现细节,它决定了为什么递归天生串行、为什么远距离依赖天生贵。
难在三处,先用一把尺量
- 同一个记号在不同上下文里角色不同。"这不影响使用"和"这不影响,使用……"里,"不"字管到的范围完全不同,而它自己没有任何变化。
- 输入与输出的长度对不上。翻译一句中文要输出另一串语序不同的词,长度不同、顺序也不同,没有一一对应的格子可以填。
- 必须配合的两处可以隔很远。主语在句首,需要它决定的形式在句尾。
本节给你一把尺:距离,等于必须配合的两个位置之间隔了几步。后面所有的取舍都用这把尺量,不用"记性好坏"这种说法量。
递归把先后照进了计算,也就照进了两笔代价
递归单元做的事只有一句:处理第 t 个元素时,输入是当前这个元素加上上一步交下来的状态。d2l 中文第 8 章把训练的写法摊开得很直白:把这条链按时间展开成一张图,再做"通过时间的反向传播"(这一节标题 2026-10-23 回页核过)。
两笔代价,形状不同:
| 代价 | 为什么是结构给的 | 能不能省 |
|---|---|---|
| 串行 | 第 t 步的输入之一正是第 t-1 步的输出,顺序不可换 | 换单元不行,只能换结构 |
| 长程衰减 | 误差沿展开图回传时,一路连乘同样那几组权重 | 门控能撑长一段,撑不掉连乘 |
连乘这件事对"每步都小于 1 的因子"极不友好:传二十步之后数量级可以塌没;反过来每步都大于 1 就是爆。具体塌到什么值取决于实现与数值,本课不给数字,只给一条判据:要传几步,就等于这两个位置隔了几步。
第 9 章(现代循环神经网络,2026-10-23 核到页面标题)那类做法是在这两笔代价上想办法撑住,不是把串行取消。这一句很重要,它是下一节那笔平方账的入口。
对齐换掉的是"从哪儿取信息"
两篇 2014 年 9 月挂上 arXiv 的论文:一篇做序列到序列学习(提交日期 2014-09-10),一篇把对齐与翻译放在一起学(提交日期 2014-09-01)。本课只核到它们存在、标题与日期,不声称哪一篇是第一个。
对齐做的事,用一句可复述的机制说清:生成当前这个输出时,先给输入的每个位置打一个分,归一化成权重,再按这组权重把各位置的内容加权取回来。d2l 中文第 10 章 10.1 起的写法与此一致(分节号当日回页核过)。
它解决的问题要一格一格对:
| 之前 | 对齐之后 |
|---|---|
| 整段输入压进一个固定容量的向量 | 每个输出位置随时可以回看所有位置 |
| 远距离依赖要沿链传 L 步 | 一次加权读取,路径就是一步 |
| "该记什么"藏在状态内部 | "该看哪里"变成显式打分,可学也可查 |
一句诚实的话:上面这张表里"路径从 L 步缩成 1 步"是按机制推出来的算术描述,不是从哪篇论文里抄的句子。它的好处是学员能自己验算:给两个位置编号,数中间隔几步,就能对上。
新引入的代价也在这张表里露了头:随时回看所有位置,这笔开销随输入长度长。哪些是白名单来源支持的、哪些是机制说明,到本节末尾再点一次。
图里四格是一条链:句首句尾两个词必须对上,沿链一步步交,于是距离变成路径长度,最后由对齐把这段路换成一次带权重的回看。第三格到第四格之间是问题与解法的关系,不是"先有人做第三格再有人做第四格",那需要遍历同期文献才能说,本课没说。
案例:一句中文要跨多远(句子与数字均为本课编造)
下面这句中文是本课自造的,不来自任何真实语料,也不代表任何系统的表现。位置从 1 编号到 9:1 那本旧书,2 我,3 上周,4 在旧货摊,5 随手,6 买,7 的,8 其实,9 早被讲烂了。
| 输出片段(假想译法) | 要回看的输入位置 | 从第几号回看到第几号 | 沿递归链要几步 | 对齐之后 |
|---|---|---|---|---|
| 末尾的形式标记 | 1 | 9 回看 1 | 8 | 1 |
| 动作的施事 | 2 | 6 回看 2 | 4 | 1 |
| 时间状语 | 3 | 9 回看 3 | 6 | 1 |
| 修饰的对象 | 1 | 7 回看 1 | 6 | 1 |
第一行那个"8"就是本节全部论证的样本:八步不是一串可以靠"训练得再久一点"补回来的差距,它是结构上的八次排队与八次连乘。对齐那一列不是变快了,是把路径本身换掉了,四个"几步"全部换成一次读取。
顺便看代价落在哪:四行的权重都要算,而每一行的权重要覆盖九个位置。输入变长,被覆盖的位置就多,这笔开销跟着输入长度上去。这一句就是下一节的入口。
动手练习
- 标出回看点。用一句十二个位置的句子(题材自定,但要自己编号)。任务:找出四处必须回看前文的位置,各写出位置差。预期输出:四行,每行一个整数。验收条件:至少一行的位置差不小于 6。
- 算串行这笔账。设定:一条长度 50 的序列,单个时间步记为 1 个单位时间。任务一:只看一条序列、不把批量算进来,一次前向要多少个单位?任务二:同一个批量里塞 16 条各长 50 的序列,一次前向仍然要走多少步,每步里变的是什么?预期输出:两个数加两句说明。验收条件:不许用"上 GPU 就快了"来回答。
- 交一张"信息要跨多远"示意图。左列写句首与句尾两个位置,中列写沿链要几步,右列写一次直连回看。验收条件:中列必须是步数这个整数,不许出现"记忆好坏""注意力不集中"这类把结构问题说成状态品质的说法。
参考答案与推演
完成检查
- 能用"距离等于必须配合的两个位置隔了几步"把一句长句子的难点量化成一个整数。
- 能说清串行代价为什么不会因为有 GPU、因为批量变大而消失。
- 能说出对齐把路径从 L 步压成一步,同时指出它新引入的那笔开销随什么长。
- 能区分本节里哪几句是已核事实、哪几句是机制说明,并且不拿机制说明去支撑"第一个"。
参考与来源
- Neural Machine Translation by Jointly Learning to Align and Translate(arXiv,2014-09-01):2026-10-23 核到标题与提交日期;本课不据此声称任何"第一个"。
- Sequence to Sequence Learning with Neural Networks(arXiv,2014-09-10):2026-10-23 核到标题与提交日期;正文只引用它的存在与日期。
- d2l 中文:8. 循环神经网络:含"通过时间的反向传播"一节,分节标题当日回页核过。
- d2l 中文:9. 现代循环神经网络:2026-10-23 核到页面标题,本节未引用章内数值。
- d2l 中文:10. 注意力机制:10.1 注意力提示 … 10.7 Transformer,分节号当日回页核过。
序列为什么难,注意力解决了什么
3 道题 · 及格分 60 分