确定性的解码方法(贪心和束搜索)无法生成多样化的输出。采样策略通过引入随机性来解决这个问题——从概率分布中随机抽取下一个词元,而非总是选择概率最高的那个。
温度(Temperature)$T$ 通过在 Softmax 前对 logits 进行缩放来控制分布的“锐度”:
P(xi)=exp(zi/T)∑jexp(zj/T)P(x_i) = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)}P(xi)=∑jexp(zj/T)exp(zi/T)
$T < 1$:分布变得更尖锐,高概率词元更突出,输出更确定、聚焦
$T = 1$:保持原始分布
$T > 1$:分布变得更均匀,低概率词元获得更多机会,输出更多样、随机
直觉上,温度控制的是模型的“创造力”:低温度适合事实性问答(需要精确),高温度适合创意写作(需要新颖)。
Top-k 采样将采样范围限制在概率最高的 $k$ 个词元中,其余词元的概率被置零后重新归一化。
这解决了从完整分布中采样可能选中极低概率词元(导致“胡说八道”)的问题。常用 $k = 50$。
Top-k 的局限在于 $k$ 是固定的。有些位置可能只有 2-3 个合理选择(如“中华人民____”后只能接“共和国”),固定的 $k = 50$ 会引入太多噪声。另一些位置可能有很多合理选择(如句子开头),固定 $k$ 可能不够。
Top-p 采样(Nucleus Sampling)解决了 Top-k 的固定阈值问题。它选择最小的词元集合,使其累积概率达到 $p$。常用 $p = 0.9 \sim 0.95$。
这意味着采样范围是自适应的:
在模型非常确定时(概率集中在少数词元上),集合很小
在模型不确定时(概率分散),集合自动扩大
Top-p 采样因此在多样性和质量之间取得了更好的平衡,是当前大语言模型最常用的采样策略。
在实际应用中,这些策略通常组合使用:先用温度调整分布,再用 Top-p 或 Top-k 截断尾部,最后从截断后的分布中采样。例如,典型的对话模型配置为 $T = 0.7$、$\text{Top-p} = 0.9$。
最后更新于1天前