P6-1.3 生成是候选分布与选择的反复¶
Section ID:
P6-1.3Version:v2026.07.26
Part 5 中看到的生成模型核心感觉,是 制造候选,并从中选择一个 这条流程。LLM 也不会一次性取出完成句子。它会在当前上下文中制造下一候选,把选中的片段再接回上下文,然后重新制造下一候选。
先看下一候选,而不是完成句子¶
用户通常看到的是完成后的回答。因此,很容易感觉 LLM 是从某个地方找来了已经存好的句子。可是要理解生成过程,就必须先暂时放下完成回答,先看 在当前上下文中,接下来可能出现什么。
例如,在 退款政策是 这个上下文后面,可以出现多个候选。购买、商品、客户、收据 这样的候选都说得通,但并不是同样自然。模型会给这些候选附上相对分数,并按照选择规则选出实际的下一个片段。这个片段接上去后,上下文会改变;在改变后的上下文中,下一候选分数也会再次改变。
这里的 候选分布(distribution) 是指候选不是以相同可能性摆在一起。有些候选强,有些候选弱。生成不是看一次这个分布就结束,而是在把选中的片段接回上下文后,再次制造新分布的反复过程。
小型候选选择表¶
把制造候选并选择一个的单次场景缩小来看,可以如下所示。
| 当前上下文 | 候选与相对分数 | 选择方式 | 选择结果 |
|---|---|---|---|
退款政策是 | 购买 0.46, 商品 0.21, 收据 0.18, 客户 0.15 | 选择最高分 | 购买 |
退款政策是购买 | 后 0.38, 日期 0.24, 记录 0.20, 取消 0.18 | 不总是只选第一名,而是从候选中选择一个 | 后 |
退款政策是购买后 | 14天 0.44, 7天 0.33, 30天 0.23 | 优先稳定性的选择 | 14天 |
这张表不是实际 LLM 的内部实现。数字只是为了展示候选之间的强弱。把 0.46 只读成 购买 比其他候选更自然就足够了。这里需要学习的是:生成不是 取出完成答案,而是 候选分布与选择反复进行的流程。有了这个感觉,后面出现的 token、next-token prediction、temperature、sampling 才会成为阅读生成过程的工具,而不只是设置值。
选择结果会成为下一次计算的输入。因此,前面选择了什么,会改变后面的候选。
| 前面选中的片段 | 新上下文 | 会变强的下一候选 | 会变弱的候选 |
|---|---|---|---|
购买 | 退款政策是购买 | 后, 日期, 取消 | 客户, 咨询 |
客户 | 退款政策是客户 | 咨询, 中心, 客服 | 7天, 14天 |
即使起始句子相同,只要一次选择不同,下一候选的方向就会改变。因此,生成不能读成查找固定句子的检索,而要读成不断更新当前上下文、重新计算下一候选的过程。
flowchart LR
A["当前上下文"]
B["下一候选分数"]
C["选择"]
D["把选中的片段接回上下文"]
A --> B
B --> C
C --> D
D --> A
案例与示例¶
用户请求只要稍微改变,候选分布也会改变。
| 用户请求 | 当前上下文 | 会变强的候选 | 会变弱的候选 |
|---|---|---|---|
请写一段简短道歉文 | 给您带来不便 | 我们深表歉意, 向您致歉 | 因此, 如果计算 |
请说明退款条件 | 退款是在购买后 | 7天, 14天, 工作日 | 谢谢, 附件 |
请用 Python 代码计算 | total = | price, sum, amount | 您好, 政策是 |
这张表不是展示模型实际使用分数的资料。读者要抓住的是 上下文会改变候选 这层关系。即使是同一个 LLM,只要请求、前面选中的 token、提供的文档、系统指示改变,下一候选的强弱也会改变。
直接应用一下¶
请比较下面两个起始句子。
| 起始上下文 | 预测下一候选 | 检查说明 |
|---|---|---|
配送延迟的原因是 | 暴雪, 物流, 库存, 清关 等说明候选 | 说明原因的名词容易变强。 |
关于配送延迟,请向客户 | 道歉, 说明, 告知, 传达 等行动候选 | 容易变成客户回应句子的候选会变强。 |
两个上下文都在谈配送延迟,但接下来需要的话语角色不同。第一个上下文会接向原因说明,第二个上下文会接向客户回应行动。像这样,上下文改变时,候选分布会改变;候选分布改变时,实际生成结果也会改变。
练习与示例¶
请比较下面两个上下文中,下一候选会怎样不同。
| 当前上下文 | 可能变强的候选 | 理由 |
|---|---|---|
如果总结会议记录, | 决定, 待办事项, 争议点 | 摘要文中接上核心项目的可能性大。 |
如果翻译会议记录, | The, Meeting, Summary | 翻译请求中,接上另一种语言的开头表达的可能性大。 |
两个句子的前半部分相似,但 总结 和 翻译 会制造不同的下一候选分布。Part 6 中说的上下文(context),不是单纯放在前面的文字串,而是会改变下一候选分数的条件。
如果问文本生成中的候选是以什么单位制造的,答案就是 token。所以 token 不是 Part 6 的起点,而是在先抓住生成式 AI 产出物和 LLM 候选选择流程之后才出现的计算单位。
检查清单¶
- 能把生成说明为候选分布与选择的反复。
- 能说明为什么
一次性取出完成句子这种理解是不够的。 - 能说明 token 为什么会作为候选计算的基本单位出现。