Module 2 · LLM Lesson 16 下钻 · 调节随机性

Temperature

Sampling 负责“按概率抽签”;Temperature 负责在抽签前调整各候选的抽签面积——低温更集中保守,高温更平均开放。

位置logits → Temperature 调整 → softmax 概率 → sampling
解决的问题同一组模型分数,想控制回答更稳定还是更多样
输入输出层产生的 logits
输出排序相同、但尖锐程度不同的概率分布
本课边界先掌握功能和效果;实现只需知道 logits 除以 T,再复用 softmax

① 已学对象为什么还不够

Sampling 已经能按概率抽签,但原始概率可能:

我们需要一个旋钮,在不改变候选排名的前提下,控制“第一名领先得有多夸张”。这个旋钮就是 Temperature(温度)T。

② 功能心智模型:抽签面积的“集中度旋钮”

低温 T<1分布变尖:高分候选面积更大、低分更小 → 保守、稳定、接近 greedy
T=1不改变原始分布
高温 T>1分布变平:第一名优势缩小,次优候选面积变大 → 多样、开放、风险更高
Temperature 本身不制造随机数。随机来自 sampling;Temperature 只重分配每个候选的抽签面积。

③ 交互演示:拖动温度

固定 logits:mat=4, floor=3, sofa=2, dog=1

④ 实现层(现在只展开一行)

Temperature 先把每个 logit 除以 T,再复用已学的 softmax:

P(token_i) = softmax(logit_i / T)

所有 logits 同除一个正数,所以候选的高低排序不变;改变的只是分差和概率比例。

⑤ 一个具体对比

原 logits:[4, 3, 2, 1]

T=0.5 → softmax([8,6,4,2]) ≈ [0.865, 0.117, 0.016, 0.002]
    第一名几乎独占 → 稳定、保守

T=1.0 → softmax([4,3,2,1]) ≈ [0.644, 0.237, 0.087, 0.032]
    原始分布

T=2.0 → softmax([2,1.5,1,0.5]) ≈ [0.455, 0.276, 0.167, 0.102]
    候选更平均 → 多样、冒险
🅿️ 重要边界:高温只会让低概率候选“更有机会”,不会删除荒谬候选。要过滤长尾垃圾,需要下一课的 Top-k / Top-p

Temperature = 调节模型对“次优答案”的容忍度

低温:我更相信第一名 · 高温:我愿意考虑更多备选

记忆比喻:低温 = 冷静谨慎;高温 = 热情奔放。温度控制模型“愿意冒多大风险”,但真正随机抽签的是 Sampling。

完整顺序(易混)

logits → 除以 Temperature → softmax → probabilities → Sampling → token id

Temperature 直接调整的是 logits 的分差;softmax 再把调整后的 logits 变成概率;Sampling 最后按概率抽取。

低温会降低长尾候选概率;高温反而提高长尾候选概率。Temperature 不能彻底删除候选,真正过滤尾部要靠 Top-k / Top-p。

✅ 快速检查(用自己的话答)

  1. Temperature 和 sampling 分别负责什么?随机性来自哪一个?
  2. T<1 和 T>1 分别如何改变概率分布及文本风格?
  3. Temperature 会改变候选 token 的排名吗?它为什么不能阻止抽到特别荒谬的长尾 token?

答完后,下一课讲 Top-k / Top-p:在抽签前删除哪些候选,防止随机性跑到不靠谱的长尾。