采样策略对比:温度、Top-p、Top-k、Min-p,以及在生产环境中真正有效的方法
你部署了一个聊天机器人,因为每篇博客文章都这么说,所以选择了 0.7 的温度值,结果第一位真实用户发回的截图显示,回复在句子中间就开始胡言乱语。一位同事建议将 Top-p 设为 0.9。另一位同事说 Top-k 设为 50。团队里的一位新人提到了 Min-p,并声称它能解决所有问题。你没有基准测试,没有测试集,也无法判断这些参数是否真的解决了你的具体问题,还是仅仅让输出变短了。
这就是大多数交付大型语言模型产品的团队在采样参数选择上的现状。这些参数的文档记录不佳,它们以非直观的方式相互影响,而且每个推理引擎中的默认值都是针对通用聊天基准测试进行调整的,而非针对你的具体用例。本文将四种最常见的采样参数——温度、Top-p、Top-k 和 Min-p——映射到它们对输出分布的具体影响上,这样你就可以在不靠猜测的情况下选择正确的参数(或组合)。
为什么采样参数很重要
每个大型语言模型都是通过从词汇表的概率分布中进行选择,逐个令牌生成文本的。原始分布(来自最终变换器层的逻辑值,经过 Softmax 处理)几乎从不直接使用。原始分布可能会给五万个令牌分配 0.0001 的概率,而给排名最高的令牌分配 0.3 的概率。如果你直接从中采样,你会得到一系列高概率的续写内容,听起来重复且机械。
采样参数会重塑这种分布。目标是使分布足够宽泛,以产生创造性或有用的变化,但又不能太宽泛,以至于模型给毫无意义的令牌分配了显著的概率。每个参数针对不同的失败模式:
- 温度控制分布的整体尖锐程度。
- Top-p(核采样)将分布截断为累积概率达到阈值的最小令牌集合。
- Top-k仅保留概率最高的 k 个令牌并重新归一化。
- Min-p相对于最高概率令牌的概率缩放一个概率下限,保留那些概率至少为该分数倍的令牌。
下图展示了每种策略如何转换相同的逻辑值分布:
flowchart LR
A[来自模型的
原始逻辑值] --> B[Softmax]
B --> C[完整概率
分布]
C --> D{温度}
D -->|tau < 1| E[尖锐的
峰值]
D -->|tau > 1| F[平坦的
尾部]
E --> G{Top-p / Top-k / Min-p}
F --> G
G --> H[截断的
分布]
H --> I[采样
下一个令牌]
C --> J[贪婪最大参数
tau = 0]
上面的每个方框都是一个可调节的步骤。顺序很重要:温度应用于 Softmax 之前的逻辑值,而 Top-p、Top-k 和 Min-p 应用于 Softmax 之后生成的概率分布。如果你先将温度设为 0,后续的截断参数将不起作用,因为分布已经变成了针对最大参数令牌的狄拉克δ函数。
深入解析四种参数
温度
温度是最古老且最广为人知的参数。它在 Softmax 之前将逻辑值除以 tau:
P(token_i) = exp(logit_i / tau) / sum_j exp(logit_j /
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。