很多人第一次调大模型时都会疑惑:为什么回答有时严谨有时放飞?其实除了模型本身,那些采样参数也在悄悄决定输出的"性格"。这篇把几个核心概念一次讲清。
一切从 Token 开始
模型并不是按"字"或"词"阅读文本,而是按 token。一个 token 可能是一个汉字、半个词,或者一个标点。中文通常 1~2 个字折算一个 token。模型每次生成,都是在"目前已有内容"的基础上,预测下一个 token 的概率分布,然后从中挑一个——如此循环,直到结束。
Temperature:创造力的旋钮
temperature 控制挑选时的"冒险程度"。调低(如 0.2),模型几乎总选概率最高的词,输出稳定保守,适合提取信息、分类、写代码;调高(如 1.0+),低概率的词也有机会被选中,输出更多样有创意,适合写作和头脑风暴。
Top-p 与 Top-k:给候选名单设门槛
top_k:只在概率最高的 k 个候选里挑,名单之外直接出局。top_p(核采样):按概率从高到低累加,只保留累计不超过 p 的那批候选,动态灵活,是目前最常用的方式。
实践中一般只调 temperature 和 top_p 中的一个,两个一起大幅调整反而容易失控。
重复惩罚:治"车轱辘话"
presence_penalty 和 frequency_penalty 会降低已经出现过的 token 被再次选中的概率,用来缓解复读机式输出。轻度设置即可,设太高会出现错别字式的怪词。
一组实用起点
- 严谨任务(总结/问答/代码):temperature 0.2~0.5,top_p 0.9
- 创意写作:temperature 0.8~1.0,top_p 0.95
- 出现复读:先把 frequency_penalty 加到 0.3 左右
理解了"逐 token 掷骰子"这个模型,参数就不再是玄学,而是你手里的旋钮。