困惑度

(1 min to read)

定义

困惑度(Perplexity)是评估大语言模型能力的常用指标。给定模型和输入单词序列,困惑度表示模型生成该单词序列的概率。

PPL越低,模型的预测能力越强。

计算方式

PPL(W) = $2^{-\frac{1}{N}\sum_{i=1}^N \log_2P(w_i|w_1,w_2,\dots,w_{i-1})}$

注:2的幂次的取值就是交叉熵,另外有些也会用e的幂次。

比如有输入单词序列"the cat sat",大模型对每个词的预测概率分别为0.5,0.4,0.3,则该序列的困惑度为$2^{-\frac{1}{3}(\log_20.5+\log_20.4+\log_20.3)}\approx 2.45$。直观上说,对于大模型的每次预测,你只需要在前2.45个最优候选词中进行选择。

注:GPT-2的困惑度为19.93

大模型对输入进行一次context推理(对于长文本,还需要考虑模型的最大输入长度问题;另一个小细节是模型会预测下一个token的概率,所以会有1的偏移,因此第一个token的概率是得不到的,要么额外添加一个token,要么统一将第一个token的概率当作1或者忽略),然后按公式计算即可:

1
2
log_prob = -np.sum(np.log2(logits)) / len(logits)
ppl = 2 ** log_prob