通过 Api 调用LLM 的temperature=0是可以吗
目录
- 通过 Api 调用LLM 的 `temperature=0` 是可以吗
- 1. 数学视角:为什么 T 趋近于 0 时,结果变成了“唯一解”?
- 2. 工程视角:代码是怎么处理“除以 0”的?
- 3. 什么时候应该用 0?
- 总结
结论:
- 设置
temperature=0是完全可以的,而且在很多场景下(如代码生成、数学解题)是推荐的做法。 - 你是对的,数学上确实不能除以 0。但在工程实现代码中,程序做了“特判”处理。
让我们从数学原理和代码实现两个层面来拆解这个“除以 0”的悖论。
1. 数学视角:为什么 T 趋近于 0 时,结果变成了“唯一解”?
大型语言模型输出下一个词时,使用的是 Softmax 函数。加上温度 后的公式如下:
其中 是模型给每个候选词打的分数(Logits)。
当我们让 无限趋近于 0(即取极限 )时,会发生有趣的数学现象:
最大值被无限放大:假设“苹果”得分 10,“香蕉”得分 5。
如果 : vs 。差距很大,但还算正常。
如果 : vs 。 是一个天文数字,而 相比之下就像一只蚂蚁。
赢家通吃 (Winner Takes All):
当 趋近于 0 时,得分最高的那个词的概率会趋近于1 (100%),而其他所有词的概率会趋近于0。