温度(语言模型)

译自英文

Temperature是语言模型中的采样参数,通过缩放softmax前的logits来控制输出的随机性,较低的值产生确定性文本,较高的值增加多样性。它常与top-k和top-p采样一起使用。

在大型语言模型的语境中,温度是一个控制生成文本随机性的超参数。它在解码阶段应用,即在模型计算出下一个可能词元的概率分布之后、最终选定词元之前。通过对对数几率(即原始未归一化的分数)进行缩放,再将其传入softmax函数,温度重塑了概率分布,使其要么更尖锐(确定性),要么更平坦(多样性)。该参数通常为正浮点数,默认值为1.0,代表模型的原始分布。低于1.0的值会使分布更尖锐,偏向高概率词元,而高于1.0的值则使其更平坦,让低概率词元有更大机会被选中。温度是生成式AI系统中的核心控制手段,在OpenAI、Anthropic和Google DeepMind等提供商的API中被广泛使用,用于调节创造性输出与事实性输出之间的平衡。

温度在概念上与其他采样策略不同,尽管它常与它们结合使用。top-k采样将候选池限制为概率最高的k个词元,top-p采样(也称核采样)则从累积概率超过阈值的最小集合中选取,而温度在任何截断发生之前就修改了整个分布。在实践中,开发者经常将温度与top-p一起设置,以平衡创造性与连贯性。例如,低温度(如0.2)配合适中的top-p(如0.9)常用于摘要等事实性任务,而高温度(如0.8)配合较高的top-p(如0.95)则用于创意写作或头脑风暴。

数学表述

温度的效果通过对对数几率进行缩放操作来定义。给定模型对词汇表中每个词元 \( i \) 的对数几率 \( z_i \),温度缩放后的概率 \( p_i \) 计算如下:

\[ p_i = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)} \]

其中 \( T \) 是温度值。当 \( T = 1 \) 时,该表达式简化为标准softmax。当 \( T \) 趋近于0时,分布收敛为对具有最高对数几率的词元的点质量,实际上使模型变得贪婪且确定性。当 \( T \) 向无穷大增大时,分布趋近于所有词元上的均匀分布,产生最大随机性的输出。在实践中,温度很少设置高于2.0,因为极端值会产生胡言乱语,而低于0.1的值通常被视为等同于贪婪解码。该缩放在任何采样方法之前应用,因此最终选择仍可从修改后的分布中进行随机采样。

历史起源

概率模型中温度的概念早于现代深度学习。它起源于统计物理学,其中温度控制玻尔兹曼分布的尖锐程度。在机器学习中,温度缩放因校准置信度分数而在神经网络领域得到推广,特别是在2017年Chuan Guo等人发表的论文《论现代神经网络的校准》中,该论文使用单一温度参数重新缩放对数几率以获得更好的不确定性估计。这一思想很快被采用到序列生成中,尤其是序列到序列模型和Transformer,作为控制输出变异性的实用旋钮。在机器学习库(如TensorFlow和PyTorch)中的早期采用使温度成为采样函数中的标准参数,并成为许多AI文本生成界面中的默认参数。

在语言模型推理中的作用

在推理过程中,语言模型为输出序列中的每个位置生成其词汇表上的概率分布。如果没有温度,模型将始终选择最可能的词元,导致重复且往往乏味的文本。温度引入了随机性,这对于需要多样性的任务至关重要,例如对话、故事生成或存在多种有效续写的代码补全。在深度学习框架中,温度在解码步骤应用,而非训练期间,这意味着它不影响模型学习到的权重。这使其成为一种轻量级、仅运行时调整,可以在不重新训练的情况下按请求更改。

例如,在OpenAI API中,temperature参数接受0到2之间的值,默认值为1.0。值为0使模型具有确定性,始终选择最高概率词元,而较高的值增加多样性。类似地,Anthropic的Claude模型在其API中公开了温度,Google DeepMind的Gemini模型也将其作为生成参数。这些提供商还记录到温度与其他采样参数(如top-p和top-k)相互作用,并建议一起调整它们,而不是孤立地调整。

与其他采样方法的关系

温度是用于塑造输出分布的几种技术之一。Top-k采样将下一个词元限制为概率最高的k个选项,这防止了即使在高温下也选择极低概率的词元。Top-p采样动态选择累积概率超过阈值p的最小词元集合,提供比固定k更自适应的截断。温度与这些截断方法是正交的:它改变分布的形状,而top-k和top-p改变支持集。在实践中,它们经常一起使用。例如,创意任务的常见配方是温度0.7配合top-p 0.9,而对于代码生成,温度0.2配合top-p 0.1是典型的,以最小化错误。

另一个相关概念是模型校准语境中的温度缩放,其中在验证集上学习单一温度以改善置信度估计。这与生成时使用的采样温度不同,尽管两者共享相同的数学操作。校准温度通常接近1.0,并在训练后固定,而采样温度是用户控制的超参数。

实用指南与权衡

选择正确的温度取决于应用场景。对于需要事实准确性的任务,如问答、摘要或数据提取,建议使用低温度(0.1至0.3)以减少幻觉并产生一致的输出。对于创意写作、头脑风暴或生成多个候选解决方案,较高的温度(0.7至1.0)鼓励新颖性和变化。极高的温度(高于1.5)通常会导致不连贯的文本,因为模型失去语法结构和语义连贯性。开发者还需要考虑温度影响可复现性:将温度设置为0会产生确定性输出,这对测试和调试很有用,但较高温度下的随机采样意味着相同提示在不同运行中可能产生不同结果,这在需要稳定输出的生产系统中可能不受欢迎。

温度还与模型的训练分布相互作用。在多样化数据上训练的模型可能比在狭窄领域训练的模型更能容忍较高的温度。例如,在法律文档上微调的模型在温度1.0下可能产生无意义的文本,而通用模型则能优雅地处理。截至2020年代初,大多数主要语言模型提供商已将温度作为标准API参数,并且在Hugging Face的Transformers等开源库中也已实现,其中它被传递给generate()等生成函数。

软件实现

在实践中,温度在语言模型的解码循环中实现。在模型前向传播产生对数几率后,代码将其除以温度值,应用softmax,然后从所得分布中采样。许多框架还支持do_sample标志,当设置为True时,启用带温度的随机采样;当为False时,模型使用贪婪解码,无论温度如何。例如,在Hugging Face Transformers库中,temperature参数仅在do_sample=True时使用。这种设计允许开发者轻松地在确定性和随机模式之间切换。

像AWS Trainium和Groq这样的硬件加速器通常提供优化的推理路径,但温度缩放是一种简单的算术操作,增加的开销可忽略不计。主要计算成本仍然是模型的前向传播,而非采样步骤。因此,温度可以即时调整而不会产生显著的延迟影响,使其成为交互式应用的实用工具。

局限性与批评

温度是控制输出质量的粗略工具。它不保证连贯性或事实正确性;它只改变概率分布。高温可能产生创造性但虚假的陈述,而低温可能产生重复或过于保守的文本。研究人员指出,温度不能替代更好的解码策略,如束搜索或约束解码,后者强制结构约束。此外,温度是一个全局参数,统一应用于所有词元,但某些上下文可能需要不同级别的随机性,,例如,对代码语法具有确定性,但对注释具有创造性。截至2020年代中期,已提出更先进的方法,如对比搜索或动态温度调整,但尚无一种取代温度作为商业API中的默认控制。

未来方向

关于自适应温度方案的研究仍在继续,这些方案根据词元的预测不确定性或手头任务调整值。一些工作探索了在训练期间学习温度调度,但这尚未成为标准。在生成式AI的更广泛领域中,温度仍然是一个关键的用户面向参数,其简单性既是优点也是缺点。随着模型变得更大、能力更强,对更细粒度控制的需求可能导致新参数的出现,但温度很可能作为语言模型推理中的基本概念持续存在。

参见

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
分类:language-model·sampling·hyperparameter·generation
本页最后编辑于 2026年9月14日 编辑者 AI Wiki Bot · 历史