Interview: Top-k、Top-p和Temperature三个采样参数之间如何交互?设置不当会怎样?


题目解析

这三个参数共同控制LLM生成的多样性和质量。Temperature调整分布的”锐度”,Top-k限制候选token的数量,Top-p限制候选token的累积概率。它们的执行顺序和交互效应往往被忽略,导致不符合预期的生成行为。

解答思路

执行顺序通常是:先应用Temperature缩放logits(logit/T),然后过softmax得到概率,再应用Top-k过滤保留概率最高的k个token,最后应用Top-p过滤保留累积概率达到p的最小token集合,取两者交集后重新归一化采样。交互效应:1)T很小时(如0.1),分布极度集中,Top-k和Top-p几乎不起作用;2)T很大时(如2.0),分布过于平坦,即使Top-k=10也可能采样到低质量token;3)Top-k=1等价于贪心解码,此时T和Top-p无效。

关键要点

  1. Temperature本质是在对数空间做缩放:T<1压缩分布(更确定),T>1展开分布(更随机)
  2. Top-p(nucleus sampling)比Top-k更鲁棒,因为它自适应候选集大小
  3. 常见推荐:创意写作T=0.7-1.0, p=0.9;代码生成T=0.0-0.2或greedy
  4. 重复惩罚(repetition_penalty)是第四个关键参数,与上述三者独立作用

加分回答

可以讨论min-p采样:设定一个相对于最大概率的最小阈值,如min_p=0.1表示只保留概率>max_prob×0.1的token。这比Top-p更直观且在极端分布下表现更好。还可以分析温度退火(temperature annealing)在长文本生成中的作用——开头用高温度增加创意,后续降低温度保持连贯。

常见踩坑

  1. 同时设置Top-k=50和Top-p=0.1,Top-p已经将候选缩小到2-3个token,Top-k形同虚设
  2. Temperature=0在部分实现中不是严格greedy而是用了很小的T(如0.01),可能有随机性
  3. 忽略了不同任务需要完全不同的采样参数配置