大型语言模型 (LLM) 中的温度是一个参数,用于控制模型在文本生成期间输出的随机性。 它会影响模型如何选择序列中的下一个 token(单词或子词)。 较低的温度(接近 0)使模型更具确定性,有利于高概率的 token,而较高的温度(高于 1)会增加随机性,从而可以选择不太可能的 token。 此参数不会改变模型的底层知识,而是调整响应中可预测性和创造性之间的平衡。
从技术上讲,温度通过在应用 softmax 函数之前缩放 logits(原始输出分数)来工作,softmax 函数将这些分数转换为概率。 例如,当温度为 1 时,logits 按原样使用。 较低的温度(例如,0.5)会将 logits 除以温度值,从而放大分数之间的差异,并使得分最高的 token 更加突出。 相反,较高的温度(例如,2)会减小这些差异,从而使概率分布变平。 例如,如果模型用于完成 “The sky is” 的最靠前的 token 是 “blue”(80%)和 “green”(20%),则较低的温度可能会在 99% 的时间内输出 “blue”,而较高的温度可能会将 “green” 的几率增加到 40%,从而引入更多可变性。
开发人员根据任务调整温度。 对于事实或代码生成任务(例如,回答技术问题),较低的温度 (0.2–0.5) 可确保输出的准确性和可靠性。 在创意写作或集思广益中,较高的温度 (0.7–1.2) 会产生各种各样的想法。 但是,过高的温度有导致不连贯的风险,而过低的温度则会导致重复或通用的文本。 例如,聊天机器人可能会使用温度 0.3 来提供技术支持(以保持事实性),但切换到 0.9 来进行随意的对话(以听起来更吸引人)。 实验是关键:温度 0 会强制执行贪婪采样(始终选择最靠前的 token),但即使像 0.3 这样的小值也可以有效地平衡创造力和重点。