温度和 top-p:采样参数到底在调什么

2026 / 10 / 16#采样#temperature#top-p

模型输出的是什么

每一步,模型给出词表上每个 token 的概率。所谓"生成",就是从这堆概率里采样一个,接到序列后面,再算下一个。

采样参数的作用,就是改变如何从这堆概率里挑。

temperature:缩放概率的陡峭程度

数学上是对 logits 除以 T 再做 softmax:

  • T < 1:分布变陡,高概率的词更容易被选中,输出更确定、更保守
  • T > 1:分布变平,低概率词也有机会,输出更多样、更容易跑偏
  • T = 0(或极小值):近似贪心,每次选最高概率的那个

注意 T = 0 时严格来说不是"绝对确定",浮点误差和并行计算仍可能带来细微差异。

top-p(核采样):砍掉长尾

把所有 token 按概率从高到低排,取累计概率刚好达到 p 的最小集合,只在这个集合里采样。

  • p = 0.9:只考虑最可能的那些词,长尾噪声被排除
  • p = 1.0:不裁剪,全词表参与

top-p 比 top-k 更自适应:概率集中时集合小,概率分散时集合自动变大。

怎么配

任务 建议
抽取、分类、代码 低温度(0 ~ 0.3),要可复现
一般问答 0.7 左右
头脑风暴、文案 0.9 ~ 1.0,可以配 top-p 0.95

不要同时把两个参数往极端调。既降 temperature 又大幅降 top-p,等于双重收紧,输出会变得干瘪且重复。

一个常见困惑

同一个 prompt 连跑两次结果不同 —— 这不一定是模型"不稳定",而是采样本身带随机性。需要严格可复现时,除了把温度调到 0,还要看服务商是否支持固定随机种子;很多 API 并不保证可复现,这一点在评测对比时特别容易忽略。

本文为个人学习记录,可能存在错误或已过时,仅供参考。
← 返回笔记列表