Temperature(采样温度)
控制模型输出随机性的参数。Temperature 越高,概率分布越平坦(更随机、更有创意);越低,分布越尖锐(更确定、更保守)。通过在 Softmax 前将 logits 除以 T 值实现。
Temperature(采样温度)
一句话理解
Temperature 是模型的"创造力旋钮"——调高则天马行空,调低则中规中矩。
工作原理
Temperature 作用于 Softmax 之前,将 logits 除以温度值 T:
pi=∑jezj/Tezi/T数值示例
假设模型对三个候选 token 输出 logits [2.0, 1.0, 0.5]:
代码实现
python
def sample_with_temperature(logits, temperature=1.0):
if temperature == 0:
return np.argmax(logits) # 贪心
scaled = logits / temperature
scaled -= scaled.max() # 数值稳定
probs = np.exp(scaled) / np.exp(scaled).sum()
return np.random.choice(len(probs), p=probs)
实践建议
- 代码生成 / 事实问答:T=0 或 T=0.2,要准确不要创意
- 创意写作 / 头脑风暴:T=0.8∼1.2,鼓励多样性
- OpenAI API 默认值:T=1.0
Temperature 通常和 Top-k / Top-p 配合使用——先用 Temperature 调整分布形状,再用 Top-k/Top-p 截断尾部。