


















许多大模型具有推理参数,用于控制输出的“随机性”。常见的几个是 Top-K、Top-p,以及温度。比如我们常用的 Dify 平台就支持 Top-p 和 温度 的设置:
鼠标放到问号上面,可以看到各自的解释:
Top-p:
温度:
看起来,他们都可以控制模型输出内容的随机性。那么它们有什么不同呢?以及作用机制又有哪些区别呢?本文将一探究竟。
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-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。
这种策略(也称为核采样,英文通常为 Nucleus sampling 或 Kernel sampling)与 Top-K 类似,但我们不是选择一定数量的 token,而是选择足够多的 token 来“覆盖”由参数 p 定义的一定概率,方式如下:
例如,假设我们使用 p=0.5 和 top-p 策略进行采样,同样取自上述示例。该过程如下:
结果是只有前 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}\)中的每个元素,以生成相应的输出向量。即:
除了将输出转换为概率分布之外,Softmax还会改变每个元素之间的相对差异。Softmax 函数的效果取决于输入元素的范围\(x_i\):
这可以使模型对预测更加“确定”。这句话怎么理解呢?
简单理解就是:不同 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 对输出的影响:
让我们再次绘制 Softmax函数的输出,但这次我们将比较 T 的不同值:
可见,温度 T 的值越小,输入值之间的差异就越大。相反,温度 T 的值越大,差异就越小。
还可以考虑极端情况下发生的情况,以更直观地了解温度如何影响输出:
本质上,温度会改变概率分布的形状。随着温度升高,概率差异会减小,从而导致模型输出更“随机”。这表现为 LLM 输出更具“创造性”。相反,较低的温度会使输出更具确定性。
顺便说一句,该参数之所以被称为“温度”,与热力学中的概念有关:在较高温度下,气体或流体的浓度会比在低温下扩散(扩散)得更快。有兴趣的同学可参阅模拟退火中的温度概念,下图引用了 Simulated annealing - Wikipedia 的图片(随着温度的降低,跳跃越来越不随机,最优解也越来越稳定)。
Top-K、Top-p 和温度都是影响生成token方式的推理参数,它们都作用于大模型的输出概率分布。
相比之下,温度的作用方式不同:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。