我们可以从多个维度评估语言模型,例如预测未见过文本准确性(accuracy),或在问答、翻译等具体任务上的表现,或其他因素如推理速度、能耗、公平性等。 我们将在接下来的三节中逐一探讨这些评估维度。

7.6.1 困惑度(Perplexity)

正如我们在第 3 章首次提到的,评估语言模型的一种方法是衡量其预测未见文本的能力。 一个更好的语言模型能更准确地预测后续词元,因此当测试集中出现某个词时,它会赋予该词更高的概率(即“更不惊讶”)。

若要判断两个语言模型中哪一个对某段文本建模得更好,只需比较它们对该文本分配的概率高低;实践中,由于我们通常在对数空间处理概率,因此更常见的是比较对数似然(log likelihood)的大小。

我们一直在讨论逐词预测,即根据前面的上下文计算下一个词元 $w_i$ 的条件概率:$P(w_i \mid w_{< i})$。 但正如第 3 章所述,利用链式法则(chain rule),我们可以将单个词元的预测概率扩展为整段文本的概率:

$$ \begin{align*} P(w_{1:n}) &= P(w_1)P(w_2|w_1)P(w_3|w_{1:2}) \cdots P(w_n|w_{1:n−1}) \\ &= \prod_{i=1}^n P(w_i|w_{< i}) \tag{7.8} \end{align*} $$

因此,一段文本的概率可以通过将其每个词元的条件概率相乘得到。 该文本的(对数)似然值是一个有用的指标,可用于比较两个语言模型在该文本上的优劣:

$$ \log \text{likelihood}(w_{1:n}) = \log \prod_{i=1}^n P(w_i|w_{< i}) \tag{7.9} $$

然而,我们通常使用困惑度(perplexity)而非对数似然来评估语言模型。 原因在于:一段测试集(或任意序列)的概率与其包含的词元数量密切相关。 事实上,文本越长,其整体概率就越小——从链式法则可以看出,随着相乘的项数增加,而每一项概率都小于 1,最终乘积会越来越小。 因此,我们需要一个按词元归一化、与长度无关的指标,以便公平比较不同长度的文本。

概率的函数困惑度正是这样一种长度归一化的评估指标。 回顾第 45 页的内容,模型 $\theta$ 在未见测试集上的困惑度,定义为该模型赋予测试集概率的倒数,并按测试集的词元总数进行归一化。 对于包含 $n$ 个词元的测试集 $w_{1:n}$,其困惑度为:

$$ \begin{align*} \text{Perplexity}_{\theta}(w_{1:n}) &= P_{\theta}(w_{1:n})^{-\frac{1}{n}} \\ &= \sqrt[n]{\frac{1}{P_{\theta}(w_{1:n})}} \tag{7.10} \end{align*} $$

为了直观理解困惑度如何由语言模型对每个新词的预测概率计算得出,我们可以将链式法则代入上式:

$$ \text{Perplexity}_{\theta}(w_{1:n}) = \sqrt[n]{\prod_{i=1}^n \frac{1}{P_{\theta}(w_i|w_{< i})}} \tag{7.11} $$

注意:由于公式 7.10 中包含倒数,因此文本序列的概率越高,困惑度就越低。 也就是说,模型在数据上的困惑度越低,模型就越好。 最小化困惑度等价于最大化语言模型对测试集的概率。 那么,为什么困惑度要使用概率的倒数?这一形式源于信息论中交叉熵率(cross-entropy rate)对困惑度的原始定义;对此感兴趣的读者可参阅第 3.7 节。 目前我们只需记住:困惑度与概率呈反比关系。

一个需要注意的问题:由于困惑度依赖于文本中的词元数量 $n$,它对词元化算法(tokenization)的差异极为敏感。 这意味着,如果两个语言模型使用了截然不同的词元化器,就很难直接比较它们的困惑度数值。 因此,困惑度最适用于使用相同分词器的语言模型之间的比较。

7.6.2 下游任务:推理与世界知识

困惑度衡量的是一种特定类型的准确性——即预测词元的准确性。 但语言模型的能力远不止于此,我们还关心它在其他任务上的表现。 对于每一个我们希望语言模型执行的下游任务(如下游问答、机器翻译或逻辑推理),都可以设计专门的评估指标来衡量其在该任务上的准确率。 我们将在后续章节中更详细地讨论这些面向具体任务的评估方法:第 12 章讨论机器翻译,第 11 章讨论信息检索,第 15 章讨论语音识别。

在此,我们简要介绍其中一种评估机制:通过多项选择题来衡量模型回答问题的准确性。 这类评估常用的数据集是 MMLU(Massive Multitask Language Understanding,大规模多任务语言理解)。 该数据集包含 15,908 道涵盖 57 个领域的知识与推理题目,领域包括医学、数学、计算机科学、法律等。 模型在这些多项选择题上的准确率,可作为其推理能力和事实性知识掌握程度的有效指标。

例如,下面是一道来自 MMLU 微观经济学领域的题目:1

MMLU 微观经济学示例

政府之所以反对并监管垄断的原因之一是:

(A) 生产者剩余减少而消费者剩余增加。
(B) 垄断价格确保了生产效率,但牺牲了社会的配置效率。
(C) 垄断企业不进行重要的研发活动。
(D) 消费者剩余因价格更高、产量更低而受损。

图 7.16 展示了 MMLU 如何将这类问题转化为对语言模型的提示测试。 图中展示的是一个包含两个示例(2-shot)的提示模板:

MMLU 数学题提示示例

以下是一些关于高中数学的多项选择题。

从 25 到 100(含)一共有多少个整数?
(A) 75 (B) 76 (C) 22 (D) 23
答案:B

计算 $i + i^2 + i^3 + \cdots + i^{258} + i^{259}$。
(A) -1 (B) 1 (C) i (D) -i
答案:A

如果 4 daps = 7 yaps,且 5 yaps = 3 baps,那么多少 daps 等于 42 baps?
(A) 28 (B) 21 (C) 40 (D) 30
答案:

图 7.16 MMLU 中用于测试高中数学能力的 2-shot 提示示例。(正确答案为 (C))

然而,将 MMLU 表现作为语言模型质量的评估指标也存在一个问题——这也是所有基于公开数据集的评估所共有的问题:数据污染(data contamination)。 所谓数据污染,是指用于测试的数据集(任何类型的测试集)的部分内容意外混入了模型的训练数据中。 例如,由于大语言模型通常在互联网上进行训练,而 MMLU 数据集本身也存在于网络上,模型很可能在训练过程中“见过”某些 MMLU 题目。 如果这些题目又被用于评估,就会导致模型性能被高估。 缓解数据污染的一种方法是:公开模型所使用的完整训练数据,或者至少报告模型训练数据与特定测试集之间的重叠情况(Zhang 等,2025)。

7.6.3 评估语言模型的其他因素

准确性并非我们评估模型时唯一关心的指标(Dodge 等,2019;Ethayarajh 和 Jurafsky,2020 等)。 例如,我们通常还会关注模型的规模、训练耗时以及推理速度。 在实际应用中,我们往往面临时间或内存的限制——因为运行模型的 GPU 具有固定的显存容量。 此外,更大的模型通常消耗更多能源,而我们更倾向于使用能耗更低的模型,这既有助于减少对环境的影响,也能降低模型开发和部署的经济成本。 为了将这些因素纳入评估,我们可以采用在给定计算资源或内存预算下归一化的性能指标。 我们也可以直接测量模型的能耗,例如以千瓦时(kWh)或二氧化碳排放量(千克 CO₂)为单位进行量化(Strubell 等,2019;Henderson 等,2020;Liang 等,2023)。

另一个可通过评估衡量的重要特性是公平性(fairness)。 我们知道,语言模型存在偏见:它们可能表现出性别或种族刻板印象,或在处理某些人口群体相关的语言时表现明显下降。 目前已有多个基准测试专门用于衡量这些偏见的强度,例如 StereoSet(Nadeem 等,2021)、RealToxicityPrompts(Gehman 等,2020)和 BBQ(Parrish 等,2022)等。 我们还希望语言模型对不同群体的表现是公平一致的。 例如,可以采用一种符合罗尔斯(Rawlsian)正义原则的评估方式:最大化处境最不利群体的效用(Rawls, 2001;Hashimoto 等,2018;Sagawa 等,2020)。

最后,还有许多综合性的评估平台和排行榜,如 Dynabench(Kiela 等,2021)以及通用评估框架 HELM(Liang 等,2023)。 我们将在后续章节中再次讨论这些工具,届时会结合具体任务(如问答和信息检索)介绍相应的评估指标。


  1. 如果你不了解经济学,答案是 (D)。 ↩︎