Math-05.信息论-10.语言模型与Perplexity

本页专讲语言模型(language model,LM)的信息论指标:交叉熵训练目标与 Perplexity(困惑度,PPL)评估。

段末注释Perplexity $\mathrm{PPL} = \exp(H(P,Q))$ 可直观理解为模型在每一步平均「困惑于」多少个等可能选项;越低越好。

系列入口00.系列规划 | 前置:03 交叉熵与 KL05 最大熵与 Softmax


1. 语言模型目标(D2–D3)

图 1 next-token 预测

序列 $x = (x_1,\ldots,x_T)$,模型 $p_\theta$ 分解:

$$
p_\theta(x) = \prod_{t=1}^T p_\theta(x_t \mid x_{<t})
$$

训练损失(平均 NLL / CE):

$$
\mathcal{L} = -\frac{1}{T}\sum_{t=1}^T \log p_\theta(x_t \mid x_{<t})
$$

03 CE/KL 一致:每步 $K=|V|$ 类分类,$V$ 为词表。


2. Perplexity(D3)

图 2 PPL 与 CE 的关系

Perplexity

$$
\mathrm{PPL} = \exp(\mathcal{L}) = \exp\left(-\frac{1}{T}\sum_t \log p_\theta(x_t \mid x_{<t})\right)
= \left(\prod_t p_\theta(x_t \mid x_{<t})\right)^{-1/T}
$$

解读 说明
$\mathrm{PPL} = K$ 相当于在 $K$ 类上均匀随机猜
$\mathrm{PPL} = 1$ 完美预测(概率全 1)
越低越好 模型对 test 序列赋予更高概率

比特/字符(BPC):$\mathcal{L}/\ln 2$(以 bit 为单位的信息量)。


3. 评估注意(D7)

图 3 LM 评估场景

场景 说明
GPT 类因果 LM 仅预测下一 token;PPL 在 test 集算
BERT 类 MLM 掩码位置 CE;PPL 定义需约定(非标准可比 GPT)
蛋白 LM(ESM) 氨基酸词表;PPL 评估序列似然
酶+底物双模态 各支路或联合 NLL;见 酶功能大模型
对比 baseline 报告 $

不要在训练集上报 PPL 作泛化结论;与 Math-08 泛化 交叉验证一致。


4. Label Smoothing 与 PPL(D6)

平滑标签 $p_k = (1-\varepsilon)\delta_{y,k} + \varepsilon/|V|$ 会人为提高训练 CE 下界,PPL 与未平滑模型不可直接比。评估时通常关闭 dropout、用相同 tokenization。


5. 局限(D8)

图 4 局限

问题 说明
PPL 低 ≠ 下游好 需 task-specific 微调指标
词表影响 BPE 词表不同则 PPL 不可比
长度偏差 长序列累积乘积数值用 log-sum
重复惩罚 解码技巧不改变 train PPL

6. PyTorch 示例(D12)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import torch
import torch.nn.functional as F
import math

# 模拟:T=5, vocab=1000
T, V = 5, 1000
logits = torch.randn(T, V)
targets = torch.randint(0, V, (T,))

log_probs = F.log_softmax(logits, dim=-1)
nll = F.nll_loss(log_probs, targets, reduction="mean")
ppl = math.exp(nll.item())
print(f"CE (nat): {nll.item():.3f}, PPL: {ppl:.1f}")
print(f"Random baseline PPL: {V}")

7. 小结

LM 训练 = token 级 CE 之和PPL = $\exp(\mathrm{CE})$,标准内在评估。对齐人类偏好见 20 RLHF 与 KL

系列导航03 CE/KL | 20 RLHF

-------------本文结束感谢您的阅读-------------