在自然语言处理中,LLM(大语言模型)的“温度”(Temperature) 是一个控制生成文本随机性的超参数。它通过调整模型输出概率分布的平滑程度,直接影响生成结果的多样性和创造性。以下是详细解释:
---
核心作用
温度参数的数值范围通常大于0,具体效果如下:
- 低温(如 0.1~0.5)
模型更倾向于选择概率最高的词,输出更保守、集中、连贯,但可能缺乏新意。
*示例:* 输入“天空是…”,生成“蓝色的”。
- 高温(如 1.0~1.5)
模型放松对高概率词的偏好,随机性增加,结果更不可预测甚至荒谬。
*示例:* 输入“天空是…”,生成“群青色的,仿佛被猫爪揉皱的丝绸”。
---
技术原理
温度通过调整 softmax 函数中的 logits(未归一化的概率)来控制概率分布。
假设某个词的原始概率为 \( p_i \),调整后的概率为:
\
p_i' = \frac{\exp(\logits_i / T)}{\sum_j \exp(\logits_j / T)}
\
其中 \( T \) 是温度:
- \( T \to 0 \):概率分布尖锐(仅最高概率词被选中,接近贪心搜索)。
- \( T \to \infty \):概率分布均匀(完全随机,类似抛硬币)。
---
典型应用场景
1. 低温度(高确定性)
- 技术文档或问答任务(需准确性)。
- 翻译或摘要生成(避免跑题)。
2. 高温度(随机性)
- 写诗歌、故事(需要创意)。
- 生成多个备选答案(探索不同可能性)。
---
注意事项
- 温度过高可能导致文本不连贯或含错误事实。
- 温度过低可能让结果重复、呆板(如复读机式回答)。
- 常与其他采样方法配合使用(如 top-k、nucleus采样)。
---
示例代码
在调用模型时指定温度值(以OpenAI API为例):
python
response = openai.Completion.create(
model="text-davinci-003",
prompt="天空是",
temperature=0.7 常用平衡值(中等随机性)
)
简而言之,温度是调节LLM输出“想象力”的旋钮。合理调整它可以在“保守精准”与“脑洞大开”之间找到理想平衡。