3.3 评估语言模型:困惑度
前文说过,我们依据哪个语言模型为测试集分配更高概率来进行评估。更好的模型更善于预测后续词语,因此测试集中的每个词出现时,它都不会那么“惊讶”,也就是会分配更高概率。完美的语言模型能够正确猜出语料库中的每个下一词,为它分配概率 1,并为其他所有词分配概率 0。因此,给定一个测试语料库,更好的语言模型会比更差的模型为它分配更高概率。
不过,实际评估语言模型时通常不直接使用原始概率。原因是测试集(或任何序列)的概率取决于其中的词或词元数量;文本越长,测试集概率就越小。我们需要一种逐词计算、按长度归一化的指标,以便比较不同长度的文本。确实存在这种指标:它是一个称为困惑度(perplexity)的概率函数,既用于评估大语言模型,也用于评估 n 元模型。
语言模型在测试集上的困惑度(有时缩写为 PP 或 PPL),是测试集概率的倒数,再按词(或词元)数量归一化;因此,它有时称为逐词困惑度(per-word perplexity)或逐词元困惑度(per-token perplexity)。我们通过取 次方根,按词数 归一化。对测试集 :
也可以使用链式法则展开 的概率:
请注意,由于式 3.15 中取了倒数,词序列的概率越高,困惑度越低。因此,模型在数据上的困惑度越低,模型就越好。最小化困惑度等价于最大化语言模型为测试集分配的概率。为什么困惑度使用概率的倒数?这是因为困惑度最初由信息论中的交叉熵率定义,而倒数会自然地从该定义中产生;感兴趣的读者可以参阅进阶内容第 3.7 节。现在只需记住,困惑度与概率成反比。
测试集 的具体困惑度计算方式取决于使用哪种语言模型。使用一元语言模型时,困惑度就是一元概率倒数的几何平均数:
使用二元语言模型计算 的困惑度时,仍然取几何平均数,不过改为二元概率的倒数:
式 3.15 或式 3.17 中的词序列通常是某个测试集中的完整词序列。它会跨越许多句子边界。如果词表包含句间词元 <EOS>,或者分别包含句首、句末标记 <s> 和 </s>,就可以把它们纳入概率计算;此时,总词元数 还需要为每个句子增加一个词元。[2]
前文提到,困惑度同时是文本和语言模型的函数:给定文本 ,不同语言模型具有不同困惑度。因此,可以用困惑度比较不同语言模型。例如,我们在《华尔街日报》(Wall Street Journal,WSJ)的 3800 万词上训练一元、二元和三元模型,再分别使用式 3.16、式 3.17 和对应的三元公式,在一个 WSJ 测试集上计算各模型的困惑度。下表给出每个语言模型在含 150 万词的测试集上的困惑度。
| 一元模型 | 二元模型 | 三元模型 | |
| 困惑度 | 962 | 170 | 109 |
如表所示,n 元语法提供的词序列信息越多,它为字符串分配的概率越高。三元模型比一元模型更不容易“惊讶”,因为它更清楚哪些词可能接着出现,从而为这些词分配更高概率。而概率越高,困惑度越低,因为式 3.15 表明,困惑度与模型分配给测试序列的概率成反比。因此,更低的困惑度说明语言模型能更好地预测测试集。
计算困惑度时,语言模型不得知道测试集的任何信息,否则困惑度会人为偏低。只有使用完全相同词表的两个语言模型,其困惑度才可以比较。
困惑度的(内在)改进并不能保证语音识别或机器翻译等语言处理任务的(外在)性能也会提高。不过,困惑度通常与任务改进相关,因此常被用作方便的评估指标。只要条件允许,模型的困惑度改进仍应当通过真实任务上的端到端评估来确认。
3.3.1 把困惑度理解为加权平均分支因子¶
困惑度还可以理解为一种语言的加权平均分支因子(weighted average branching factor)。语言的分支因子(branching factor)是任意词后面可能出现的下一词数量。例如,考虑一个没有概率、任意词后都可以跟任意词的微型人工语言,其词表只包含三种颜色:
这门语言的分支因子是 3。
现在创建同一个语言模型的概率版本 A,其中每个词跟随其他词的概率相等(它在三种颜色计数相同的训练集上训练),测试集为 “red red red red blue”。
首先验证:在这个测试集(或任何类似测试集)上计算人工颜色语言的困惑度,确实得到 3。依据式 3.15,A 在 T 上的困惑度是:
再假设 red 在另一个语言模型 B 的训练集中很常见,因此 B 具有如下概率:
语言模型 B 在同一个测试集 red red red red blue 上的困惑度应当更低,因为下一种颜色大多数时候都是 red,而 red 很容易预测,即概率很高。因此,测试集概率更高;又因为困惑度与概率成反比,困惑度会更低。于是,尽管分支因子仍为 3,困惑度或加权分支因子却更小:
例如,如果同时使用句首和句末词元,那么在计算 时应计入句末标记
</s>,但不计入句首标记<s>;这是因为句末词元后面几乎总是以概率 1 紧接着句首词元,我们不希望这一虚假转移的概率影响困惑度。