543 字
3 分钟
困惑度Perplexity
这一块偏向nlp的数学基础部分
困惑度的定义
困惑度(perplexity)本质上是 熵或交叉熵 的指数化。它把“平均编码长度”这种对数尺度的量,变成“等效候选数”这种更直观的线性尺度。
回顾一下熵的定义,对于一个分布 ,其熵为 。熵的指数化就是困惑度:
再回顾一下交叉熵的定义,对于两个分布 和 ,其交叉熵为 。交叉熵的指数化就是困惑度:
直观理解困惑度
对于一个语言模型来说,他会给出下一个词的概率分布,记作这里的 ,而这个词的真实分布记作 ( 延续前文的one-hot分布),用e作为底数。用 表示该位置的真实词,困惑度可以写成:
-
模型给真实词的概率越低,困惑度越高。
-
困惑度可以理解为模型在预测下一个词时在多少个候选词之间进行选择。困惑度越低,说明模型的预测越准确,模型对语言的理解能力越强。
以一个具体的计算来说明,假设有一个性能非常弱的小小小模型,我们喂给它的训练数据只有两条:
1. "I love Alice"2. "I love Bob"对于这个模型来说,它在预测下一个词时,可能会给出以下概率分布:
P(love | "I ") = 1.0P("Alice"| "I love ") = 0.5P("Bob"| "I love ") = 0.5初始上下文都是 “I” 对于两个句子,可以计算在预测时每个位置上面的困惑度:
句子 1:I love Alice
| 位置 | 上下文 | 真实下一个词 | 模型给的概率 | 负对数似然 | 该位置困惑度 |
|---|---|---|---|---|---|
| 1 | I | love | 1.0 | ||
| 2 | I love | Alice | 0.5 |
句子 2:I love Bob
| 位置 | 上下文 | 真实下一个词 | 模型给的概率 | 负对数似然 | 该位置困惑度 |
|---|---|---|---|---|---|
| 1 | I | love | 1.0 | ||
| 2 | I love | Bob | 0.5 |