相同信息,不同尺度 | AI生成和翻译

Home 2026.06

是的,没错。

PPL = exp(L),其中 L 是交叉熵损失——它们本质相同,只是尺度不同。

import torch
import torch.nn.functional as F

logits = torch.randn(8, 512, 50257)   # (batch, seq_len, vocab)
targets = torch.randint(0, 50257, (8, 512))

loss = F.cross_entropy(logits.view(-1, 50257), targets.view(-1))
ppl  = torch.exp(loss)

print(f"loss={loss:.4f}  ppl={ppl:.1f}")
# loss=10.8239  ppl=50257.0  ← 随机初始化 → ppl ≈ vocab_size ✓

关系是精确的:

L   = -1/N · Σ log P(xᵢ | x<ᵢ)    # nats(自然对数)
PPL = exp(L)

因此:

L (loss) PPL 含义
ln(50257) ≈ 10.82 ~50257 随机模型
3.0 ~20 GPT-2 small 在 WebText 上
1.5 ~4.5 强模型
0.0 1.0 完美/记忆

为什么同一事物有两个名称?

在你的 nanoGPT 训练循环中,你已经在最小化 PPL —— 只是你看到的是 loss。两种方式都记录一下:

print(f"iter {step} | loss {loss.item():.4f} | ppl {torch.exp(loss).item():.1f}")

在你用 MI300X 运行 GPT-2 760M 的实验中:当前验证损失稳定在多少?在 OpenWebText 上完成完整训练后,应该在 2.85–3.1 左右。


Back Donate