自回归生成是大模型写出文本的基本方式:模型并不先想好一整篇文章再一次性输出,而是一次只预测下一个词,把这个词接回输入,再预测再下一个词,如此循环,直到遇到停止标记或达到长度上限。你在聊天框里看到文字逐字冒出来,背后就是这个循环在不停运转。
它到底在预测什么
严格地说,模型预测的单位通常不是汉字或英文单词,而是词元。词元是模型切分文本后得到的最小处理单元,一个汉字可能是一个词元,一个英文单词也可能被切成几个词元。模型读完提示词和已经写出的内容后,会给词表里的每个候选词元打一个概率分数,分数高的更可能被选中。
这里的关键是“概率”两个字。模型并不是从某个资料库里查到标准答案,而是根据训练中学到的语言规律,估计在当前语境下哪个词元最合理。语法、搭配习惯、行文结构,都是它打分的依据。同一个开头,换一个语境,概率分布就会完全不同,这也是同一模型对同一问题有时给出不同回答的原因之一。
一步步写出来的完整循环
一次完整的自回归生成可以拆成四步。第一步,模型把提示词和已生成的内容一起作为输入;第二步,根据这段输入算出下一个词元的概率分布;第三步,按解码规则挑出一个词元;第四步,把这个词元追加到已有内容后面,再回到第一步。循环往复,文本就一段段长出来了。
停止同样有规则。最常见的是模型输出专门的结束词元,相当于自己说“写完了”;另外就是达到预设的最大长度,系统强制截断。理解这一点很有用:回答突然断在半句,往往不是模型“没想好”,而是长度上限到了;回答迟迟不收尾,则可能是结束词元迟迟没有获得足够高的概率。
为什么一次一个词,还能写出长文
只看一步,模型确实目光短浅:它只负责选好下一个词。但每一步的输入都包含之前写过的所有内容,所以局部选择会累积成整体结构。开头定了语气和主题,后面的词就会顺着这个方向走;列出第一点后,第二点往往会沿用同样的句式和层次。长文的连贯,很大程度上是这种“前文约束后文”的累积效果。
工程上还有一个帮手:KV 缓存。模型在生成新词时不需要把前文从头算一遍,而是把前面算好的键值结果缓存下来复用,只算新增的部分。这让逐词生成在速度上变得可行,也是长对话能够持续进行的技术基础之一。不过缓存解决的是算得快不快,不是写得对不对,前文一旦出现错误,后面的生成仍然会建立在这个错误之上。
和相近概念的区别
自回归生成最容易和三个概念混淆,先把边界划清楚。
| 概念 | 做法 | 关键区别 | | 自回归生成 | 逐词预测、逐词接续 | 每一步都依赖前面已生成的内容 | | 并行生成 | 一次输出多个位置的内容 | 不依赖逐步接续,常见于某些图像或语音模型,文本大模型主流并不用它 | | 检索增强生成 | 先查资料再组织答案 | 资料来自外部知识库,生成方式本身仍多是自回归 | | 模板填充 | 按固定格式填空 | 内容结构事先定死,模型只负责填空,不自由组织语言 |
这个表格也说明一件事:用了检索,不代表生成方式变了。很多带联网搜索的聊天产品,查到资料后仍然是一个词一个词地把答案写出来,资料只改变了概率分布的依据,并没有改变逐词生成的本质。
解码策略怎么改变结果
概率分布算出来之后,具体挑哪个词,由解码策略决定,不同策略会让同一模型写出风格迥异的文本。
贪心解码每次都挑概率最高的词,输出最稳、最可预测,适合写代码、填表格、做格式固定的回答;缺点是容易陷入重复,写出来的东西比较平。束搜索同时保留几条最有希望的候选路径,最后选整体概率最高的一条,翻译和摘要里常见,句子更顺,但计算量更大。采样则按概率随机挑词,允许小概率词偶尔胜出,写故事、想点子时更有变化,但也更容易跑题和编造。
温度和 top-p 是调节采样的两个旋钮。温度低,概率分布被拉得更陡,高概率词优势更大,输出更保守;温度高,分布变平缓,冷门词更有机会,输出更发散。top-p 则是只在累积概率达到阈值的热门词里挑,砍掉长尾冷门词。调这两个参数,本质上是在“稳”和“新”之间找平衡,而不是让模型变聪明或变笨。
几个常见误解
第一个误解,是以为模型动笔前已经想好了全文。它没有全文规划,只有下一步的概率。文章结构感来自训练中学到的行文模式和前文的约束,而不是一份事先写好的提纲。长文写到后面跑题,往往就是因为中途某一步选了不太合适的词,后面一步步被带偏了。
第二个误解,是把概率高当成事实正确。模型擅长的是“这句话像不像人会说的话”,而不是“这句话是不是真的”。一句流畅、自信、细节具体的回答,概率可以很高,事实却可能是编造的。核对事实要靠外部来源,不能靠语气判断。
第三个误解,是以为流式输出就等于边写边改。实际上已经输出的词无法收回,模型只能在后面的词里设法圆回来,改不了前面的错误。这也是为什么长回答里一旦出现关键事实错误,后面常常越描越黑:它不是在修正,而是在给错误找一个自洽的续写。
第四个误解,是把随机性当成创造力。采样带来的变化只是概率上的起伏,并不代表模型有了新想法。想要真正有价值的变化,关键在提示词给出的方向、约束和素材,而不是一味调高温度。
适合场景和限制
自回归生成最适合的,是对形式灵活、允许修改的任务:写初稿、换表达、列思路、补全代码、模拟对话。这些任务里,逐词生成的流畅和多样是优势,个别词不准,改一改就能用。它也适合交互场景,因为逐词输出可以边算边展示,用户不用等全文算完才看到开头。
它的限制同样来自逐词本身。第一,误差会累积,前面的偏差会被后面的步骤当成前提;第二,长文容易漂移,写得越长,离最初主题越远的风险越大;第三,它没有全局检查环节,写完不会自动回头通读全文、核对事实、修正逻辑。实际使用时,比较稳妥的做法是:让模型负责出初稿和给思路,把事实核对、关键数字、最终定稿留给人;长任务拆成几段写,每段写完先确认方向再继续;对准确性要求高的内容,用检索到的资料约束它,而不是只凭它的语感。
搞懂自回归生成,等于搞懂了大模型输出方式的底座。之后再看温度、采样、流式输出、长文跑题这些现象,都会更容易定位原因:它们大多不是某个神秘功能在起作用,而是“一次预测一个词,再把结果接回去”这个简单循环,在不同设置和场景下的表现。