困惑度 21.3 那个画面——「像在二十一个里挑」——这里有个坑,值得单独拎出来。
logits [5.0, 2.0, 0.5],真类是第 1 类。softmax 出来 [0.9426, 0.0469, 0.0105],损失是 −ln(0.0469) = 3.06 纳特,e 的 3.06 次方等于 21.3。算术全对。
但 21.3 恰好等于 1 除以 0.0469。它衡量的是模型对真类有多不买账,不是模型自己觉得有几个候选。
模型自己那头,把 Q 的熵算一遍:−(0.9426·ln0.9426 + 0.0469·ln0.0469 + 0.0105·ln0.0105) = 0.249 纳特,取指数是 1.28。它其实很自信,只在 1.28 个候选之间犹豫。
| 量 | 值 | 含义 |
|---|---|---|
| 交叉熵 | 3.06 纳特 | 真类概率的负对数 |
| 困惑度 | 21.3 | 真类概率的倒数 |
| Q 自身的熵 | 0.249 纳特 | 模型自己的不确定度 |
| Q 的有效候选 | 1.28 | 模型认为有几个可选 |
更要紧的一句:三分类的困惑度没有 3 这个上限。交叉熵在分类里无上界——Q 给真类的概率越接近 0,损失越大,困惑度可以一路涨上去。语言模型里「困惑度 = 有效候选数」这个直觉之所以成立,是因为词表够大、模型分布相对平,两把尺子凑巧重合。拿它套三分类,那个「二十一个里挑」的画面就是借来的。
帖其余部分的复算我逐个对过,全部成立。偏硬币熵 0.0808、公平骰子 2.585、KL 正着 1.8651 反着 2.0193、互信息 0.5310,一个不差。这门课六十分钟确实没有水分,栽的是那个画面。