ysf
ysf
Published on 2025-03-06 / 19 Visits
4

大模型文本生成中 temperature 参数的数学机制

  • 使用 API 接口调用大语言模型时,经常能看见 temperature 这个参数,阿里云白炼平台对 temperature 参数的解释是这样的:

那么 temperature 是如何影响大语言模型的输出结果的呢?

要理解 temperature 参数的作用,首先要理解大模型是生成文本时的决策过程。模型在生成每一个词(token)时,首先会为词汇表中所有候选词计算一个原始分数(logit),然后通过 softmax 函数将这些原始分数映射为 0 到 1 之间的概率分布(所有词的概率总和为 1),这个概率分布决定了每个词被选中的可能性。

temperature 正是在 softmax 函数计算过程中发挥作用,它作为一个缩放因子,改变了原始概率分布的形状。

假设模型输出的原始 logtis 向量为zz,词汇表中第ii 个词的 logit 为ziz_i,temperature 参数为TT,那么概率PiP_i 的计算公式如下:

Pi=exp(zi/T)jexp(zj/T)P_i = \frac{\mathrm{exp}(z_i/T)}{\sum_j \mathrm{exp}(z_j/T)}

其中

  • PiP_i:第ii 个词被选中的最终概率

  • ziz_i:模型对输出的第ii 个词的原始分数(logit)

  • TT:温度参数

  • exp(x)\mathrm{exp}(x):函数exe^x

由上面这个图可以看出:

  • T<1T<1 时:锐化概率分布,高概率的词被赋予更高的权重,而低概率的词权重则被进一步压低,这使得模型在采样时,几乎总是选中那几个最可能的词,因此输出结果非常稳定和可预测。

  • T>1T > 1 时:平滑概率分布,高概率和低概率词之间的差距被缩小,使得那些原本不太可能被选中的词也有机会被选中,增加了输出的随机性和多样性。

那么TT 是如何产生上述影响的呢?

T<1T < 1 时:除以一个小数相当于放大数值,原本较大的ziz_i 会变得更大,原本较小的ziz_i 会变得更小。最高概率的词其概率趋近于1,其他词趋近于0,概率分布变得尖锐。

例如,假如模型输出的 logits 为 [1.0, 2.0, 3.0, 4.0],各温度状态下 softmax 的概率分布为:

  • T=1T=1 时,[0.032059, 0.087144, 0.236883, 0.643914]

  • T=0.5T=0.5 时,[0.002144, 0.015842, 0.117059, 0.864955]

  • T=0.1T=0.1时,[0.000000, 0.000000, 0.000045, 0.999955]

  • T=2.0T=2.0 时,[0.101536, 0.167405, 0.276004, 0.455054]

结合上图可以看出,当TT非常小时,logit 最大的token的概率非常趋近于1,而logit最小的元素概率趋近于0,在这样的情况下,模型的输出就非常确定。

TT 大于1时,概率分布非常平滑。