temperature
temperature用于调整模型softmax输出层的概率的平滑度,温度越高,概率分布越平滑;温度越低,概率分布越尖锐
所以较低的温度代表了确定性,适用于需要确定性答案或稳定效果的场景,如nl2sql,代码生成等;
较高的温度代表了随机性,适用于需要较大发挥空间的场景,如诗歌创作等。
top-p
大模型选择输出token的时候,会有一个采样策略,用于选择输出哪些token,其中两种主要的采样方法就是top-k和top-p
top-p原理:
从概率加起来之和为p的top token中采样,称作top-p;该策略动态设置tokens候选列表的大小。这种称为Nucleus Sampling 的方法将可能性之和不超过特定值的top tokens列入候选名单。下图是top-p=0.15的例子:
使用建议
-
从上面的原理可以看到,temperature、top-p等参数用于控制生成文本的随机性,值越大随机性越大,意味着多样性和创造性,但可能产生胡言乱语。值越小确定性越高,但意味着可能会单调和重复。
-
temperature、top-p在GPT官方接口的默认值都是1(取值范围0~2之间)。官方建议控制随机性,调整其中一个即可,不要两个都调整(不建议将两者都调的过低)。
-
Top-p 通常设置为较高的值(如 0.75),目的是限制可能被采样的低概率 token 的长尾。我们可以同时使用 top-k 和 top-p。如果 k 和 p 都启用,则 p 在 k 之后起作用
-
一般来说,prompt 越长,描述得越清楚,模型生成的输出质量就越好,置信度越高,这时可以适当调高 temperature 的值;反过来,如果 prompt 很短,很含糊,这时再设置一个比较高的 temperature 值,模型的输出就很不稳定了。
-
对于具体的任务,确定测试集后,可以在测试集上精调这两个参数。一般设置一个较高的值,然后慢慢下调。