temperature (/ˈtem.pər.ə.tʃɚ/ ,谈-普-若-扯 ),简单来说,这是一个控制模型输出随机性的参数。它决定了模型在生成文本时是更"保守"还是更"富有创造性"。
1. 核心原理:它如何工作?
要理解温度,首先需要了解模型是如何生成下一个词的:
-
模型会计算一个"概率分布":对于给定的输入,模型会为词汇表中的每一个可能的词计算一个分数(logits),然后通过 Softmax 函数将这些分数转换为一个概率分布。
- 例如,句子是 "The cat sat on the ...",下一个词的概率可能是:
mat: 0.7,sofa: 0.15,floor: 0.1,car: 0.05。
- 例如,句子是 "The cat sat on the ...",下一个词的概率可能是:
-
温度介入:在应用 Softmax 函数之前,temperature 参数会用来调整这些分数。
- 公式 :
Adjusted_Probability = Softmax(logits / temperature)
- 公式 :
-
温度的影响:
- 低温(如 0.1) :
logits / temperature会使数值之间的相对差异变大。经过 Softmax 后,概率分布会变得更加"尖锐"------高概率的词概率更高,低概率的词概率更低。- 上面的例子会变得更像:
mat: 0.95,sofa: 0.04,floor: 0.01,car: 0.00。
- 上面的例子会变得更像:
- 高温(如 1.5) :
logits / temperature会使数值之间的相对差异变小。经过 Softmax 后,概率分布会变得更加"平滑"------所有词的概率都更接近。- 上面的例子会变得更像:
mat: 0.35,sofa: 0.25,floor: 0.2,car: 0.2。
- 上面的例子会变得更像:
- 低温(如 0.1) :
2. 直观效果:不同温度下的行为
| 温度值 | 别名 | 对概率分布的影响 | 模型行为 | 适用场景 |
|---|---|---|---|---|
| 低温度 (0.1 - 0.5) | 保守 / 确定性 | 使分布更尖锐 | - 更可预测、一致 - 选择最可能词汇的概率极高 - 输出重复性可能增加 - 创造性、多样性低 | - 事实问答 (需要准确答案) - 代码生成 (需要语法正确) - 总结摘要 (需要忠于原文) - 需要可靠、稳定输出的场景 |
| 中温度 (0.5 - 1.0) | 平衡 | 使分布适度平滑 | - 在可靠性和创造性之间取得平衡 - 偶尔会使用不那么常见的词 - 输出通顺且有一定新意 | - 通用聊天机器人 - 内容创作 (如写邮件、文章) - 大多数任务的默认设置 |
| 高温度 (> 1.0) | 创造性 / 随机性 | 使分布更平坦 | - 更具创造性、多样性 - 可能产生出人意料的词和想法 - 容易产生不合逻辑或无意义的内容 - 输出不一致 | - 写诗歌、小说 - 头脑风暴、生成新点子 - 角色扮演对话 - 需要高度创新的场景 |
3. 举例说明
假设我们让模型补全句子:"今天的天气真..."
模型计算出的原始概率分布可能是:
好: 0.6不错: 0.3糟糕: 0.08疯狂: 0.02
不同温度下的采样结果:
-
温度 = 0.1:
- 分布变得非常尖锐,
好的概率接近 100%。 - 几乎每次输出:"今天的天气真好。"
- 特点:可靠但枯燥。
- 分布变得非常尖锐,
-
温度 = 1.0(默认):
- 分布基本保持不变。
- 可能输出:"今天的天气真好。" 或 "今天的天气真不错。",偶尔会出现 "糟糕"。
- 特点:自然、平衡。
-
温度 = 2.0:
- 分布变得平坦,所有词都有机会。
- 可能输出:"今天的天气真疯狂!" 或 "今天的天气真适合睡觉。" (甚至是一些训练数据中不常见的组合)
- 特点:有趣、有创意,但也可能胡言乱语。
4. 与其他参数的关系
- Top-p(核采样) :温度控制的是整个概率分布 的形状,而 Top-p 是另一种采样方法,它从概率最高的词开始累积,直到累积概率总和超过 p,然后只从这个集合中采样。高温和高 Top-p 值 经常一起使用来增加创造性,而低温和低 Top-p 值 一起使用来增加确定性和专注度。
- Top-k:类似 Top-p,但它只考虑概率最高的 k 个词。现在 Top-p 更常用,因为它能动态适应概率分布。
总结
温度是一个权衡参数:
- 追求准确性和一致性 -> 降低温度。
- 追求多样性和创造性 -> 提高温度。
在实际应用中,你需要根据具体任务来调整温度值。没有放之四海而皆准的最佳值,通常需要通过实验来找到最适合你用例的设置。