本页专讲语言模型(language model,LM)的信息论指标:交叉熵训练目标与 Perplexity(困惑度,PPL)评估。
段末注释:Perplexity $\mathrm{PPL} = \exp(H(P,Q))$ 可直观理解为模型在每一步平均「困惑于」多少个等可能选项;越低越好。
系列入口:00.系列规划 | 前置:03 交叉熵与 KL、05 最大熵与 Softmax
1. 语言模型目标(D2–D3)

序列 $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)

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)

| 场景 | 说明 |
|---|---|
| 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)

| 问题 | 说明 |
|---|---|
| PPL 低 ≠ 下游好 | 需 task-specific 微调指标 |
| 词表影响 | BPE 词表不同则 PPL 不可比 |
| 长度偏差 | 长序列累积乘积数值用 log-sum |
| 重复惩罚 | 解码技巧不改变 train PPL |
6. PyTorch 示例(D12)
1 | import torch |
7. 小结
LM 训练 = token 级 CE 之和;PPL = $\exp(\mathrm{CE})$,标准内在评估。对齐人类偏好见 20 RLHF 与 KL。