温度参数:改变候选分布,不保证事实正确
调低温度常被理解为“更准确”,但它直接改变的是采样分布的集中程度。模型若把错误答案排在首位,更集中也可能更稳定地输出错误。
▶ 本文含视频讲解▶ 教学视频手动播放 · 英语讲解
Let's build GPT: from scratch, in code
结合模型讲解理解本文实验的背景;正文提供可独立运行的简化示例。此为外部原版课程,多篇笔记可能共用;未剪辑为本文专属视频。
播放器需要能访问 YouTube 的网络;若这里无法加载,可打开原视频。本文与本地图解仍可独立阅读。
问题从哪里出现
调低温度常被理解为“更准确”,但它直接改变的是采样分布的集中程度。模型若把错误答案排在首位,更集中也可能更稳定地输出错误。
理解核心机制
对 logits 除以正温度,再做 softmax。较小温度强化相对差异,较大温度让分布变平。下面比较分布本身,避免把一次随机样本当成结论。
动手做一个小实验
Python 3.11 或更新版本,仅使用标准库;将示例保存为 demo.py 后执行 python3 demo.py。数字与样本均为教学演示,不代表真实模型或服务器的测量结果。
import math
def probabilities(logits, temperature):
if temperature <= 0:
raise ValueError("positive temperature required")
scaled = [value / temperature for value in logits]
peak = max(scaled)
weights = [math.exp(value - peak) for value in scaled]
return [value / sum(weights) for value in weights]
cool = probabilities([2.0, 1.0, 0.0], 0.5)
warm = probabilities([2.0, 1.0, 0.0], 2.0)
assert cool[0] > warm[0]
print(cool, warm)适用边界与常见误区
服务接口里的 temperature=0 通常由特殊解码逻辑处理,不能直接代入除法。相同参数也不一定提供跨版本、跨硬件的严格可重复输出。
继续练习
固定 logits,画出不同温度下每个候选的概率;再交换最高分候选的事实标签,解释概率集中与事实正确的差别。