在使用大语言模型时,除了输入提示词,采样参数对输出风格有决定性影响。其中温度(temperature)、top-p(核采样)和重复惩罚(repetition penalty)是最常调整的三个。它们各自控制不同的方面,理解其原理能帮你更精准地控制生成结果。
温度:控制随机性
温度调整的是模型输出概率分布的平滑程度。
- 低温(如 0.1~0.5):概率分布更尖锐,高概率词更容易被选中,输出更确定、保守、一致。适合事实问答、代码生成、数学推理等需要准确性的任务。
- 高温(如 0.8~1.5):分布更平坦,低概率词也有机会被选中,输出更多样、有创意,但也更容易出现事实错误或逻辑跳跃。适合头脑风暴、故事创作、诗歌等。
- 温度=1:保持模型原始分布,不做额外缩放。
- 温度趋近 0:等价于贪心解码,每次选概率最高的词,输出几乎固定。
注意:温度并不改变词的概率排序,只改变概率差距。
top-p:动态截断候选集
top-p(核采样)按概率从高到低累加,只保留累积概率达到 p 的最小词集合,然后在这个集合内重新归一化并采样。
- top-p 较小(如 0.5~0.8):候选词少,输出更聚焦、安全,但可能缺乏变化。
- top-p 较大(如 0.9~0.95):候选词多,多样性增加,但可能引入不相关的词。
- top-p=1:不截断,考虑所有词。
与温度的区别:温度是“缩放概率”,top-p 是“砍掉长尾”。两者常配合使用,例如温度 0.7 + top-p 0.9 是常见组合。
重复惩罚:抑制复读
重复惩罚对已出现过的 token 进行惩罚,降低其再次被选中的概率。
- 值=1.0:无惩罚。
- 值>1.0(如 1.1~1.2):抑制重复,值越大惩罚越强。但过高(如 >1.5)可能导致输出不连贯、语法错误或丢失关键词。
- 值<1.0:鼓励重复,极少使用。
不同框架实现略有差异:有的按出现次数累加惩罚,有的只惩罚一次。使用时建议从 1.05~1.15 开始微调。
参数组合与场景建议
| 场景 | 温度 | top-p | 重复惩罚 |
|---|---|---|---|
| 事实问答/代码 | 0.1~0.3 | 0.8~0.9 | 1.0~1.05 |
| 通用对话 | 0.6~0.8 | 0.9~0.95 | 1.0~1.1 |
| 创意写作 | 0.9~1.2 | 0.95~1.0 | 1.0~1.1 |
| 抑制复读 | 0.7~0.9 | 0.9 | 1.1~1.2 |
实践建议
- 一次只调一个参数,观察输出变化,避免混淆因果。
- 温度与 top-p 不必同时大幅调整,通常固定一个,微调另一个。
- 重复惩罚并非越高越好,过高会破坏文本流畅性。
- 不同模型对参数敏感度不同,建议参考模型文档的推荐范围。
掌握这三个参数,你就能在“准确”与“多样”之间找到适合任务的平衡点。