写在前面
许多大模型具有推理参数,用于控制输出的"随机性"。常见的几个是 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 概率彼此接近,这使得输出更加随机、"有创意"。
- 低温通过放大概率差异,这使得输出更加确定。
扩展阅读
- 论文:THE CURIOUS CASE OF NEURAL TEXT DeGENERATION,核采样
- 论文:Self-Consistency Improves Chain of Thought Reasoning in Language Models,提到了多种采样方法的利用
- https://peterchng.com/blog/2023/05/02/token-selection-strategies-top-k-top-p-and-temperature/ 本文有部分片段翻译自该文章
- 各种激活函数:机器学习中的数学------激活函数(七):Softmax函数_softmax激活函数的公式-CSDN博客
- 一文详解Softmax函数:https://zhuanlan.zhihu.com/p/105722023
- 模拟退火解释:https://www.baeldung.com/cs/simulated-annealing