困惑度 Perplexity 是什么?为什么不能只用它评估大模型?
简化版
困惑度(Perplexity, PPL)是平均 token 负对数似然的指数,越低表示模型对评测文本赋予的概率越高、语言建模越好。它适合评估同一数据、同一 Tokenizer、同一计算口径下的语言建模能力,但不能直接衡量事实正确、指令遵循、推理、安全或用户偏好,也不宜跨不同 Tokenizer 生硬比较。简要说:PPL 回答”模型多会预测这批 token”,不是”回答得多正确”。
详细版
对长度 N 的 token 序列:
NLL = −(1/N) × Σ log p(x_i | x_<i) (平均负对数似然)
PPL = exp(NLL)
PPL 越低,模型越能预测该分布的下一个 token。但它受语料领域、分词粒度、上下文截断、是否忽略特殊 token、滑动窗口方式影响。对聊天模型,较低 PPL 不保证回答更有帮助——指令微调和安全对齐可能改变输出概率却不一定改善通用语料 PPL。
完整版教学
一、困惑度从哪来(带数字)
语言模型训练最小化交叉熵(正确下一个 token 的负对数概率),对整段评测文本求平均再取指数就是 PPL:
若自然对数下平均 NLL = 2
则 PPL = e² ≈ 7.39
直觉:模型对"下一个 token"平均有约 7.4 种"等概率候选"在犹豫
注意:这是在当前 Tokenization 下的平均不确定程度,不是模型真实的候选词数量。PPL 越低 → 越确定 → 语言建模越好。
二、为什么 Tokenizer 影响可比性(关键)
这是高频考点。同简要说,不同 tokenizer 切出的 token 数不同:
"internationalization"
Tokenizer A:1 个 token → 只算 1 次概率
Tokenizer B:5 个 subword → 算 5 次概率
PPL 按 token 平均,token 数和概率事件都变了
→ 不同词表模型的原始 PPL 通常【不可直接排名】
若必须跨 Tokenizer 比,用按字节/字符归一化的 Bits-per-Byte(BPB) 等口径,消除分词单位的影响。
三、计算细节:一个位置只计一次分
长文本超过上下文窗口时,计算方式影响结果:
✗ 直接切成互不相连的块 → 每块开头的 token 缺前文 → 损失被抬高、PPL 虚高
✓ 滑动窗口 → 提供更多历史,但要保证【每个 token 只计分一次】(否则重复计分)
Padding、BOS、EOS、系统模板是否参与损失也必须统一——口径不一致,PPL 不可比。
四、PPL 测不到什么(核心局限)
模型可以很会预测网页语言(低 PPL)→ 但重复网页里的错误观点(事实错)
模型可以低 PPL → 但不遵守用户格式、不会调工具、产生有害内容
生成任务受解码策略影响,而 PPL 通常在【教师强制】条件下计算(喂真实前文)
所以 PPL 和「实际生成质量」之间有系统性鸿沟——它测「预测能力」,不测「回答能力」。
五、PPL 的正确用法
它有明确适用场景:比较同一模型家族的预训练进展、领域适配、压缩(量化/剪枝)损失——这些都在同数据同 tokenizer 下。上线评估要补:任务成功率、事实性、校准、安全、延迟、人工偏好,并报告评测语料和 Tokenizer。
六、常见误区与追问
- 误区:PPL 低就是好模型。 只代表语言建模强,不保证有用/正确/安全/守指令。
- 误区:不同模型的 PPL 可以直接排名。 Tokenizer 不同则 token 数和概率事件不同,不可直接比,要用 BPB。
- 误区:聊天模型 PPL 越低越好。 指令微调/对齐可能升高通用语料 PPL 却让回答更好,二者不划等号。
- 误区:长文本直接切块算 PPL 就行。 块首缺前文会抬高损失,要滑动窗口且每 token 只计一次。
- 追问:PPL 和交叉熵什么关系? PPL = exp(平均负对数似然),NLL=2 则 PPL=e²≈7.39。
- 追问:为什么 Tokenizer 影响 PPL 比较? 按 token 平均,分词粒度改变概率事件和序列长度,不同词表不可直接排名。
- 追问:PPL 测不到什么? 事实正确、指令遵循、推理、安全、生成质量(它在教师强制下测预测能力)。
- 追问:PPL 适合干什么? 同数据同 tokenizer 下比预训练进展、领域适配、压缩损失。
七、加强记忆
困惑度记「模型多会预测这批 token,不是回答得多正确」:PPL = exp(平均 NLL),越低语言建模越好(NLL=2→PPL≈7.39)。核心局限钉死:测不到事实/指令/推理/安全/生成质量(在教师强制下算)、不同 Tokenizer 不可直接比(要用 Bits-per-Byte)、长文本要滑动窗口且每 token 只计一次。正确用法是同数据同 tokenizer 下比预训练进展/领域适配/压缩损失;上线评估必须补任务成功率、事实性、安全、人工偏好。