一文了解大模型LLM生成文本时的参数Temperature(温度)意义、取值范围等知识

Temperature 是什么?

在LLM(大型语言模型)的生成过程中,Temperature 是一个控制生成文本随机性的参数(中文含义:温度)。它决定了模型在选择下一个词时,对所有可能的词的概率分布的“软化”程度。

  • 低 Temperature (接近 0): 模型会更加“确定”,倾向于选择概率最高的词。结果通常会更保守、更可预测、更集中,并且更接近于训练数据中常见的表达方式。
  • 高 Temperature (接近 1 或更高): 模型会更加“随机”,会给概率较低的词也提供机会。结果通常会更具创造性、更不确定、更多样化,甚至可能出现一些不符合逻辑或语法规则的文本。
  • 高 temperature (例如 0.7 - 1.0 或更高): 会使概率分布更平坦,让模型更有可能选择概率较低的词。这会产生更多样化、更具创造性、甚至更出人意料的输出,但同时也可能导致输出不连贯或不准确。
  • 低 temperature (例如 0.0 - 0.3): 会使概率分布更陡峭,让模型更有可能选择概率最高的词。这会产生更保守、更可预测、更符合训练数据的输出,但可能缺乏创造性和多样性。
  • temperature = 0: 理论上,模型会总是选择概率最高的词,输出完全确定性。但在实际应用中,通常不建议设置为 0,因为这会导致输出过于单调和重复。

Temperature 在 LLM 推理/训练中的作用

  1. 推理 (Inference): 在实际应用中,我们通常使用 Temperature 来调整模型的生成风格。

    • 需要准确、可靠的输出 (例如:翻译、代码生成): 使用低 Temperature,以确保输出的准确性和一致性。
    • 需要创造性、多样化的输出 (例如:故事创作、诗歌生成): 使用高 Temperature,以鼓励模型探索不同的可能性。
  2. 训练 (Training): 在模型训练过程中,Temperature 也会被使用,但通常会结合其他技术(例如:KL 散度正则化)来控制模型的生成能力。Temperature 的作用是影响模型在学习过程中对不同词的概率分布的调整。

 

【UpHub AI已经正式推出,为不同的AI大模型推理场景提供多个版本可选,欢迎了解,个人免费体验版(纯CPU推理,可在普通PC电脑上部署Deepseek 1.5B,7B,8B等参数少于100亿的大模型),可免费下载】

 

 

Temperature 具体到源论文中的相关公式

Temperature 的概念最初出现在 NIPS 2018 论文《Sequence Temperature Sampling for Language Generation》中。 论文中并 Temperature 参数主要应用在softmax函数中,用于调整 softmax 函数的输出。

softmax 函数的公式如下:

$P(w_i | w_1, w_2, ..., w_{i-1}) = \frac{e^{z_i}}{\sum_{j=1}^{V} e^{z_j}}$

其中:

  • $P(w_i | w_1, w_2, ..., w_{i-1})$ 是在给定前 i-1 个词 $w_1, w_2, ..., w_{i-1}$ 之后,第 i 个词 $w_i$ 的概率。
  • $z_i = \mathbf{v}^T \cdot \mathbf{W}_i$ (其中 $\mathbf{v}$ 是一个向量,$\mathbf{W}_i$ 是一个权重矩阵)
  • $V$ 是词汇表的大小。

Temperature 的作用就是改变 $z_i$ 的值:

$z_i' = \text{Temperature} \cdot \mathbf{v}^T \cdot \mathbf{W}_i$

因此,新的概率分布为:

$P'(w_i | w_1, w_2, ..., w_{i-1}) = \frac{e^{z_i'}}{\sum_{j=1}^{V} e^{z_j'}}$

可以看到,当 Temperature > 1 时,指数函数会被“软化”,从而降低了概率最高的词的概率,增加了其他词的概率。

Temperature 取值范围一般多少?

  • Temperature 的取值范围通常在 0 到 1 之间。
  • 0: 完全确定性,输出总是概率最高的词。
  • 1: 标准设置,平衡了可预测性和创造性。
  • 大于 1: 更具创造性,但可能导致输出质量下降。
场景 Temperature 取值范围 说明
写作 (小说、诗歌) 0.7 - 1.2 或更高 需要更多创造性和多样性,可以尝试更高的值。但要注意控制输出的质量,避免出现胡言乱语。
知识问答 0.0 - 0.5 需要准确和可靠的答案,应该选择较低的值,以减少模型产生错误信息的可能性。
代码生成 0.2 - 0.6 需要代码的正确性和可执行性,较低的值可以提高代码的质量。
创意文本生成 0.5 - 1.0 在创造性和准确性之间寻求平衡。

注意: 这些只是建议的范围,最佳值取决于具体的任务和模型。需要根据实际情况进行调整。

总结

Temperature 是一个重要的参数,它控制了 LLM 生成文本的随机性。通过调整 Temperature 的值,可以控制模型的生成风格,使其更适合不同的应用场景。

在本地部署大模型Deepseek、llama、gemma等时,可以适当调整不同的Temperature 参数,以获得更好的输出。

 

在UpHub AI中如何在对话中设置Temperature 温度

UpHubAI对话前点击设置

 

UpHubAI中调整不同的Temperature 参数

电话图标 点我咨询