LLM中的Top-K/Top-p/温度都是怎么发挥作用的?

LLM中的Top-K/Top-p/温度都是怎么发挥作用的?

写在前面

许多大模型具有推理参数,用于控制输出的“随机性”。常见的几个是 Top-K、Top-p,以及温度。比如我们常用的 Dify 平台就支持 Top-p 和 温度 的设置:

鼠标放到问号上面,可以看到各自的解释:

Top-p:

含义:Kernel sampling threshold. Used to determine the randomness of the results. The higher the value, the stronger the randomness. The higher the possibility of getting different answers to the same question.

翻译过来就是:核采样阈值。用于决定结果的随机性。值越高,随机性越强。对于同一个问题,得到不同答案的可能性越高。

温度:

含义:The probability threshold of the nucleus sampling method during the generation process. The larger the value is, the higher the randomness of generation will be. The smaller the value is, the higher the certainty of generation will be.

翻译过来就是:在生成过程中,核采样方法的概率阈值。值越大,生成的随机性越高。值越小,生成的确定性越高。

看起来,他们都可以控制模型输出内容的随机性。那么它们有什么不同呢?以及作用机制又有哪些区别呢?本文将一探究竟。

前置知识:LLM 输出概率分布

LLM 通常对一系列 token 进行操作,这些 token 可以是单词、字母或子词单元。操作后得到的 token 集,称为 LLM 的词汇表。

LLM 接收一个输入的 token 序列,然后尝试预测下一个 token。它通过使用 Softmax 函数作为网络的最后一层,为所有可能的 token 生成离散概率分布来实现此目的。这是 LLM 的原始输出。

例如,如果我们的词汇量为 5,则输出可能如下所示(大多数 LLMs 的词汇量显然要大得多):

t0→0.4

t1→0.2

t2→0.2

t3→0.15

t4→0.05

由于这是一个概率分布,因此所有值的总和为 1。一旦我们有了这个概率分布,我们就可以决定如何从中采样,这就是 Top-K 和 Top-p 的作用所在。

小记:Top-K 和 Top-p 是两种不同的采样方法。

Top-K 采样

Top-K 采样的工作原理如下:

按概率的降序排列token。

选择前 K 个 token 来创建新的分布。

从这些 token 中抽取样本。

例如,假设使用上述示例中的 Top-3 策略进行采样。排名前 3 的是:

t0→0.4

t1→0.2

t2→0.2

但是,概率加起来不再等于 1 ,所以必须用前 3 个 token 的总和来进行规一化。我们将每个概率除以 0.4+0.2+0.2=0.8,得到前 3 个 token 的新概率分布:

t0→0.5

t1→0.25

t2→0.25

现在可以通过从中采样来选择一个 token。

如果设置 K=1,那么会得到所谓的贪婪策略,因为总是选择最可能的token。

Top-p 采样

这种策略(也称为核采样,英文通常为 Nucleus sampling 或 Kernel sampling)与 Top-K 类似,但我们不是选择一定数量的 token,而是选择足够多的 token 来“覆盖”由参数 p 定义的一定概率,方式如下:

按概率的降序排列 token。

选择最少数量的顶级 token,使得它们的累积概率至少为 p。

从这些 token 中抽取样本。

例如,假设我们使用 p=0.5 和 top-p 策略进行采样,同样取自上述示例。该过程如下:

最上面的 token t0 被选中。它的概率是 0.4,我们的累积概率也是 0.4。

累积概率小于 p=0.5 ,因此我们选择下一个token。

下一个token t1 的概率为 0.2,现在我们的累积概率为 0.6。

累积概率至少为 p=0.5 的值,因此我们停止。

结果是只有前 2 个 token 被选中:

t0→0.4

t1→0.2

再次,我们必须通过除以总和 0.4+0.2=0.6 来对概率进行归一化,得到:

t0→0.67

t1→0.33

我们现在可以从该分布中采样,就像之前使用 Top-K 所做的那样。

再次理解核采样的定义

核采样只关注概率分布的核心部分,而忽略了尾部部分。因为它只关注概率分布的核心部分,而忽略了尾部部分。

例如,如果 p=0.9,那么我们只从累积概率达到 0.9 的最小单词集合中选择一个单词,而不考虑其他累积概率小于 0.9 的单词。 这样可以避免采样到一些不合适或不相关的单词,同时也可以保留一些有趣或有创意的单词。

Top-p 值通常设置为比较高的值(如0.75),目的是限制低概率 token 的长尾。

有兴趣的同学可参阅论文“THE CURIOUS CASE OF NEURAL TEXT DeGENERATION”,详细了解核采样。

温度对采样的影响

温度会影响模型输出的“随机性”,其作用与前两个参数不同。虽然 Top-K 和 Top-p 直接作用于输出概率,但温度会影响 Softmax 函数本身,因此需要简要回顾一下其工作原理。

也即:温度影响的环节,更靠前一些。

Softmax 函数接收一个由 n 个实数组成的向量,然后将其标准化为这 n 个元素的离散概率分布,且概率的总和为 1。标准 Softmax 函数定义如下:

\[\sigma(\vec{x})_i = \frac{e^{x_i}}{\sum_{j=1}^{n} e^{x_j}} \]

该函数应用于输入向量\(\vec{x}\)中的每个元素,以生成相应的输出向量。即:

指数函数应用于元素\(x_i\)。

然后将结果值通过所有元素\(x_j\)的指数和进行归一化。这确保了结果值的总和为 1,从而使输出向量成为概率分布。

除了将输出转换为概率分布之外,Softmax还会改变每个元素之间的相对差异。Softmax 函数的效果取决于输入元素的范围\(x_i\):

如果被比较的两个输入元素都是\(x_i\)< 1,那么它们之间的差异就会缩小。

如果被比较的元素中至少有一个大于 1,那么它们之间的差异就会被放大。这可以使模型对预测更加“确定”。

这可以使模型对预测更加“确定”。这句话怎么理解呢?

简单理解就是:不同 token 之间的差异越大,那么模型输出时,总是倾向于选择头部 token,自然就表现得更为“确定”。

我们看看这个标准 Softmax函数的输入和输出值,看看相对差异是如何改变的。当输入值小于 1 时,输出值的相对差异会减小:

相反,当某些输入值大于 1 时,它们之间的差异在输出值中会被放大:

我们已经知道,输出值的缩小或放大会影响模型预测的“确定性”。那么,如何控制 Softmax 函数输出的概率分布的“确定性”呢?这就是“温度”参数的作用所在。考虑以下形式的“缩放” Softmax 函数:

\[\sigma(\vec{x})_i = \frac{e^{\frac{x_i}{T}}}{\sum_{j=1}^{n} e^{\frac{x_j}{T}}} \]

唯一的区别是:指数函数中应用了逆缩放参数 \(\frac{1}{T}\) ,其中 T 定义为温度。让我们考虑 T 对输出的影响:

如果为 0 < T < 1,则 \(x_i\) 输入值与 0 之间的距离会进一步拉大,差异也会被放大。

如果为 T > 1 ,则 \(x_i\) 输入值将被推向 0,差异就会减少。

让我们再次绘制 Softmax函数的输出,但这次我们将比较 T 的不同值:

可见,温度 T 的值越小,输入值之间的差异就越大。相反,温度 T 的值越大,差异就越小。

还可以考虑极端情况下发生的情况,以更直观地了解温度如何影响输出:

如果是 T 趋近于 0,那么我们将处理极大的指数,因此具有最大值的\(x_i\)元素将占主导地位,即它的概率将接近 1,而所有其他元素的概率将接近 0。这相当于一种贪婪策略,其中始终选择顶部token,非常“确定”。

如果是 T 趋近无穷大 ∞,则指数全部变为\(e^0\)= 1,这会使输出变为均匀分布,即所有概率变为\(\frac{1}{n}\) 。也就是说,所有token的概率都相等。当然,这显然不再是一个有用的模型。

本质上,温度会改变概率分布的形状。随着温度升高,概率差异会减小,从而导致模型输出更“随机”。这表现为 LLM 输出更具“创造性”。相反,较低的温度会使输出更具确定性。

顺便说一句,该参数之所以被称为“温度”,与热力学中的概念有关:在较高温度下,气体或流体的浓度会比在低温下扩散(扩散)得更快。有兴趣的同学可参阅模拟退火中的温度概念,下图引用了 Simulated annealing - Wikipedia 的图片(随着温度的降低,跳跃越来越不随机,最优解也越来越稳定)。

总结

Top-K、Top-p 和温度都是影响生成token方式的推理参数,它们都作用于大模型的输出概率分布。

Top-K 和 Top-p 均为采样策略。它们并非特定于 LLMs,甚至根本不特定于神经网络。它们只是从离散概率分布中采样的方法。

Top-K 将我们要考虑的特定token限制为一定数量(K)。

Top-p 将我们限制在特定的累积概率(p)内。

相比之下,温度的作

用方式不同:

温度不是一种采样策略,而是网络最后一层的 Softmax 函数的一个参数。

温度影响概率分布的形状。

高温使 token 概率彼此接近,这使得输出更加随机、“有创意”。

<think>嗯,用户问的是Top-p和Top-k有什么区别,之前他遇到了本地部署模型识别表格不完整的问题,现在转向了生成式模型中的参数设置问题。这可能意味着他在调整模型参数时遇到了生成效果的问题,或者想优化生成结果。需要先回顾一下Top-p和Top-k的定义,以及它们在生成过程中的作用。 首先,Top-k是选择概率最高的前k个词作为候选,然后从中按概率分布抽样。比如k=50,模型会从概率最高的50个词里选。而Top-p(核采样)则是累积概率超过p的最小词集合,比如p=0.9,就选概率从高到低加起来刚好超过90%的那些词,然后从中抽样。两者的主要区别在于选择候选词的方式不同:Top-k固定数量,Top-p动态调整数量。 用户可能在使用本地模型生成回答时,发现结果不够准确或不连贯,调整了温度参数后,可能还想通过Top-p和Top-k来优化生成效果。需要解释两者的应用场景,比如Top-k适合需要稳定性的情况,而Top-p更灵活,能根据上下文调整候选词数量。 另外,用户之前遇到的是表格识别问题,现在转问生成参数,可能是在尝试优化模型生成表格内容时的效果。这时候可能需要结合两者的特点,建议在需要多样性的场景用Top-p,需要限制输出范围时用Top-k,或者同时使用两者来控制生成质量。 还需要考虑用户的背景,可能有一定的技术基础,但需要清晰的对比和实际例子帮助理解。可能需要举例说明,比如当使用Top-k=50时,不管上下文如何都选前50,而Top-p=0.9则会动态调整候选词数量,可能有时多有时少,从而平衡生成多样性和准确性。 最后,要确保回答结构清晰,分点说明区别,可能还要提到两者可以结合使用,以及温度参数的影响,帮助用户全面理解如何调整这些参数来优化模型输出。</think>在生成式模型(如LLM)的输出控制中,**Top-p(核采样)**和**Top-k(截断采样)**是两种常用的概率筛选策略,它们的核心区别在于选择候选词的方式: --- ### **1. Top-k 采样** - **原理**: 仅保留**概率最高的前k个词**作为候选池,其他词直接排除。 例如设置`k=50`时,模型只从概率最高的50个词中抽样。 - **特点**: ✅ **确定性高**:始终固定候选词数量 ❌ **灵活性差**:可能忽略低概率但更合理的词 ❌ **极端情况**:若前k个词全是低质量候选,输出必然受限 - **适用场景**: 需要严格限制输出范围时(如客服问答需精准控制回答方向) --- ### **2. Top-p(核采样)** - **原理**: 动态选择**累积概率超过p的最小词集合**作为候选池。 例如设置`p=0.9`时,按概率从高到低累加,直到总和≥90%时停止,仅从这些词中抽样。 - **特点**: ✅ **动态调整**:候选词数量随上下文变化(可能多也可能少) ✅ **平衡质量与多样性**:既排除极低概率词,又保留合理候选 ❌ **参数敏感**:p值设置需反复调试(一般推荐0.7-0.95) - **适用场景**: 需要平衡生成质量与多样性时(如创意写作、开放式对话) --- ### **3. 直观对比示例** 假设模型预测下一个词的概率分布如下(已排序): ``` [ ("人工智能", 0.4), ("深度学习", 0.3), ("神经网络", 0.15), ("大数据", 0.1), ("云计算", 0.05) ] ``` | 策略 | 参数设置 | 候选词集合 | 说明 | |--------------|--------------|------------------------------------|----------------------------------------------------------------------| | **Top-k** | k=3 | 人工智能, 深度学习, 神经网络 | 固定选前3个词,排除后2个 | | **Top-p** | p=0.85 | 人工智能, 深度学习, 神经网络, 大数据 | 前4个词累积概率0.4+0.3+0.15+0.1=0.95≥0.85,动态包含更多候选 | | **两者结合** | k=3 + p=0.85 | 人工智能, 深度学习, 神经网络 | 先按k=3截断,再检查是否满足p=0.85(此时0.4+0.3+0.15=0.85已达标) | --- ### **4. 实际应用建议** 1. **单独使用**: - 优先尝试**Top-p**(推荐`p=0.9`),平衡质量与多样性 - 严格限制输出时用**Top-k**(如`k=40`) 2. **组合使用**: 同时设置`top_k=50 + top_p=0.95`,先按Top-k截断,再通过Top-p动态筛选(多数框架支持叠加) 3. **与温度参数(Temperature)配合**: -温度(如0.2) + 低Top-p(如0.7) → 更保守、确定性输出 -温度(如0.8) + 高Top-p(如0.95) → 更开放、创造性输出 --- ### **5. 典型应用场景** | 场景 | 推荐策略 | 参数示例 | |---------------------|-------------------------|-------------------| | 技术文档生成 | Top-p | p=0.9 | | 法律合同起草 | Top-k | k=30 | | 诗歌/故事创作 | Top-p + 高温度 | p=0.95, T=0.7 | | 客服问答 | Top-k + 低温度 | k=20, T=0.3 | 掌握这两种策略的配合使用,可以显著提升模型输出的可控性和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛马程序员2025

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值