每天一个AI知识-什么是Top-p

15 阅读3分钟

大语言模型每次生成一个词,本质上是在做一道"概率分布题":给定前文,模型会为词表中的每一个词打分,经过 softmax 转换后得到一个概率分布,然后从中抽一个词出来。

问题在于:直接从全部词里抽,低质量的词也有机会被选中;只选概率最高的词,输出又过于死板。Top-p 就是为了解决这个平衡问题而生的。


什么是 Top-p?

Top-p(又叫 Nucleus Sampling,核采样)的思路是:

把候选词按概率从高到低排列,依次累加,直到累积概率刚好达到 p,把这些词圈成一个"候选池",只在这个池子里随机抽取。

p 是一个介于 0 到 1 之间的参数,由使用者设置。


完整执行流程

1. 模型输出所有词的 logits(原始分数)
2. 除以 temperature → 调整分布尖锐度
3. softmax → 转换为概率分布
4. 按概率从高到低排序
5. 从最高概率词开始累加,直到累积概率 ≥ p → 截断,得到候选池
6. 对候选池内概率重新归一化(使其加和为 1)
7. 在候选池内随机采样

具体示例

假设模型生成下一个词时,概率分布如下:

排名候选词概率累积概率
140%40%
225%65%
315%80%
410%90%
55%95%
6蜥蜴3%98%
7蚂蚁1.5%99.5%
8恐龙0.5%100%

top-p = 0.8

累加过程:40% → 65% → 80%,到达 p,停止。

候选池 = {猫, 狗, 鸟},其余词全部排除,从这三个里随机抽取一个。

top-p = 0.95

累加:40% → 65% → 80% → 90% → 95%,停止。

候选池 = {猫, 狗, 鸟, 鱼, 蛇},选择范围扩大,输出更多样。

top-p = 0.4

累加:40%,第一个词"猫"就已到达 p。

候选池 = {猫},输出确定为"猫",无随机性。


Top-p 与 Temperature 的关系

两者都影响输出的随机性,但作用阶段不同、机制不同:

TemperatureTop-p
作用阶段softmax 之前,修改 logitssoftmax 之后,过滤候选词
改变什么整体分布的尖锐程度候选词的数量范围
值越小输出越确定(分布更尖)候选池越小(更保守)
值越大输出越随机(分布更平)候选池越大(更多样)

两者经常同时使用,互为补充:temperature 调整"各词相对可能性",top-p 决定"从哪个范围里选"。


"最小集合"是什么意思?

学术论文中 top-p 的定义表述为:

从满足累积概率 ≥ p 的最小 token 集合中采样。

"最小"的含义:因为我们是从概率最高的词开始累加的,所以用尽量少的词就能凑够 p。换一个方向(从低概率词开始加)需要更多词才能达到同样的 p——那就不叫最小集合了。

本质上,"最小集合"强调的是:只取刚好够的高概率词,不多拿。


直觉总结

top-p 大小候选池输出风格
接近 1.0几乎全部词高度随机,创意十足
0.9 左右较多词多样但基本合理
0.7 ~ 0.8少量词保守,质量稳定
接近 0极少词甚至只有 1 个接近确定性输出

总结:top-p 就是划一条线——把最可能的那些词圈起来,要求它们的概率加起来恰好达到 p,然后只在这个圈子里抽签,圈外的词一律不考虑。