序列模型与Transformer

自回归解码(autoregressive decoding)

/ aw-toh-ree-GRES-iv dee-KOH-ding /

自回归解码,是大多数语言模型实际写字的方式:一次一个词元,每个新词元都基于迄今写下的一切来挑选,包括模型自己之前的输出。「自—回归」不过是说模型在自己身上做回归——它把自己的输出回喂进去,当作下一步的输入。这恰如逐字逐词地遣词造句,你每挑一个词,就把接下来合情合理能出现的东西收窄、塑形了一分。

这个循环是机械的。模型看着提示词加上它已生成的部分,产出一个关于下一个可能词元的概率分布,挑出一个(贪心地,或带些随机性地采样),把它接上去,再重复——直到它吐出一个特殊的停止词元,或撞上长度上限。这正是聊天机器人从左到右流式回复的原因,也是 KV 缓存存在的原因:每一步都需要所有先前词元的键与值,把它们缓存起来,才让这个循环保持快速。

由此引出两条诚实的后果。其一,生成本质上是顺序的:第一百个词元在第九十九个存在之前无法产出,所以这种一步接一步的本性,是大模型令人觉得慢的根本原因之一,也是为何那么多心血都花在给它提速上。其二,更要紧的是,模型永远只在预测一个貌似合理的下一个词元——它对整个答案没有计划,对真相也没有核对。一个靠前的错误词元,就能把回复的其余部分自信地带上一条歧路,这正是流畅的模型为何能如此顺滑地说出假话的一个根源。「听上去对」与「确实对」,是由同一套机制产出的。

给定「法国的首都是」,模型给「巴黎」很高的概率并选中它,接着面对「法国的首都是巴黎」,它多半选一个句号并停下。但若某个靠前的词元跑了偏,模型会一本正经地把那个错误的开头继续延展成一段流畅而自信的假话。

一个词元喂出下一个——而一个靠前的错步,鲜少自我纠正。

自回归模型预测的是下一个貌似合理的词元,而非真相,且在动笔前对整个答案没有计划。这一条事实同时解释了:它们为何能在听上去无比流畅的同时出错,以及它们为何慢——每个词元都得等它前面那个。

又称
autoregressive generationnext-token prediction自回归解码自迴歸解碼自回归生成