第 45 篇 · LLM高级技巧

Top-k采样:AI如何从候选词中选择

把概率低的词直接排除,只从"靠谱"的词中选

想象你在考试时遇到一道选择题,有A、B、C、D四个选项。

你很确定答案是B或C,A和D肯定错。那你做题时,会考虑A和D吗?不会,你会把注意力集中在B和C上,从中选择。

Top-k采样就是这个思路:AI在选下一个词时,不是从所有可能的词中选,而是只从概率最高的k个词中选。

把明显不靠谱的选项先排除,只保留"有希望"的候选。这样做既保证了质量,又保留了一定的多样性。

什么是Top-k采样?

1
Top-k 采样原理

Top-k采样是一种文本生成策略:在每一步预测下一个词时,只保留概率最高的k个词作为候选,然后从这k个词中按概率采样

Top-k采样的工作流程

Step 1:计算所有词的概率

AI预测"今天天气很___"的下一个词,给词表中每个词都算一个概率分数:

45%

Rank #1

不错

25%

Rank #2

15%

Rank #3

5%

Rank #4

其他

10%

...

Step 2:只保留Top-k个词(假设k=3)

丢弃概率排名k之后的词,只保留前k个:

45%

✓ 保留

不错

25%

✓ 保留

15%

✓ 保留

vs

✗ 丢弃

其他

✗ 丢弃

Step 3:重新归一化并采样

把保留的k个词的概率重新归一化(总和=1),然后按概率采样:

45/85 = 53%

不错

25/85 = 29%

15/85 = 18%

然后按这3个概率采样。53%概率选"好",29%选"不错",18%选"差"。

为什么需要Top-k?

2
Top-k 解决的问题

为什么不能直接从所有词中采样?为什么要先截断?

Top-k 解决的三大问题
🎯

问题1:低概率词可能是"垃圾"

词表中可能有几万个词。大部分词概率极低,选它们会导致输出不连贯甚至无意义。比如"今天天气很香蕉"——语法错误,语义不通。Top-k把这些"垃圾选项"直接排除。

问题2:提高计算效率

如果词表有10万个词,每一步都要计算所有词的概率并采样,计算量很大。Top-k只需要处理k个词,大幅减少计算开销。

⚖️

问题3:平衡质量与多样性

如果只选概率最高的1个词(贪心),输出会很死板。如果从所有词中随机选,输出可能很离谱。Top-k取中间值:只从"靠谱"的候选中选,既保证质量,又保留多样性。

k选多少合适?

3
如何选择合适的k值?

k的选择直接影响生成效果。选多少合适?

不同k值的效果对比
k=1贪心解码

只选概率最高的词。输出完全确定,但可能很死板,缺乏变化。

"今天天气很。"(每次都一样)

特点:最稳定,但最无趣

k=10~50常用范围

保留概率较高的词,排除低概率垃圾。输出有变化但不会太离谱。

"今天天气很。" 或 "今天天气很不错。" 或 "今天天气很。"

特点:平衡质量与多样性,最常用

k=100~500大k值

保留更多候选词,输出更多样,但可能选到一些"边缘词"。

"今天天气很美丽。" 或 "今天天气很古怪。" 甚至 "今天天气很香蕉。"

特点:多样性高,但质量风险增加

💡 实践建议

  • k=40~50 是最常用的默认值,平衡效果好
  • • 需要更稳定的输出 → 降低k
  • • 需要更多创意和变化 → 提高k
  • • 同时配合温度参数调整,效果更可控
Top-k与温度的关系

4
Top-k 与温度的配合

Top-k和温度解决的是不同的问题,两者需要配合使用。

Top-k与温度的区别与配合

✂️ Top-k 解决:从多少个候选中选?

Top-k决定"候选池"的大小。k=10,候选池就是10个词;k=50,候选池就是50个词。

类比:决定"考试有几道备选答案"

🌡️ 温度解决:选的概率分布是怎样的?

温度决定候选词之间的概率差异。低温让大概率词更容易被选中,高温让概率更平均。

类比:决定"更倾向于选哪个答案"

🔧 常见组合

稳定输出

k=10, T=0.3

候选少+概率集中

平衡模式

k=50, T=0.7

候选适中+概率适中

创意输出

k=100, T=1.2

候选多+概率分散

Top-k的局限

5
Top-k 的局限性

⚠️ 局限1:k是固定值

Top-k的问题在于k是固定的。但有时候概率分布很"集中"(一个词占80%),有时候很"分散"(前十名各占5%)。固定k无法适应这种变化。

例子:k=10时,如果前3个词占了95%概率,后7个词毫无意义却还在候选池里

⚠️ 局限2:可能排除"好词"

有时候排名第k+1的词其实也挺好的,但被Top-k硬性排除了。这可能导致输出错过一些有创意的选择。

例子:k=5时,排名第6的"美丽"可能比第5的"还行"更好,却被排除

💡 解决方案

Top-k的局限促成了 Top-p(核采样)的诞生。Top-p不是固定候选数量,而是固定概率总和——保留累计概率达到p的所有词。这样候选数量可以动态调整。

→ 下一篇我们详细讲Top-p

总结

6
核心总结

🎓 一句话总结

  • 定义:Top-k只保留概率最高的k个词作为候选,从k个词中采样
  • 解决的问题:排除低概率垃圾、提高效率、平衡质量与多样性
  • k值选择:k=40~50是常用默认值;k小=稳定,k大=多样
  • 与温度配合:Top-k决定候选池大小,温度决定选哪个的概率
  • 局限:k固定无法适应概率分布变化,可能排除好词→引出Top-p

下一篇预告

👉 下一篇:Top-p采样

Top-k的问题是k固定,无法适应不同的概率分布。Top-p(核采样)解决了这个问题:它不固定候选数量,而是保留累计概率达到p的所有词。这样在概率分布集中时候选少,分散时候选多。下一篇我们来详细讲解这个更灵活的采样策略。

✏️ 手绘图解 · AI Catch 出品

第 45 篇 / 共 84 篇 · 第五阶段:LLM高级技巧