

我们每天都在与大型语言模型交互,观察它们逐字生成回应。这里有一个核心问题,就是在任意时刻,当模型已经生成了 "一只猫坐在" 之后,它是如何从数万个可能的词元(如 "垫子", "椅子", "地板")中选择出下一个词元的?这个选择的动作,就是本文的主题:输出采样(Sampling)。模型的这种概率性,既是其创造力的源泉,也是其不可靠性(幻觉)的根源。
本文将深入探究从模型内部计算到最终词元选择的完整流程,从经典的确定性策略,到构成现代 LLM 基石的随机采样策略。
要理解所有采样策略,首先必须理解它们共同的输入,也就是覆盖全词汇表的最终概率分布,是如何在 Transformer 内部诞生的,这个过程可被拆解为一条四步流水线。
首先,解码器接收所有已经生成的词元序列作为输入,在自注意力层中,模型会为序列中的每一个词元创建三个关键向量:Query (Q),Key (K) 和 Value (V) 。
通过 Q 和 K 向量的点积计算注意力分数(Attention Scores),这决定了序列中每个词元对其他词元的关注度。这个分数经过 SoftMax 归一化后,再去加权 V 向量,最终这个过程会为序列中的每一个词元,都生成一个上下文感知的输出向量,即 隐藏状态 (Hidden State) 。
自注意力步骤完成后,模型会得到一个(序列长度 x 隐藏层维度)的矩阵,其中每一行都代表一个词元在该上下文中的最终表示。为了预测下一个(第 N+1 个)词元,模型只需要第 N 个词元(即序列的最后一个词元)的隐藏状态。这是因为在解码器中,自注意力机制(通过 Causal Masking)确保了第 N 个词元的隐藏状态,已经吸收并混合了从第 1 个到第 N-1 个词元的所有上下文信息。无论序列多长,所有用于预测未来的信息都必须流经这个固定大小(例如 1x4096)的向量。这就意味着整个历史序列的语义,都被凝练到了这一个向量中。
我们现在有了一个处于 抽象语义空间 的向量(例如,维度为 4096),但我们需要的是在“具体词汇表空间”的得分(例如词汇表大小为 50,000);这时 LM Head 登场了,LM Head 本质上只是一个线性层(一个巨大的矩阵)。这个线性层通过一次矩阵乘法,将这个 4096 维的隐藏状态向量,映射到一个 50,000 维的向量上。这个新向量的每一个维度,都对应词汇表中的一个特定词元。
这个新生成的、维度等于词汇表大小的向量,就是 Logits。Logits 是模型对每个词元作为“下一个词”的原始、未归一化的分数。分数可正可负,总和不为,因此还不是概率。为了得到一个合法的概率分布,SoftMax 函数登场,它执行两个关键操作:
Logits 向量中的每一个分数取指数(),使得所有分数都变为正数,并且极大地放大了高分(最可能)和低分(不可能)之间的差距。最终的输出是一个维度等于词汇表大小的概率分布,向量中的每个值都在 0 和 1 之间,且所有值的总和恰好为 1,这个概率分布,是后续所有采样策略的唯一输入。
有了概率分布,模型该如何选择?最直观的策略是确定性(Deterministic)策略,即总是试图选出最好的。
贪心搜索是最简单的策略。在每一步,它都选择当前概率分布中概率最高的那个词元。其决策依据是 。
下面是一个示例:

贪心搜索的“短视”在于,一个当前最优的选择(如 "nice" 0.5)可能会导向一个后续很差的路径。Beam Search 试图通过在每一步保留 (即 beam width,束宽)个最可能的序列来缓解这个问题。下面是一个 的 Step-by-Step 示例:

Beam Search 的发明是为了解决贪心搜索的“短视”问题。它也确实成功地找到了概率更高的序列 ("The dog has" > "The nice woman");然而,这种对最高概率的极致追求,恰恰是其最大的短板。
Beam Search 的目标是最大化序列的联合概率,但在论文 《The Curious Case of Neural Text Degeneration》 中作者提到,在开放式文本生成中,最大化是一个错误的目标,模型(尤其是训练不完美的模型)倾向于给那些乏味、通用、甚至陷入循环的文本赋予极高的概率。
这导致了两个核心问题:
Degeneration 论文的核心发现是:人类书写的文本(Natural Language)的平均概率,反而低于 Beam Search 生成的文本。人类倾向于避免“显而易见”的高概率词,因为信息量低,从而选择信息量更高、但概率稍低的词。Beam Search 这种最大化策略,算是直接惩罚了这种人类特有的创造性。
确定性策略的弊端告诉我们:要生成“像人”的文本,我们不能总是选“最好”的,而要开始随机地选合理的。
为了解决“文本退化”问题,业界引入了“随机采样”(Stochastic Sampling)。其核心思想是,不再总是选择最优的,而是根据概率分布,随机地选择一个“合理”的答案。
温度采样 (Temperature, T) 是一个超参数,它在 Softmax 之前,通过缩放 Logits 来重塑最终的概率分布 。其修改后的 Softmax 公式为:
假设在词汇表中,两个词元的 Logits 为 [1.0, 3.0] 。
Logits 不变:[1.0, 3.0][0.12, 0.88] (模型非常自信地选择 B)Scaled Logits:[1.0/0.5, 3.0/0.5] = [2.0, 6.0] (高分和低分的差距被拉大)[0.02, 0.98] (模型更加自信,分布更“尖锐”,结果更接近 Greedy Search)Scaled Logits:[1.0/2.0, 3.0/2.0] = [0.5, 1.5] (高分和低分的差距被缩小)[0.27, 0.73] (分布更“平坦”,A 被选中的机会显著增加,从而增加了“随机性”和“创造性”)总结: 使模型更保守、更自信; 使模型更大胆、更多样。 等价于 Greedy Search。
Top-K 采样不改变概率形状,而是改变候选集。
核心问题: K 值是固定的,无法自适应。
Top-P 采样(又称 Nucleus Sampling,核采样)正是为了解决 Top-K 的上述问题而设计的,它也源自 《The Curious Case of Neural Text Degeneration 》这篇论文。
Top-P 使用一个动态的候选集,其算法如下:
数值示例: 假设 P=0.8,词元概率如下:
{"the": 0.5, "a": 0.2, "cat": 0.1, "dog": 0.1, "eats": 0.1}{"the", "a", "cat"}。{"dog", "eats"}。为何 Top-P 优于 Top-K: 它的候选集大小是动态的。
{"Paris"}。候选集大小自动缩小到 1。Top-P 成功地“截断”了模型概率分布中那个“不可靠的长尾”(unreliable tail),只在模型真正自信的、占绝大多数概率的“核”中进行采样。
策略 | 核心思想 | 优势 | 主要缺陷 |
|---|---|---|---|
Greedy Search | 始终选择 P(max) | 速度最快,完全确定 | “短视” ,极易产生重复和“退化”文本 |
Beam Search | 保留 K 个 P(max) 序列 | 比 Greedy 更优,能找到概率更高的序列 | 依然是确定性 ,“最大化”目标错误 ,导致重复循环 |
Temperature | 缩放 Logits (T) | 控制“创造力” ,T>1 增加多样性,T<1 增加确定性 | T 过高则语无伦次;它重塑分布,但不截断长尾 |
Top-K | 固定 K 个候选集 | 简单、有效,截断了“垃圾长尾” | K 值“一刀切”,无法适应分布的“胖瘦” |
Top-P (Nucleus) | 动态 P 值“概率核” | 自适应候选集大小 ,完美解决 K 的问题,截断“不可靠长尾” | 原理稍复杂 |
在实际应用中,Temperature, Top-K, Top-P 经常被组合使用.
当 T, K, P 同时使用时
Logits 除以T。Softmax,得到“调整后”的概率分布。Top-K 个词元(例如 K=100)。Top-P 进一步筛选(例如 P=0.9),得到最终的“核”。这个执行顺序并非随意,而是一个优化的过滤级联(filtering cascade); 先用 Top-K(例如 K=100)进行“粗筛”,再用 Top-P(P=0.9)进行“精筛”。这使得 Top-P 的排序和累加计算不需要在整个 50K 的词汇表上执行,而只需要在 K=100 的小集合上执行,这在计算上是极大的优化。
这些参数的组合空间巨大,且它们的效果高度依赖于模型本身和特定任务。
T 和 P 都在试图控制“多样性/确定性”这个主轴。对于大多数简单应用,同时调整两者会使结果难以预测。T (e.g., 0.8-1.0) 或高 P (e.g., 0.95-0.99)。事实任务(如 Q&A)用低 T (e.g., 0.2) 或低 P (e.g., 0.1) 。T 设为 0 (或极低),或者 K=1,或者 P=0 (或极低),都等同于(或近似于)Greedy Search 。LLM 推理的“高延迟”,调优这些参数不会解决这个根本的延迟问题。本文从 Transformer 解码器内部(Q/K/V)出发,跟踪了数据(隐藏状态)如何流经 LM Head 变成 Logits,再通过 Softmax 成为概率分布。我们分析了经典策略(Greedy, Beam)为何失败,因为它们追求的“最大概率”目标本身就是导致“文本退化”的根源。
当前 LLM 的流畅性和创造力,来源于随机采样策略(Temperature, Top-K, Top-P)。这些策略,特别是 Top-P (Nucleus) ,通过巧妙地截断和重塑概率分布,迫使模型在“合理”的候选集(Nucleus)中进行随机选择,从而避免了重复循环,注入了必要的多样性。
LLM 的输出采样,是一场在“确定性”与“随机性”之间的精妙平衡。没有标准答案,只有面向特定任务的“最优调优”。而我们今天讨论的所有策略,都还只是在解决“如何选词”;而“如何更快地选词”,则是留给“推测解码”(Speculative Decoding)等下一代技术的新命题。