下一个 Token 预测
开篇问题
如果有人告诉你,大语言模型最基础的任务只是“预测下一个 token”,你可能会觉得这太简单了。
预测下一个词,为什么能写代码?为什么能总结文档?为什么能解释概念?为什么还能在某些问题上表现出推理能力?
这个疑问非常重要。理解“下一个 token 预测”,就等于抓住了语言模型能力形成的主线。
本章你会理解什么
读完本章,你应该能够理解:
- token 是语言模型处理文本的基本单位。
- 下一个 token 预测为什么是训练语言模型的核心任务。
- 概率分布、采样和输出多样性之间的关系。
- 为什么简单训练目标可以产生复杂行为。
- 为什么模型会生成看似流畅但不一定正确的内容。
核心概念
语言模型的基本输入是一段上下文,输出是“下一个 token 的概率分布”。
假设上下文是:
模型不会只给出一个唯一答案。它会给许多可能的下一个 token 分配概率,例如:
具体系统会根据这些概率选择一个 token。选出的 token 被追加到上下文里,模型再预测下一个 token。重复这个过程,就形成了完整输出。
所以模型生成答案不是一次性完成的,而是一个循环:
- 读取当前上下文。
- 计算下一个 token 的概率。
- 选择一个 token。
- 把它放回上下文。
- 继续下一步。
机制拆解
1. 什么是 token
token 可以粗略理解为模型眼中的文本片段。它可能是一个汉字、一个词的一部分、一个英文单词、一个标点,也可能是一段常见代码片段。
例如下面的文本:
在模型内部不会被当作一个完整字符串处理,而会先被 tokenizer 切成若干 token,再映射为数字 ID。
开发者可以把 token 暂时理解成“模型版的字符编码单元”。它不像 UTF-8 字节那样固定,也不像自然语言词语那样完全符合人的直觉。它是模型词表中的离散单位。
2. 训练目标非常直接
给定一段训练文本,模型可以从中构造大量训练样本。
例如:
可以变成多次预测任务:
训练时,如果模型预测错了,就根据误差调整参数。这个过程重复很多次以后,模型会越来越擅长在不同上下文中判断“接下来应该出现什么”。
重要的是,这个训练目标不需要人工为每句话标注答案。普通文本天然就包含“前文”和“后文”。这让大规模训练成为可能。
3. 概率分布不是单一答案
模型每一步输出的是概率分布,而不是确定答案。
例如上下文是:
后面可以是“咖啡”,也可以是“牛奶”,还可以是“水”。这些选项都合理,只是概率不同。
在技术实现中,系统会根据采样策略决定选哪个 token。更保守的策略倾向于选择高概率 token,输出会更稳定;更开放的策略允许低概率 token 被选中,输出会更有变化,但也更容易偏离。
这就是为什么语言模型既能写出自然、不死板的内容,也会带来不可预测性。
4. 复杂能力来自长上下文中的条件生成
“预测下一个 token”听起来很局部,但上下文可以很长。
如果上下文里包含:
- 一个问题。
- 一段代码。
- 一个错误信息。
- 已经生成的分析步骤。
- 某种输出格式。
那么下一个 token 的预测就不再只是语法补全,而是在这些条件共同约束下继续生成。
例如上下文是:
模型预测下一个 token 时,需要综合 TypeScript 类型系统、报错句式、解释文体和用户意图。每一步仍然是预测下一个 token,但连续很多步之后,就形成了像“解释问题并给出修复建议”的行为。
5. 生成会受到前文影响
模型已经生成的内容会进入新的上下文。因此,如果模型前面走向了一个错误假设,后面往往会沿着这个假设继续写。
例如它先生成了“这个错误来自运行时”,后面就可能继续解释运行时异常,而不是回到类型系统。语言模型的连续性让输出更像一篇完整文章,但也会放大早期错误。
这也是为什么理解模型的生成过程很重要:它不是先在内部完成一个完美答案再输出,而是在逐步生成中不断承接已有内容。
开发者常见误解
误解一:预测下一个 token 太简单,不可能产生智能行为
单步任务确实简单,但训练数据规模、模型容量和上下文长度会让它变得非常强。
很多复杂任务都可以表示成“在特定上下文中生成合适的后续文本”。问答、翻译、代码补全、摘要和格式转换,表面不同,底层都可以被写成条件生成问题。
误解二:模型每次都选择概率最高的 token
不一定。实际生成通常会使用采样策略。总是选择最高概率 token 会让输出更确定,但可能变得机械、重复,甚至在某些场景下陷入固定模式。
允许一定随机性,可以让模型产生更自然的表达和更多候选方案。
误解三:流畅输出代表模型知道事实
流畅只说明当前 token 序列在语言上连贯,不能保证事实正确。
模型可能学到了“某类问题通常应该这样回答”的表达模式,但如果缺少可靠上下文或训练中存在过时信息,它仍然可能生成错误内容。
误解四:模型先想好完整答案再逐字打印
从外部看,模型像是在打字。但机制上,它是在逐步预测和追加 token。前面的输出会改变后面的预测条件。
这解释了为什么模型有时会中途改变语气、补救前文,或者在长回答里逐渐偏离原问题。
小实验/思考实验
请手动完成下面的补全游戏。
上下文 A:
你可能会补出:
上下文 B:
你可能会补出:
上下文 C:
你可能会补出:
同样是“用户点击提交按钮后”,不同上下文会改变你对下一个词的判断。语言模型做的也是类似事情,只是它在更大的参数空间里计算概率,并且用 token 而不是自然词语作为基本单位。
再思考一个问题:如果上下文只给“用户点击”,你能确定后面是什么吗?上下文越少,合理延续越多,不确定性越高。
本章小结
下一个 token 预测是语言模型最核心的训练目标。模型读取上下文,计算下一个 token 的概率分布,选择 token,再把它追加回上下文,循环生成完整输出。
这个目标看似简单,却可以在大量数据、足够模型容量和长上下文条件下形成复杂能力。问答、写作、代码、翻译和总结,都可以被理解为特定上下文下的连续 token 生成。
但同一个机制也带来限制:模型追求的是“在当前上下文中合理地继续写”,而不是天然保证事实正确、逻辑完备或执行可用。
自测题
- token 和字符、单词有什么区别?
- 为什么普通文本可以直接构造“预测下一个 token”的训练样本?
- 模型每一步输出的为什么是概率分布,而不是唯一答案?
- 采样策略为什么会影响输出稳定性和多样性?
- 为什么流畅的回答不一定代表事实正确?