困惑度(Perplexity)-不再困惑

自然语言处理中模型的困惑度(Perplexity)是一个看起来容易理解,实际容易让人困惑的指标。在相关的教材中,我们最常见到的关于困惑度的定义是这样的:

PP(W)=P_{model}(w_{1}w_{2},....w_{N})^{-\frac{1}{N}} ---【式0】

W 一般被理解为一个由长度为 n 的单词序列 w_{1}w_{2}...w_{N} 构成的句子。 P_{model}(x) 是模型赋予句子 x 的概率。为什么会是这个样子的?指数部分为啥还有一个负号?一个句子的困惑度怎么来评估一个语言模型优劣?。

本文试图从困惑度的数学定义、极大对数似然、交叉熵的角度来理解【式0】。

最后我们得到一个结论:

【式0】的定义假设语言模型是Uni-Gram的:句子中的单词是独立产生的,和上下文无关。

困惑度的数学定义

我们先来看困惑度的数学定义:分布 P(X) 的“困惑度”的定义:

PP(P) := 2^{H(P)} = 2^{-\sum_{x}^{}{}P(x) log_{2}P(x)} = \prod_{x}^{}P(x)^{-P(x)}

其中 H(P) 是分布的熵。指数的底数也不一定是2,可以是任何常数,例如 e 。但需要和熵对数保持一致。

自然语言中的困惑度

为了衡量一个语言模型的性能,我们首先会对语言的真实分布采样得到一个样本的集合,也称为语料库(Corpora)。注意:这里我们已经得到了两个分布:一个是样本代表的经验分布,另外一个是我们要学习的模型分布 P_{model}

语言模型的对数似然

按极大似然的原理,模型需要给这些样本赋予最大的概率:

P_{model}(X,\theta) 。式中 \theta 表示我们需要学习的关于 P_{model} 的众多参数。 X 表示样本的集合。假定样本集合中的句子是相互独立的,我们可以得到:

P_{model}(X,\theta)=\prod_{x\in X}^{}{P_{model}(x,\theta)} ---【式1】

为了方便计算,对【式1】两边同时取自然对数,得到 对数似然(Log Likelihood) 。对数似然也是一种衡量模型优劣的指标。相比于【式1】中的乘法,对数似然中的加法在求解梯度(导数)和防止计算溢出方面都有优势。

logP_{model}(X,\theta)=\sum_{x\in X}^{}{logP_{model}(x,\theta)} ---【式2】

负对数似然的均值-从经验分布到模型分布的交叉熵

【式2】是定义在样本集 X 上的,为了便于在不同的样本集之间进行比较,我们可以模型对数似然的平均值:

\frac{1}{N}\sum_{x\in X}^{}{logP_{model}(x,\theta)} N 可以是样本集中句子的个数,也可以是样本集中所有句子的总长度(以单词为单位)

另外一个自然的操作就是增加一个负号,得到负对数似然,这就和熵一致了。

\frac{1}{N}\sum_{x\in X}^{}{-logP_{model}(x,\theta)} ---【式3】

更近一步,如果我们把 \frac{1}{N} 看作含有N个样本的经验分布的概率密度,【式3】就可以被看作是从经验分布到模型分布的交叉熵。

根据困惑度就是熵的指数的定义,我们如果取交叉熵【式3】的指数会得到:

e^{\frac{1}{N}\sum_{x\in X}^{}{-logP_{model}(x,\theta)}}=(\prod_{x\in X}^{}{P_{model}(x)})^{-\frac{1}{N}} ---【式4】,

注: 为了简化,上式中我们去掉了参数 \theta ,这并不影响接下来的推导。

对比【式4】和【式0】,为了获得【式0】中关于困惑度的定义,我们要求:

\prod_{x\in X}^{}{P_{model}(x)}=P_{model}(w_{1}w_{2}...w_{n})

合理的解释:

x 表示的是一个单词, X 是单词的集合。

句子 w_{1}w_{2}...w_{n} 的产生过程:从模型连续抽样 n 个单词,单词和单词之间是相互独立的,单词 w_{i} 被抽中的概率是 P_{model}(w_{i})

因此模型是uni-Gram的。

总结:

根据困惑度的数学定义:熵的指数。语言模型的困惑度可以自然地被定义为“从经验分布到模型分布的交叉熵的指数“ 如【式4】所示:

e^{\frac{1}{N}\sum_{x\in X}^{}{-logP_{model}(x,\theta)}}=(\prod_{x\in X}^{}{P_{model}(x)})^{-\frac{1}{N}}

针对自然语言模型而言

x :句子,一个样本

X :句子的集合,语料库

N :语料库中句子的总数

发布于 2023-05-16 16:46 ・IP 属地山东