Top-K 和 Top-P(也称为 Nucleus Sampling)是文本生成过程中常用的采样策略,它们的目标是通过影响采样词汇的范围来提高生成的质量和多样性。它们的主要区别在于如何确定候选词的范围。
1. Top-K Sampling
Top-K Sampling 的核心思想是,在每一步生成时,只从模型输出的概率分布中选择概率最高的 K 个词来进行采样,忽略剩下的所有词。
- 模型首先预测下一个词的概率分布(通常包含所有词汇表中的词)。
- 将所有可能的词按概率排序。
- 选取前 K 个概率最大的词。
- 在这 K 个词中根据它们的概率重新采样(即按比例选择下一个词)。
通过限制候选词的数量(K 值),可以有效避免生成低概率、不合理的词。提供了对生成多样性的一种简单、可控的机制。K 越大,生成越多样化。
但是,K 是一个固定值,不管前几名词的总概率是多少,它总是选择前 K 个词。对于某些情况下,候选词的概率分布可能有很强的长尾效应(前几个词占据绝大部分概率),而固定 K 可能引入太多低概率词。
2. Top-P Sampling
Top-P(Nucleus Sampling)的采样根据累积概率来选择候选词,而不是固定地选择前 K 个词。
- 模型预测下一个词的概率分布。
- 将词按概率从高到低排序。
- 从排序的词中,选取累积概率达到 P 的最小词集合。比如,如果 P=0.9,则选择前几个词,使它们的概率之和至少为 0.9。
- 在这些词中根据它们的概率重新采样。
动态选择候选词数量,P 的值控制了候选词的累积概率,而不依赖于固定数量的词。这个策略更适应不同的概率分布情况。例如,如果前几个词的概率很高,Top-P 会只选择这几个词;如果概率分布较为平坦,它会选择更多的词。更灵活,适应性强,避免了固定 K 值引入的不合理词。
控制生成多样性时,P 值的选择比 K 值复杂一些,P=0.9 等于选择了概率总和达到 90% 的词集合,而不是特定的词数量。