跳到正文
动手理解 · CONCEPT LAB

温度改变概率,正确答案改变 Loss

Logit 只是相对分数。对有限 Logits,Softmax 可先减去最大值以避免指数上溢,再归一成模型分布 q;只有未做标签平滑的类别索引或 one-hot(独热)目标,交叉熵才会缩成“只读正确类别概率”。

已经发生 正在观察 接下来
01 / 03

状态传导图

Z [2,1,0]
SHIFT 减最大值
EXP 指数化
SUM 归一化
Q [.665,.245,.090]

概率显示值均已舍入;真实 CE 应从未舍入的 log_softmax / Log-Sum-Exp 计算。例如 q_B=0.244728… 时,−ln(q_B)=1.407606…≈1.408。

观察点 01

相对分数变成总和为 1 的概率

标准温度 T=1。对 logits [2,1,0] 先减最大值 2,再取指数并归一,约得到 q=[0.665,0.245,0.090]。减同一个有限常数不改变数学上的概率,只用于避免指数上溢。

最高类概率0.665
其余概率总和0.335
此刻要记住

Softmax 使用相对差值,对整体平移不变。

数学最小底座 · 03 / 04

把“像不像”,变成可优化的损失

模型先吐出的不是概率,而是一组没有边界的 Logits(未归一化分数)。Softmax 把它们变成分布,Cross-Entropy(CE,交叉熵)再计算目标分布在模型概率下的平均负对数代价。损失的梯度,才是参数更新真正收到的信号。

01 · UNCERTAINTY

概率不是“感觉”,是对可能结果的分配

先假设 Tokenizer(分词器)已经把候选变成固定词表里的 Token(词元)。若下一个 Token 可能是“晴、雨、雪”,模型就要给每个候选分配概率。概率分布不是已经选出答案,而是在选择前描述所有可能性。

离散随机变量
表示一个不确定结果会落在哪个可枚举状态;严格数学定义可把这些状态编码成数值。“下一个 Token 是什么”就是一个类别型例子。
边缘概率
P(A) 只问 A 本身发生的概率,相当于从联合分布中把其他变量求和或积分掉。
条件概率
P(A|B)=P(A,B)/P(B)(要求 P(B)>0)。语言模型学习的是给定前文,下一个 Token 的条件分布
联合概率
由概率链式法则拆成一串条件概率。自回归语言模型把每个位置的前文记作 x<t,逐步给整段序列赋概率。
P(x1,,xn)=t=1nP(xtx<t)P(x_1,\ldots,x_n)=\prod_{t=1}^{n}P(x_t\mid x_{<t})

这是恒等的概率链式法则;模型的近似发生在每个条件分布 q(xₜ|x<t),不是链式分解本身。

一个最小条件概率例子

COUNTING FIRST
  1. 训练片段中,“今天天气”后面出现过 10 次:5 次“晴”、3 次“雨”、2 次“冷”。
  2. 若用同一组类别概率描述这 10 个后继 Token,并把这些观测在给定上下文后视为条件独立,Categorical Distribution(类别分布)的 Maximum Likelihood Estimation(MLE,最大似然估计)就是频率估计:P̂_MLE(晴|今天天气)=5/10=0.5。这不等于宣称自然文本里的相邻 Token 彼此独立。
  3. 神经语言模型不只按完整上下文查这张计数表,而是让大量上下文共享参数、学习条件分布;它仍可能记忆训练样本,所以“参数化”不等于“不会背诵”。
白话先懂概率像把 100 枚筹码分给候选答案。Softmax 决定怎么分;采样是在筹码分好之后抽一次。Temperature(温度)改变概率形状,Top-k / Top-p 截断并重新归一化候选集合;它们都不会把未知事实变成已知事实。
02 · SOFTMAX

指数化相对差值,再归一成概率

指数函数把有限实数分数变成正数,除以总和完成归一化。给所有有限 Logit 同时加减同一个有限常数,Softmax 结果不变,所以工程实现常先减最大值,避免指数溢出。

Logits 2、1、0 先减最大值变成 0、负1、负2,再指数化并归一化为 0.665、0.245、0.090;用未舍入的 B 类概率计算,交叉熵约为 1.408
图中采用未做标签平滑的类别索引 B(等价于 one-hot,独热目标),故 Loss 化成 B 的负对数概率;概率条显示到三位,1.408 则由未舍入的 q_B=0.244728… 计算。 查看原图 ↗
qi=softmax(z/T)i=ezi/Tjezj/T,T>0q_i=\operatorname{softmax}(z/T)_i=\frac{e^{z_i/T}}{\sum_j e^{z_j/T}},\qquad T>0

zᵢ 是第 i 个 Logit,qᵢ 是模型概率。标准 Softmax 取 T=1;对存在分数差的 Logits,T<1 让分布更尖,T>1 让它更平。对有限 Logit,数学上每项为正且总和为 1;浮点实现可能出现舍入误差或极小项下溢。

把图里的三步自己再算一遍

LOGITS [2, 1, 0]
  1. 减最大值 2:[2,1,0] → [0,−1,−2]
  2. 指数化:[e⁰,e⁻¹,e⁻²] ≈ [1,0.368,0.135]
  3. 总和约 1.503,逐项相除得到 [0.665,0.245,0.090]
  4. 若真实类别是 B,使用未舍入的 q_B=0.244728…,交叉熵为 −ln(q_B)=1.407606…≈1.408。直接把显示值 0.245 再取对数会得到约 1.406,那只是二次舍入误差。
工程边界PyTorch 的 CrossEntropyLoss 接收未归一化 Logits;在默认无类别权重、无标签平滑的类别索引目标下,它等价于稳定的 LogSoftmax + Negative Log-Likelihood Loss(NLLLoss,负对数似然损失)。它也接受与 Logits 同 Shape 的概率目标,但不会严格验证每行是否落在 [0,1] 且总和为 1,调用方必须保证分布有效;ignore_index 只适用于类别索引目标。不要先手动 Softmax 再喂进去;直接计算 log(softmax(z)) 也不如框架的稳定 log_softmax
03 · LOSS FAMILY

熵、交叉熵、KL,其实是一组账本

Entropy(熵)是目标分布的平均信息量,交叉熵是用模型分布编码目标分布的平均成本,Kullback–Leibler Divergence(KL 散度)是因此多付的部分。它们不是“准确率”的复杂写法,而是在比较完整分布。

目标分布 p 为猫0.7狗0.2鸟0.1,模型分布 q 为猫0.4狗0.4鸟0.2,并说明交叉熵等于目标熵加 KL 散度
p 固定时,H(p) 是常数,因此对 q 最小化 H(p,q) 等价于最小化 D_KL(p || q);图中自然对数结果可直接复算。 查看原图 ↗
H(p)=ipilogpi,DKL(pq)=ipilogpiqiH(p)=-\sum_i p_i\log p_i,\quad D_{\mathrm{KL}}(p\|q)=\sum_i p_i\log\frac{p_i}{q_i}

这里 p 是目标分布,q 是模型分布。若用自然对数,单位是 nat;若用以 2 为底的对数,单位是 bit。

H(p,q)=ipilogqiH(p,q)=-\sum_i p_i\log q_i

恒等式是 H(p,q)=H(p)+D_KL(p || q)。目标 p 固定时,最小化交叉熵与最小化正向 KL 的最优方向相同。

把分布账本算到小数点后三位

NATURAL LOG
  1. 图中 p=[0.7,0.2,0.1]q=[0.4,0.4,0.2]
  2. H(p)=−Σp ln p≈0.802 nats,这是目标本身的不确定性。
  3. D_KL(p||q)=Σp ln(p/q)≈0.184 nats,是使用 q 的额外成本。
  4. H(p,q)=−Σp ln q≈0.986 nats,与 0.802+0.184=0.986 对上。

目标分布与温度:Loss 还会产生什么梯度

先不使用类别权重,并让 p 是总和为 1 的实际训练目标分布。若 q=softmax(z/T),交叉熵对原始 Logit 的梯度是 (q−p)/T;温度不只改变概率形状,也显式改变梯度尺度。标准温度 T=1 时,软目标或标签平滑目标的梯度就是 q−p

q=softmax(z/T),H(p,q)zi=qipiTq=\operatorname{softmax}(z/T),\qquad \frac{\partial H(p,q)}{\partial z_i}=\frac{q_i-p_i}{T}

这个简式要求目标 p 是有效分布且没有类别权重;加入类别权重后,各类别项会被不同缩放,不能再直接写成 (q−p)/T

未做标签平滑的类别索引 y 对应 one-hot(独热)向量 eᵧ。在 T=1 下,Loss 化成 −log qᵧ,梯度化成 q−eᵧ;模型给某类的概率高于目标,就把对应 Logit 往下推。

L=logqy=zy+logsumexp(z),Lzi=qi1[i=y]L=-\log q_y=-z_y+\operatorname{logsumexp}(z),\qquad \frac{\partial L}{\partial z_i}=q_i-\mathbf{1}[i=y]

1[i=y] 是指示函数:第 i 类等于正确类别时为 1,否则为 0。示例 B 为正确类时,梯度约为 [0.665, −0.755, 0.090],三项之和在精确算术下为 0。

为什么交叉熵也是最大似然

对普通监督分类,若给定各输入后,样本标签由同一参数化条件分布生成并在样本间条件独立,Conditional Likelihood(条件似然)就能分解成各目标标签概率的乘积;常见 i.i.d. 采样是这一步的充分建模路径,但不是“公式成立”的口号。取负对数后,乘积变成各样本 −log qᵧ 的和,也就是未平滑类别索引交叉熵之和。这个等价关系依赖所选概率模型与似然,并不意味着所有 Loss 都天然是最大似然。

logL(θ)=n=1Nlogqθ(ynxn)=n=1NLn-\log \mathcal{L}(\theta)=-\sum_{n=1}^{N}\log q_\theta(y_n\mid x_n)=\sum_{n=1}^{N}L_n

qθ(yₙ|xₙ) 是参数为 θ 的模型给第 n 个目标标签的条件概率;除以 N 只把总损失改成平均损失,不改变同一批固定数据上的最优点。自回归语言模型在一条序列内部依靠概率链式法则分解,并没有假设相邻 Token 独立。

KL 为什么有方向:覆盖模式,还是选择模式

D_KL(p||q) 的期望在 p 下计算:离散情形中,只要某类 pᵢ>0qᵢ=0,正向 KL 与交叉熵就为正无穷。有限 Logit 的数学 Softmax 会给每类正概率,但截断、硬分布或外部概率表仍可能含零。反过来的 D_KL(q||p) 更惩罚 q 把质量放在 p 为零或很低的位置。当 q 的表达能力受限且 p 有分离的多峰时,前者往往更倾向覆盖多个模式,后者可能只选择一个模式;这不是对所有分布和模型都成立的无条件定律。

Perplexity(PPL,困惑度)

PPL 是经典 Autoregressive / Causal Language Model(自回归 / 因果语言模型)在测试 Token 上平均 Negative Log-Likelihood(NLL,负对数似然)的指数;标准 Masked Language Model(掩码语言模型)没有同一套单次从左到右联合似然,因此这个标准 PPL 并不直接适用。只有在理想化的均匀分布里,PPL 才恰好等于“等可能选择数”;一般情况下这只是直觉。

不同 Tokenizer 会改变 Token 数和概率分解,有限上下文模型的 Sliding Window(滑动窗口)与 Stride(滑动步长)也会改变每个 Token 可见的前文,因此跨模型比较至少要统一测试集、分词、上下文和聚合口径。评估时还应指数化未平滑真值 Token 的平均 NLL;带标签平滑、类别权重或其他正则项的训练 Loss 不能不加区分地直接当作 PPL。

PPL=exp ⁣(1Nt=1Nlogq(xtx<t))\operatorname{PPL}=\exp\!\left(-\frac{1}{N}\sum_{t=1}^{N}\log q(x_t\mid x_{<t})\right)

公式默认自然对数;N 是实际计入损失、且每个只计一次的测试 Token 数,不应把 Padding(填充)、仅作上下文或被 Loss Mask(损失掩码)排除的位置混入分子与分母。

04 · REAL MODELS

Softmax 与损失,在真实模型中各做什么

05 · MISCONCEPTIONS

概率数字看起来精确,也可能被误读

“最大 Logit 就是概率”

Logit 没有概率边界。分类排序可直接 argmax,但要解释成分布必须经过 Softmax 或相应链接函数。

“Softmax 最大项一定很可信”

Softmax 对任何有限 Logits 都会归一化,但没有检查输入是否来自训练分布。Guo 等人 2017 年在其图像与文档分类数据集、所测现代神经网络架构上观察到校准问题;高概率不自动等于与实际正确率匹配的置信度,也不能无条件外推到所有模型和分布。

“KL 是一种距离”

KL 非负且相同分布时为 0,但通常不对称,也不满足三角不等式,所以不是严格度量距离。

“交叉熵越低,回答就越安全”

交叉熵只优化训练目标。事实性、安全、偏见和指令遵循仍需专门数据、对齐与评测。

06 · SOURCES

一手资料与继续学习

  1. Deep Learning · Probability and Information Theory — 概率、熵、交叉熵与 KL 基础。
  2. Deep Learning · Machine Learning Basics — 条件分布、最大似然与负对数似然。
  3. PyTorch CrossEntropyLoss 官方文档 — Logits、类别索引与概率目标的工程口径。
  4. PyTorch log_softmax 官方文档 — 分开计算 Softmax 再取对数的数值稳定性问题。
  5. Attention Is All You Need — 缩放点积注意力中的 Softmax。
  6. Language Models are Few-Shot Learners — GPT-3 的自回归语言模型背景。
  7. Distilling the Knowledge in a Neural Network — 温度软化分布与知识蒸馏。
  8. On Calibration of Modern Neural Networks — 分类模型校准与温度缩放的实验边界。
  9. Speech and Language Processing(在线草稿) — 困惑度定义、测试集与 Tokenizer 比较口径。
  10. Hugging Face · Perplexity of Fixed-Length Models — 有限上下文、滑动窗口、步长与有效 Token 计数。

核查日期:2026-07-15。概率、温度梯度与损失图中的数字均以未舍入值、自然对数独立复算;框架行为以当日 PyTorch stable(2.13)官方文档为准,论文结论保留其任务与实验边界。