什么是温度采样(Temperature Sampling)

温度采样Temperature Sampling)概述

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. 实际使用建议

  1. 先确定目标:如果需要高度确定的答案(如技术文档、代码),将 T 设为 0.1‑0.3;若追求创意(如诗歌、营销文案),可尝试 0.9‑1.2
  2. 结合 Top‑p:在创意场景下,常用 T ≈ 1.0 + Top‑p = 0.9,既保留多样性,又避免极端低概率词导致的语义漂移。
  3. 动态调节:一些高级系统会在对话的不同阶段动态改变 T ,例如在回答核心事实时使用低温,转向自由发挥时提升温度。
  4. 代码实现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 等截断采样策略结合使用,可在保证质量的前提下提升多样性。
  • 实际部署时,建议根据业务需求动态调节温度,并结合截断策略实现更稳健的生成效果。
来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!