1. 什么是温度采样
温度采样是一种在生成式模型(尤其是自回归语言模型)推理阶段使用的概率调节技术。它通过在 softmax 计算前对模型输出的 logits(对数概率)除以一个称为 温度(temperature) 的标量 T ,从而改变概率分布的“陡峭程度”,进而控制生成文本的随机性与多样性。
2. 温度值的实际影响
温度范围 | 生成特性 | 适用场景 |
---|---|---|
0.0 | 完全确定(等价于贪婪搜索) | 代码生成、事实性回答 |
0.1‑0.5 | 低随机性,偏保守 | 技术文档、正式写作 |
0.5‑0.8 | 中等随机性,平衡创意与准确 | 对话生成、创意写作 |
0.8‑1.2 | 高随机性,鼓励多样 | 诗歌、头脑风暴 |
>1.2 | 极高随机性,易出现无意义输出 | 实验性探索 |
- 低温(< 0.5):概率分布尖锐,模型几乎只会选取最高概率的 token,输出更稳定、可预测。
- 中温(≈ 1.0):保持原始 logits 的相对比例,兼顾准确性与多样性,是大多数对话系统的默认设置。
- 高温(> 1.0):分布被拉平,低概率词的出现概率显著提升,生成更具创意但也更易出现语义错误。
3. 与其他采样策略的关系
策略 | 关键机制 | 与温度采样的配合方式 |
---|---|---|
Top‑k | 只保留概率最高的 k 个 token,其余置零 | 常与温度一起使用:先截断后除以温度再归一化,兼顾多样性与合理性。 |
Top‑p( nucleus) | 取累计概率超过阈值 p 的最小集合 | 同样可以在截断后调节温度,以细粒度控制随机性。 |
贪婪搜索 | 直接选取最高概率 token(相当于 T = 0) | 是温度采样的极端形式。 |
在实际系统中,温度 常作为全局随机性调节器,而 Top‑k / Top‑p 则提供局部的概率剪枝,两者组合能够在保证输出质量的同时提升多样性。
4. 实际使用建议
- 先确定目标:如果需要高度确定的答案(如技术文档、代码),将 T 设为 0.1‑0.3;若追求创意(如诗歌、营销文案),可尝试 0.9‑1.2。
- 结合 Top‑p:在创意场景下,常用 T ≈ 1.0 + Top‑p = 0.9,既保留多样性,又避免极端低概率词导致的语义漂移。
- 动态调节:一些高级系统会在对话的不同阶段动态改变 T ,例如在回答核心事实时使用低温,转向自由发挥时提升温度。
- 代码实现(PyTorch 示例):
import torch import torch.nn.functional as F def temperature_sampling(logits, temperature=1.0): # 调整温度 logits = logits / temperature # 归一化为概率 probs = F.softmax(logits, dim=-1) # 随机抽样 token = torch.multinomial(probs, num_samples=1) return token.item()
该实现直接对应上文的公式,适用于任何基于 logits 的生成模型。
5. 小结
- 温度采样 通过对 logits 除以温度 T 来平滑或尖锐化概率分布,从而控制生成文本的随机性。
- 温度值 的选择直接决定输出的确定性与创意度,常用的经验区间已在表格中列出。
- 与 Top‑k / Top‑p 等截断采样策略结合使用,可在保证质量的前提下提升多样性。
- 实际部署时,建议根据业务需求动态调节温度,并结合截断策略实现更稳健的生成效果。
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!