标注研究的统计功效与样本量
你需要多少条目才能让结果具有意义,为什么这是一个与每条目需要多少标注者不同的问题,以及如何避免功效不足、结论夸大的标注和评估研究。
"要多少标注者?"和"要多少条目?"是两个经常被混淆的不同问题。标注者重叠决定了每个条目标签的可靠程度;条目数量决定了你观察到的差异是真实的还是噪声。一项研究即使每个条目有五名标注者,也可能因规模太小而支撑不起它的结论。 本指南讨论的是第二个维度——统计功效,以及如何防止一项标注或评估研究做出超出其数据支撑的断言。
两笔预算,而非一笔
每个标注项目都会沿着两个相互独立的维度投入精力,把它们分开命名会很有帮助:
- 重叠(每条目的标注者数):为你换来标签的可靠性,即对某个条目标签正确性的信心。这是你需要多少标注者?所讨论的主题。
- 样本量(条目数量):为你换来统计功效,即在不同条件、模型或群体之间检测出真实差异的能力。
两者争夺一份固定的预算,却解决着不同的问题。十名标注者标注 50 个条目,会给你非常可靠的标签,但样本太小,无法比较任何东西。一名标注者标注 5000 个条目,会给你带噪声的标签,但数量足以检测出真实的效应。你即将犯下的是哪一种错误,取决于你实际在问的是哪个问题。
什么是统计功效
统计功效是你的研究检测出一个确实存在的效应的概率。功效低意味着,即使模型 A 确实优于模型 B,你的实验也常常无法显示出来;而更不易察觉的是,你确实得到的那些"显著"结果更有可能是效应量被夸大的偶然结果。惯例是以 80% 的功效为目标,这要求你事先决定值得检测的最小差异,并据此确定研究规模以捕捉它。
令人不安的发现是这一步被略过的频率有多高。Card et al. (2020) 对常见的 NLP 设置进行了功效分析,发现许多已发表的比较严重功效不足:要可靠地检测典型论文所声称的那些微小差异,尤其是在人工评估中,往往需要数百到数千个条目,远多于研究实际使用的数量。他们的实用启示是在收集数据之前就运行功效计算,而不是事后再倒推显著性。
把显著性检验做对
拥有足够的条目是必要的,但并不充分;你还必须正确地做检验。Dror et al. (2018) 是这方面的标准参考,它的建议很具体:
- 让检验与数据相匹配。 NLP 指标通常并不服从正态分布,因此应依靠非参数方法——bootstrap 检验和置换检验,而不要假定 t 检验适用。
- 对多重比较进行校正。 检验众多模型、指标或子群会抬高假阳性率;当你进行多次检验时,请做校正(Bonferroni,或者更好的 Benjamini-Hochberg)。
- 报告效应量和置信区间,而不仅仅是 p 值。 在条目足够多时,一个差异可以在统计上显著却在实际中毫无意义。效应量和区间会告诉读者是否值得在意。
一套可行的方案
- 说明会产生实际意义的最小差异(比如胜率上 2 个百分点的差异)。
- 针对该效应以 80% 的功效运行一次功效分析,得到目标条目数量。
- 根据标签的主观程度,单独决定重叠(见标注者数量指南)。
- 收集完成后,使用 bootstrap 检验或置换检验,针对比较次数进行校正,并报告带区间的效应量。
顺序很重要:在看过数据之后才确定研究规模,正是功效不足的结果被包装成发现的方式。
在 Potato 中如何操作
功效是一项设计决策,而非某个配置键,但 Potato 的职责是给你干净的数据来运行分析。在任务分配中,用重叠来设定可靠性,用实例数量来设定样本量:
automatic_assignment:
on: true
instance_per_annotator: 400 # sample size: items each annotator sees
labels_per_instance: 3 # overlap: reliability per item这两个旋钮的相互独立是有意为之的。导出会保留每位标注者的单独标签及其 ID 和时间戳,这正是让你在离线计算显著性时能够按条目和按标注者进行 bootstrap 重采样的关键。保留每位标注者的标签,而不是只保留聚合结果,才使得一次恰当的、顾及功效的分析成为可能;如果过早地坍缩为单一的金标准标签,你就丢掉了 bootstrap 所需的方差。