Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

4.11 统计显著性检验

构建系统时经常需要比较两个系统的性能。怎样知道新系统是否优于旧系统,或优于文献中的其他系统?这是统计假设检验(statistical hypothesis testing)所研究的问题。本节将介绍 NLP 分类器的统计显著性检验,主要参考 Dror et al.(2020)和 Berg-Kirkpatrick et al.(2012)。

假设用 F1F_1 或正确率等指标 MM 比较分类器 A 和 B。例如,要判断新的情感分类器 A 在测试集 xx 上的 F1F_1 是否高于旧分类器 B。用 M(A,x)M(A,x) 表示系统 A 在 xx 上的得分,并将 A 与 B 的性能差定义为:

δ(x)=M(A,x)M(B,x)(4.45)\delta(x)=M(A,x)-M(B,x)\tag{4.45}

我们想知道 δ(x)>0\delta(x)>0 是否成立,即 A 的 F1F_1 是否更高。δ(x)\delta(x) 称为效应量(effect size):值大说明 A 看起来比 B 好很多,值小说明只好一点。

为什么不能只检查 δ(x)\delta(x) 是否为正?假设 A 的 F1F_1 比 B 高 .04,也不能断定 A 更好,因为 A 可能只是在这个特定测试集上偶然占优。我们还要知道,换一个测试集 xx' 或其他条件后,A 相对 B 的优势是否很可能再次出现。

统计假设检验用两个假设将其形式化:

H0:δ(x)0H1:δ(x)>0(4.46)\begin{array}{l}H_0:\delta(x)\le0\\H_1:\delta(x)>0\end{array}\tag{4.46}

H0H_0 称为零假设(null hypothesis),假定 δ(x)\delta(x) 实际为负或为零,即 A 并不优于 B。我们希望判断能否有把握地排除它,转而支持“A 更好”的 H1H_1

令随机变量 XX 遍历所有测试集。然后问:若零假设 H0H_0 正确,把实验重复许多次时,观察到当前 δ(x)\delta(x) 或更大值的可能性有多高?这个可能性由 p 值(p-value)形式化:

P(δ(X)δ(x)H0 为真)(4.47)P(\delta(X)\ge\delta(x)\mid H_0\text{ 为真})\tag{4.47}

也就是说,p 值是在“A 不优于 B”的假设下观察到当前差异的概率。若 δ(x)\delta(x) 极大(例如 A 的 F1=.9F_1=.9,B 仅为 .2),在 H0H_0 为真时便很不寻常,p 值会很低;若 δ(x)\delta(x) 很小,即使 H0H_0 为真也不足为奇,p 值就会较高。

很小的 p 值意味着观测差异在零假设下极不可能出现,因此可以拒绝零假设。常用阈值为 .05 或 .01。例如阈值 .01 表示:若在 H0H_0 为真时观察到当前差异的概率小于 .01,就拒绝 H0H_0,认为 A 的确优于 B。当观测差异的概率低于阈值、因而拒绝零假设时,就称结果具有统计显著性(statistical significance)。

如何计算 p 值?NLP 通常不用 t 检验或 ANOVA 等简单的参数检验,因为它们对检验统计量分布所作的假设(如正态性)通常并不成立。NLP 更常使用基于采样的非参数检验(non-parametric tests),人为构造许多实验设置的版本。如果有大量不同测试集 xx',就可以测量每个 δ(x)\delta(x'),得到一个分布。设阈值为 .01;若分布中至少 99% 的差异小于当前观测差异,即出现如此大 δ(x)\delta(x) 的概率小于 .01,就可拒绝零假设,认为 A 确实优于 B。

NLP 常用两种非参数检验:近似随机化检验(approximate randomization;Noreen, 1989)和自助法检验(bootstrap test)。下面介绍最常见的配对自助法。配对检验(paired test)比较两组对齐的观测,每组中的一个观测都能与另一组中的观测配对。比较两个系统在同一测试集上的表现时自然满足这一点:系统 A 在单个样本 xix_i 上的表现可与系统 B 在同一 xix_i 上的表现配对。

4.11.1 配对自助法检验

自助法检验(bootstrap test;Efron and Tibshirani, 1993)适用于准确率、召回率、F1F_1,乃至机器翻译中的 BLEU 等任何指标。自助采样(bootstrapping)是从原始集合中反复进行大量有放回采样,所得样本称为自助样本。其直觉是:可以从一个已观测的测试集中反复采样,创建许多虚拟测试集。该方法只假设样本能够代表总体。

考虑一个很小的文本分类例子,测试集 xx 只有 10 篇文档。图 4.11 第一行展示分类器 A 和 B 的结果。每篇文档有四种情形:两者都正确、都错误、A 对 B 错,或 A 错 B 对。若简单地以正确率为指标,A 的正确率为 .70,B 为 .50,因此 δ(x)=.20\delta(x)=.20

随后创建大量(例如 105 个)大小均为 n=10n=10 的虚拟测试集 x(i)x^{(i)}。创建每个虚拟测试集时,从原测试集 xx 中进行 nn 次有放回抽样,每次抽取一篇文档及其金标准标签和两个分类器的判断结果。

有了 bb 个测试集形成的采样分布,就可以统计 A 偶然占优的频率。以下采用 Berg-Kirkpatrick et al.(2012)的版本。在 H0H_0(A 不优于 B)下,许多测试集上的 δ(X)\delta(X) 期望应为零或负数,远高于零便很反常。

1

2

3

4

5

6

7

8

9

10

A%

B%

δ()\delta()

xx

原始测试集中的配对结果

.70

.50

.20

x(1)x^{(1)}

第一次有放回采样结果

.60

.60

.00

x(2)x^{(2)}

第二次有放回采样结果

.60

.70

-.10

x(b)x^{(b)}

图 4.11 配对自助法检验:从真实测试集 xx 创建 bb 个伪测试集 x(i)x^{(i)}。每个伪测试集由 n=10n=10 次有放回抽样生成;每个样本是一篇带金标准标签以及 A、B 正误结果的文档。真实测试集当然不会只有 10 个样本,bb 也需要足够大。

若直接从均值为零的分布采样,p 值可统计 δ(x(i))\delta(x^{(i)}) 超过零达观测差异 δ(x)\delta(x) 的频率。但自助样本取自原测试集 xx,而该测试集本身已经偏向 A(这里偏差为 .20),所以样本分布的期望不是零。要衡量观测到的 δ(x)\delta(x) 有多反常,应统计 δ(x(i))\delta(x^{(i)}) 超过其期望 δ(x)\delta(x) 达到另一个 δ(x)\delta(x) 的频率:

p-value(x)=1bi=1b1(δ(x(i))δ(x)δ(x))=1bi=1b1(δ(x(i))2δ(x))(4.48)\begin{array}{l}\text{p-value}(x)=\frac1b\sum_{i=1}^b\mathbb1(\delta(x^{(i)})-\delta(x)\ge\delta(x))\\=\frac1b\sum_{i=1}^b\mathbb1(\delta(x^{(i)})\ge2\delta(x))\end{array}\tag{4.48}

其中 1(q)\mathbb1(q) 在命题 qq 为真时取 1,否则取 0。假设有 10,000 个自助测试集,阈值为 .01;若仅 47 个测试集满足 δ(x(i))2δ(x)\delta(x^{(i)})\ge2\delta(x),则 p 值为 .0047,小于 .01。这说明观测到的差异不太可能由偶然造成,可以拒绝零假设并认为 A 优于 B。

function BOOTSTRAP(test set x, num of samples b) returns p-value(x) Calculate $\delta(x)$ s = 0 for i = 1 to b do for j = 1 to n do Select a member of x at random and add it to $x^{(i)}$ Calculate $\delta(x^{(i)})$ $s\leftarrow s+1$ if $\delta(x^{(i)})\ge2\delta(x)$ p-value$(x)\approx s/b$ return p-value$(x)$

图 4.12 依据 Berg-Kirkpatrick et al.(2012)的配对自助法算法。输入测试集 xx 和采样次数 bb,统计 bb 个自助测试集中满足 δ(x(i))2δ(x)\delta(x^{(i)})\ge2\delta(x) 的比例,该比例就是单侧经验 p 值。