跳到主要内容

语言模型基础 — 从数数、循环到注意力

这一章讲三件事: 这门技术从哪来(靠数数起步)、中间怎么换的一代(循环网络)、 今天的主力长什么样(注意力架构);外加两件伴随始终的手艺——生成时怎么挑词、 训完怎么打分。 原书这一章收 20 篇论文、只有题名没有介绍。我们的拆解补上的正是它省略的部分: 这些论文为什么按这个顺序排,每一篇接住了上一篇留下的什么问题。

1. 先交代:你手里拿的是什么

这份列表不是教材,是《大模型基础》教材的配套论文清单:编者把六个主题各配一批论文, 每篇一条记录:题名与刊物,作者与原文链接,外加年份——没有一句介绍1

所以这一章的读法只有一种:别把它当书目,把它当一张标注了先后顺序的行军图。 编者把「基于统计方法的语言模型」排在最前、注意力相关论文排在后, 这个顺序本身就是内容——它就是这门技术三十多年的换代路线

判断(我们的,不是书里的): 这份列表的评论全藏在排序里。 循环网络一线只收到 2015 年为止,统计一线只收两本教材—— 这等于编者用版面说了「这两条线已经定型,当作背景读即可」。 如果错,会错在: 如果编者只是没来得及更新而不是有意封笔, 那「收到的年份」就不能当作重要性判断,只能当作时间截点。 两条解释都通,下文凡用到「排序即判断」的地方都按较弱的那种(时间截点)兜底。

2. 顶层全景:一条换代线,两翼各一门手艺

数次数(统计)──> 把上文压进一个状态(循环网络)──> 每个词直接看全体上文(注意力)
1999 1989–2015 2017–2023
│ │ │
└───────────────────┴──────────────┬────────────────┘

生成时怎么挑词(采样)── 训完怎么打分(评测)

图说:三代方法是一条被上一步的短板逼出来的换代线;采样与评测不是阶段,
而是挂在每一代身上的两门手艺——不管模型怎么换,这两个问题永远在。

这张图就是本章的主走查骨架:同一个任务——给「今天天气真__」接下一个词—— 三代方法各是怎么答的,答完怎么挑、怎么打分。 下面每一节在它上面各占一步。

3. 核心原理:每一步都在修上一步的短板

3.1 第 0 代:什么都靠数次数

列表收进这一节的两样东西是 1999 年和 2023 年的两本教科书23, 不是论文——因为这个方向已经是完成时:方法论定型,剩下的都是应用。

它的方法论一句话能说完:想预测「真」后面接什么,就去海量文章里数, 「真好」出现过多少次、「真差」出现过多少次,按次数定比例。 这个「机会的大小」就叫概率(某件事发生的可能性,用 0 到 1 之间的数表示)。

顺带收了 1997 年(条目里的年份;这篇论文更常见的引用年份是 1977 年—— 补充(不在书里,来自通用知识),没核到原始卷期,取保守写法)那篇论文4, 它提出了困惑度——给语言模型打的第一把尺子:模型对下文越「拿得准」,分数越低。 数次数的时代拿它打分,今天的巨型模型拿它打分,尺子没换过——这是本节唯一活到今天的硬件

这一代的短板也是一句话: 次数要一个一个数,组合却无穷多。 数「真」「真好」行,数到「今天天气真」这种四词组合,表已经大得背不下—— 组合数量的膨胀有个名字叫组合爆炸(每多考虑一个位置,可能的搭配数翻很多倍)。 要跳出查表,就得让机器自己「算」,而不是自己「查」。

3.2 第 1 代:循环网络——把上文压进一个流动的状态

列表在这节收了 1989 到 2015 的五篇论文5,五年不落,排出一条完整的攻关线。

第一步要解决的是「查表」变「算」:让机器读完一个词,把「到目前为止读了什么」 压进一组数里,再带着这组数去读下一个词。这组随读随变的数叫隐状态 (可以想成一份不断被改写的摘要)。按这个方式一环扣一环读下去的网络, 就是循环神经网络(RNN——recurrent neural network 的缩写)5

但这条线马上撞上两个新问题,列表把修这两个问题的论文全收了:

  • 记不住远处的词:读到句尾,句头的信息早被一层层改写冲淡。1997 年的长短时记忆(后来行话叫 LSTM)网络专治这个6

    它给这份摘要装三道门控(可学习的开关,决定保留什么、丢什么、露出什么),要记的锁住,该忘的放走。

  • 训不动:深了以后,「往哪个方向调」的信号(行话叫梯度:按出错程度算出的调参方向)一层层传回来会衰减到没有。2012 年专文分析这个训练难点7,给出截断与初始化上的对策。

再往后两篇是收尾:2014 年实测「门控」的简化版够用8; 2015 年处理一个训练时的怪癖——模型每一步都偷偷看正确答案,考试时却没人给它看, 于是训练时故意偶尔遮住答案让它自己猜9

回头看这一代留下的思想遗产: 「把历史压进一份滚动的摘要」和「用开关控制记与忘」, 两条都活到了今天——今天的模型处理长对话时,本质上还在做同样的事,只是换了实现。 而它换掉的原因也简单:摘要只有一份,读到第 1000 个词时,第 1 个词的信息已经 被改写了 999 次。想要「每个词都能直接回头看任何一个前文」,就得换架构——那是第 2 代的事。

3.3 第 2 代:注意力架构——列表挑的是零件,不是整机

这一节有个容易被漏看的细节:2017 年那篇开山之作(《注意力就是你所需要的一切》) 不在这节里,它被编者挪到下一章的「架构概览」单独供着——本节收的是四篇「零件级」论文10。 这个摆放本身就说明了主编者的判断:开山之作是下一章的主角,这一章关心的是 这台机器体内哪几个零件后来被反复拆修。

  • 归一化(每层先把数值拉回稳定范围再往下传的做法):2016 年把它补进架构的论文11。训练时数值忽大忽小会失稳,每层先「拉平」再传;后来连「那条加法旁路放在哪」都有专文争论。

  • 前馈(前馈层:两层、把每个输入都连到每个输出的小网络,注意力之外每层的另一半):2021 年有论文发现它的行为像一张可查的表,输入某个模式、输出背下来的对应内容——那半张表,行话叫记忆(存下来、能按线索取回的东西),论文标题就叫「前馈层是键值记忆」12记住这篇,第 05 章模型编辑全靠它

  • 残差(把「输入原样」抄一条旁路、直接加到输出上)连接:2023 年的双残差变体13——到 2023 年还在争「两条旁路怎么接」,主流架构的微调从未停止。

走查走到这里:「今天天气真__」在注意力架构里的答案,不再来自一张表或一份被改写 999 次的摘要,而是「真」这个位置直接给前面每个词打分、按分取用信息后算出的一张候选清单。 打分取用这套机制(注意力)的细节,下一章结合开山之作正面讲;这里只需要它在走查里的位置: 它是三代方法里唯一「不需要压缩历史」的一代。

3.4 两翼之一:生成时怎么挑词

模型算出的永远是一张候选清单(「好」58%、「差」22%、「热」9%……这些数是为演示编的, 不是真实数值),每步挑一个接上去,再算下一张。挑法有两篇奠基论文:

  • 2018 年的多样化搜索14:让机器一次生成几条不同的候选句,而不是一条——翻译、摘要至今在用;

  • 2020 年的「神经文本退化」15:发现一个反直觉的事实——每步都挑最高分的那个词, 写长了反而会复读、会崩坏

    解法:按概率从高到低排队,从头上往下凑,凑够一条累计概率线(七成,演示口径) 就停,只在前几名里抽——这个做法后来行话叫 top-p(把候选排队、划线截断再抽)。

    抽的时候带多少随机,由一个叫温度(把整张清单调陡或调平的旋钮:越高越敢挑冷门) 的设定管着。

    今天各家模型文档的参数表里,这个旋钮的名字叫核采样 (nucleus sampling)——说的正是 top-p 这条线。

我们书架里有一份最朴素的采样(每步从清单里抽一个词的)循环的源码级拆解,可以把 「打分、调温度、截断、按概率抽一个」这几步对到代码行(补充(不在书里,依据我们的 frontier 书架):依据: shelf=ai-frontier-reference/nanogpt#04-sampling.md 事实=sample 侧的流程:取最后位置的打分,调温度,按累计线截断,再换算成概率抽一个接上去)。

这一翼的结论值得单独记:挑词策略不是工程细节,它和模型能力各占一半。 同一台模型,挑法不同,可以从「稳」滑到「胡说」。

3.5 两翼之二:训完怎么打分

列表在评测一节收了七篇,恰好排出打分方法自己的三代:

  1. 数重叠:候选答案和标准答案有几个词重合(2004 年的 ROUGE16)。便宜,但「换个说法」就吃亏;

  2. 算语义:拿另一个模型判断两句话意思近不近(BERTScore17);连「数重叠」的尺子本身 都开始被点名批评——2020 年有专文指出参照答案本身质量就参差18;

  3. 请裁判:让一个更强的大模型直接给「答得好不好」打分(2023 年的 G-Eval19、 2024 年的综述与 InstructScore2021)。

我们书架里有一份评测框架的源码拆解,其中「判分策略」一节正好是第三代的工程落地: 先用规则抽答案、抽不动的再让另一个模型判对错(补充(不在书里,依据我们的 frontier 书架): 依据: shelf=ai-frontier-reference/openai-simple-evals#02-grading-strategies.md 事实=判分从规则精确匹配一路到 LLM(大语言模型的缩写)当裁判,自由文本最终交模型判对错,分四级)。

判断(我们的,不是书里的): 第三代有个绕不开的循环——拿模型评模型, 而被评的和当裁判的常常出自同一两家机构。分数会往「裁判偏爱的写法」漂。 用这类分数下结论时,先问一句裁判是谁家的。 如果错,会错在: 如果裁判与被评者训练数据几乎不重叠、且评分标准公开可复现, 这个循环担忧就不成立——判据是换一家裁判,排序翻不翻。

4. 编者的判断与证据

这份列表没有「作者观点」可引——全文没有一句论述。能当证据看的是三处取舍:

  • 统计一线只收两本教材,其中一本 2023 年还在出第 3 版3——说明这条路没有死, 只是变成了背景课;
  • 循环一线收到 2015 年为止,五篇正好覆盖「能训练→记得住→训得稳→够用→修正训练法」 五关;此后再无一篇——换代完成的信号;
  • 注意力一线收的全是 2021 年之后的零件研究,没有一篇 2017–2020 年的整机论文—— 整机演进整体让位给下一章,这一章只负责「把机器拆开看」的那条线。

三处都是「证据」,不是「推测」:它们是白纸黑字的条目排布;把排布读成编者意图的, 是我们,已在上面的判断块里声明过。

5. 边界与局限

局限说明
没有介绍文字每篇只有题名与出处,不看原论文就不知道它讲了什么——这正是我们这份拆解存在的原因
个别条目年份可疑「困惑度」那条标 1997,常见引用是 1977;本书是清单不是考据,没有校勘
采样一节偏薄只有 2 篇,温度、束搜索的工程取舍要去看实现(比如上面 nanogpt 那条锚)
时间截点 2024 年中之后出现的超长输入采样玩法、多条思路同时比拼的采样新招不在列表里

6. 可带走的

  1. 这门技术的换代逻辑一句话:查表 → 压缩历史 → 不压缩历史;每步都是被上一步的短板逼出来的;
  2. 「把上文压进一份滚动摘要」和「用开关控制记忘」是循环网络的两大遗产,今天仍在用;
  3. 今天的模型内部,注意力和前馈层各占一半;前馈层的行为像一张可查的表——这是后面模型编辑的地基;
  4. 每步都挑最高分的词,写长了反而复读崩坏;随机挑词是设计,不是毛病;
  5. top-p 是「按累计概率截断再抽」的挑词法,各家模型文档的参数表里见到它,指的就是 2020 年那篇论文;
  6. 评测方法自己也换了三代:数重叠 → 算语义 → 请大模型当裁判;
  7. 拿模型评模型时,先问裁判是谁家的——分数会向裁判的口味漂;
  8. 读论文列表先看排序和年份截点:它们就是编者没写出来的那部分评论。

7. 原文地图

主题原书节原文位置
统计教材两本基于统计方法的语言模型text/01-full.txt:53(搜「Foundations of statistical」) · text/01-full.txt:55(搜「Speech and Language Processing」)
困惑度语言模型的评测text/01-full.txt:110(搜「Difficulty of Speech Recognition」)
循环一线五篇基于 RNN 的语言模型text/01-full.txt:62(搜「continually running fully recurrent」) · text/01-full.txt:65(搜「Long Short-Term Memory」) · text/01-full.txt:68(搜「difficulty of training Recurrent」) · text/01-full.txt:71(搜「Gated Recurrent Neural Networks」) · text/01-full.txt:74(搜「Scheduled Sampling」)
注意力零件四篇基于 Transformer 的语言模型text/01-full.txt:81(搜「Layer Normalization」) · text/01-full.txt:84(搜「Exploring the Limits of Transfer Learning」) · text/01-full.txt:87(搜「Key-Value Memories」) · text/01-full.txt:90(搜「ResiDual」)
采样两篇语言模型的采样方法text/01-full.txt:98(搜「Diverse Beam Search」) · text/01-full.txt:101(搜「Neural Text Degeneration」)
评测七篇语言模型的评测text/01-full.txt:113(搜「ROUGE」) · text/01-full.txt:119(搜「BERTScore」) · text/01-full.txt:125(搜「G-Eval」) · text/01-full.txt:128(搜「INSTRUCTSCORE」)

Footnotes

  1. 出处:「基于统计方法的语言模型」第 53 段(text/01-full.txt:53,搜「Foundations of statistical」)。全书所有条目都是同一格式:题名 + 刊物缩写 + 作者 + 链接 + 年份,无一例外。

  2. 出处:「基于统计方法的语言模型」第 53 段(text/01-full.txt:53,搜「Foundations of statistical」)。Manning 与 Schütze 的《统计自然语言处理基础》,1999 年。

  3. 出处:「基于统计方法的语言模型」第 55 段(text/01-full.txt:55,搜「Speech and Language Processing」)。Jurafsky 与 Martin 的教科书,条目标注的是第三版(2023)。 2

  4. 出处:「语言模型的评测」第 110 段(text/01-full.txt:110,搜「Difficulty of Speech Recognition」)。Jelinek 等人的困惑度论文,列表标注年份为 1997。

  5. 出处:「基于 RNN 的语言模型」第 62 段(text/01-full.txt:62,搜「continually running fully recurrent」)与第 65 段(text/01-full.txt:65,搜「Long Short-Term Memory」)。第一篇是 1989 年的实时循环学习算法,第二篇就是后来无处不在的长短时记忆网络。 2

  6. 出处:「基于 RNN 的语言模型」第 65 段(text/01-full.txt:65,搜「Long Short-Term Memory」)。「三道门」是后世对其结构的通称(输入门、遗忘门、输出门),原文标题里没有这个词。

  7. 出处:「基于 RNN 的语言模型」第 68 段(text/01-full.txt:68,搜「difficulty of training Recurrent」)。

  8. 出处:「基于 RNN 的语言模型」第 71 段(text/01-full.txt:71,搜「Gated Recurrent Neural Networks」)。这篇实测的简化版就是常说的 GRU。

  9. 出处:「基于 RNN 的语言模型」第 74 段(text/01-full.txt:74,搜「Scheduled Sampling」)。

  10. 出处:「基于 Transformer 的语言模型」第 81 段(text/01-full.txt:81,搜「Layer Normalization」)。开山之作《Attention is all you need》确在本列表中,但在下一节「大语言模型架构概览」(text/01-full.txt:155,搜「Attention is all you need」)。

  11. 出处:「基于 Transformer 的语言模型」第 81 段(text/01-full.txt:81,搜「Layer Normalization」)。

  12. 出处:「基于 Transformer 的语言模型」第 87 段(text/01-full.txt:87,搜「Key-Value Memories」)。同一篇在「模型编辑经典方法」一节再次出现(text/01-full.txt:740,搜「Key-Value Memories」)——跨节重复收录,是编者标出的伏笔。

  13. 出处:「基于 Transformer 的语言模型」第 90 段(text/01-full.txt:90,搜「ResiDual」)。

  14. 出处:「语言模型的采样方法」第 98 段(text/01-full.txt:98,搜「Diverse Beam Search」)。

  15. 出处:「语言模型的采样方法」第 101 段(text/01-full.txt:101,搜「Neural Text Degeneration」)。top-p 这个名字在原论文里叫 nucleus sampling(核采样),列表条目里不出现这个词,这里按今天接口里的通用名写出。

  16. 出处:「语言模型的评测」第 113 段(text/01-full.txt:113,搜「ROUGE」)。

  17. 出处:「语言模型的评测」第 119 段(text/01-full.txt:119,搜「BERTScore」)。

  18. 出处:「语言模型的评测」第 116 段(text/01-full.txt:116,搜「BLEU might be Guilty」)。这篇的论点拆开是两半:BLEU 有罪,但参照答案也不无辜。

  19. 出处:「语言模型的评测」第 125 段(text/01-full.txt:125,搜「G-Eval」)。

  20. 出处:「语言模型的评测」第 122 段(text/01-full.txt:122,搜「NLG Evaluation」)。

  21. 出处:「语言模型的评测」第 128 段(text/01-full.txt:128,搜「INSTRUCTSCORE」)。