论文日常阅读笔记——Early Exiting BERT for Efficient Document Ranking(2020 SustaiNLP)

Early Exiting BERT for Efficient Document Ranking(2020 SustaiNLP)

论文链接:https://aclanthology.org/2020.sustainlp-1.11/ 引用66

论文全名:

Early Exiting BERT for Efficient Document Ranking
用于高效文档排序的提前退出 BERT

作者:Ji Xin、Rodrigo Nogueira、Yaoliang Yu、Jimmy Lin。论文发表于 2020 年 SustaiNLP:Simple and Efficient Natural Language Processing Workshop,收录于 ACL Anthology,页码 83–88;作者同时公开了实现代码。

这篇论文篇幅不长,但问题非常清楚:

BERT 重排序很准,却太慢;能不能让“容易判断”的文档少算几层,把更多计算留给真正可能相关的文档?

相关概念

MonoBERT

MonoBERT 是一种经典 BERT 重排序器。

它把查询 (Q) 和候选文档 (D) 拼接起来:

[CLS] Query [SEP] Document [SEP]

然后让 BERT 同时阅读二者,最后通过 [CLS] 向量判断:

相关
或
不相关

输出的“相关概率”就是该文档的排序分数。 2020.sustainlp-1.11

“Mono”表示模型一次独立判断一个 query–document pair,而不是一次联合排序整个候选列表。

Transformer Layer

BERT-Base 有 12 层 Transformer。

可以粗略理解为:

第1层:处理比较浅的词汇信息
第2层:继续整合上下文
……
第12层:得到最终语义表示

标准 BERT 推理时,所有样本都必须跑完 12 层。

问题是:

  • 有些文档明显不相关,可能第 3 层就能判断;
  • 有些文档可能真的相关,需要完整计算才能得到可靠分数。

让两者都跑满 12 层,会浪费大量计算。

Early Exiting:提前退出

提前退出是指:

模型在中间层已经足够确定答案时,直接输出,不再计算后面的网络层。

例如:

第1层 → 不确定 → 继续
第2层 → 不确定 → 继续
第3层 → 99%确定不相关 → 提前退出

另一个困难样本可能运行到第 12 层:

第1层 → 不确定
……
第12层 → 输出

所以不同样本使用不同计算量。

这也叫:

  • Dynamic Inference:动态推理;
  • Adaptive Computation:自适应计算;
  • Conditional Computation:条件计算。

Asymmetric Early Exiting:非对称提前退出

这是本文真正有针对性的设计。

作者认为,在文档重排序中:

相关文档
和
不相关文档

不能被平等对待。

因为候选集里通常绝大部分文档都不相关,只有极少数真正相关。对于明显不相关的文档,可以放心早点退出;对于可能相关的文档,则应当更谨慎,让它经过更多层计算。

所以作者分别设置:

[ \tau_p = \text{“相关”类别的退出阈值} ][ \tau_n = \text{“不相关”类别的退出阈值} ]

并采用:

[ \tau_p > \tau_n ]

也就是:

不相关样本可以较早退出,相关样本需要更高置信度,甚至尽量跑完整个模型。

动机

文档重排序有一个特殊的数据特点:

不相关候选极多,真正相关文档极少。

例如 MS MARCO 开发集里,每个 query 有约 1000 个候选,但平均只有约 1 个相关文档。 2020.sustainlp-1.11

也就是说:

约999个负样本
约1个正样本

如果能够让大量“容易识别的负样本”在中间层退出,就可能节省大部分计算。

但相关文档不能随便提前退出,因为:

  1. 搜索系统真正关心的就是那几个相关文档;
  2. 相关概率还是最终排序分数;
  3. 早期层给出的相关分数可能不够精确,导致正确答案排名下降。

因此,作者的关键直觉是:

检索中的正负类别价值不对称,计算预算也应该不对称。

而论文核心研究的是:

如何降低 BERT 文档重排序器的推理成本,同时尽量保持原有排序质量?

MonoBERT 对每一个 query–document pair 都执行完整的 12 层 BERT。

假设每个 query 有 1000 个候选文档:

1个 query
× 1000个候选
× 12层 BERT

即使绝大部分候选明显不相关,也需要完整计算。

这会造成:

  • 查询延迟高;
  • GPU 成本高;
  • 大规模线上部署困难;
  • 很难在低延迟搜索系统中使用强重排序模型。

作者指出,BERT 等预训练模型虽然显著提高了 NLP 和信息检索效果,但其计算量和推理延迟妨碍了真实部署。

核心贡献

论文提出了一种面向文档重排序的“非对称提前退出”机制:让明显不相关的候选文档在 BERT 中间层就停止计算,而让可能相关的文档继续运行更多层,从而在基本保持排序质量的同时获得约 2.5 倍推理加速。

浅显易懂的解释是:

搜索系统不必对每个候选答案都花同样多时间;那些一眼就明显错误的答案可以快速淘汰,把计算资源集中在真正有希望的答案上。

实验设置

image-20261025164330497

核心方法

第一步:以 MonoBERT 为基础

每个输入是:

[CLS] Query [SEP] Document [SEP]

模型预测该文档是否与查询相关。


第二步:在 BERT 每一层后加入分类器

标准 MonoBERT 只有最后一层分类器:

12层全部跑完 → 分类

本文模型则变为:

第1层 → 分类器1
第2层 → 分类器2
……
第12层 → 分类器12

因此,每个中间层都可以独立给出:

P(相关)
P(不相关)

论文把它称为 multi-output variant of BERT,即具有多个输出路径的 BERT。


第三步:同时训练所有中间分类器

假设第 (i) 层的损失是:

L_i(x,y;\theta)

作者将所有层的分类损失直接求和:

L = \sum_{(x,y)\in D}\sum_i L_i(x,y;\theta)

通俗理解:

不只要求最后一层学会判断相关性,也要求每个中间层都尽可能具备判断能力。

这比 DeeBERT 使用的两阶段训练更简单:作者一次性联合训练全部分类器。


第四步:推理时逐层判断是否退出

模型每经过一层,就检查:

P_i(\text{相关})>\tau_p

或者:

P_i(\text{不相关})>\tau_n

只要任一条件满足,就立即输出当前层的相关概率;否则继续进入下一层。


第五步:采用非对称阈值

作者不使用一个统一阈值,而是:

\tau_p>\tau_n

实验中的主要设置甚至是:

\tau_p=1

这基本意味着:

预测为相关的候选通常不要提前退出,尽量运行到最后;加速主要来自提前淘汰负样本。

作者的逻辑是:

疑似不相关:
可以较早放弃

疑似相关:
宁可多花计算,也不要误判或给出不准确排序分数

这正是本文与普通 Early Exit NLP 方法最大的区别。

实验结果

相关数据集

MS MARCO Passage Ranking

这是搜索和 passage ranking 中非常经典的数据集。

论文构建了:

  • 约 832,000 个训练 query–document pairs;
  • 正负样本各一半;
  • 约 6,900 个开发集 query;
  • 每个 query 有 1000 个候选;
  • 每个 query 平均约 1 个相关文档。

主要指标为:

[ MRR@10 ]


ASNQ

ASNQ 是答案句选择数据集。

论文从原始约 2000 万 pairs 中构建:

  • 约 114,000 个平衡训练 pairs;
  • 约 1300 个开发集 query;
  • 每个 query 平均约 400 个候选;
  • 每个 query 平均约 3 个相关候选。

主要指标包括:

  • nDCG@10;
  • MRR。

核心结果

image-20261025173557260

核心结果一:约 2.5 倍加速,排序质量几乎不变

在 MS MARCO 上:

方法 MRR@10 负类阈值 (\tau_n) 加速
原始 MonoBERT 0.347 — 1.0×
Early Exit 0.343 0.95 2.6×
Early Exit 0.340 0.90 2.9×
Early Exit 0.336 0.85 3.2×

当阈值为 0.95 时,模型获得约 2.6 倍加速,MRR@10 从 0.347 降到 0.343,损失非常小。

在 ASNQ 上:

设置 nDCG@10 MRR 加速
不提前退出 0.650 0.633 1.0×
(\tau_n=0.99) 0.650 0.633 2.5×
(\tau_n=0.95) 0.648 0.632 3.2×

也就是说,在 ASNQ 上约 2.5 倍加速时,两项指标都没有下降。

论文第 4 页的表格把这一质量—速度权衡展示得很清楚。


核心结果二:自适应退出明显优于“所有样本固定在某层退出”

一种更简单的加速办法是:

不做动态判断,直接让所有样本只运行前 6 层。

这样也能减少一半计算。

但问题是:

  • 容易样本和困难样本都使用相同计算量;
  • 相关文档也被迫在浅层输出;
  • 无法针对每个样本动态分配资源。

作者比较了:

固定层退出
vs.
置信度自适应退出

第 4 页的 Figure 2 和 Figure 3 显示,在相似的平均退出层数下,Early Exiting 曲线整体显著高于固定层方法。也就是说:

相同计算预算下,自适应退出的排序质量更高。

这比单纯“砍掉 BERT 后几层”更合理。


核心结果三:正负样本确实应该使用不同阈值

image-20261025174107136

作者进一步改变正类退出阈值 (\tau_p)。

结果显示:

  • (\tau_p) 越高,质量—效率权衡越好;
  • 当 (\tau_p=1) 时,结果最好;
  • 主要应该通过降低负类阈值 (\tau_n),让不相关文档早退;
  • 不应轻易让疑似相关文档在浅层退出。

论文第 5 页 Figure 4 中,(\tau_p=1) 的曲线始终位于最上方;较低的正类阈值即使计算量相近,MRR 也明显更差。

这直接支持作者的核心设计:

文档排序不是普通的对称二分类任务;漏掉相关文档的代价远高于多计算几个负样本。

相关意义

1 计算资源不应该平均分给所有候选

标准 BERT 隐含地认为:

所有 query-document pair
都值得计算12层

本文证明,更合理的方案是:

容易的负样本 → 少算
困难或可能相关的样本 → 多算

这是一种按样本难度分配计算资源的思想。


2 文档排序与普通分类不同

普通分类任务往往把不同类别平等对待:

猫和狗
正面和负面
类别A和类别B

但文档重排序中:

  • 不相关文档数量巨大;
  • 相关文档数量极少;
  • 最终系统主要依赖相关文档的精确分数;
  • 一个相关文档的误判,可能直接导致正确答案消失。

因此,作者认为 early exit 机制必须结合信息检索任务结构,而不能简单照搬通用 NLP 的对称阈值。

这是本文最重要的学术价值:

把通用的 Early Exit 思想改造成适合检索排序的不对称动态推理机制。


3 为高精度重排序器的真实部署提供了低成本路径

本文没有重新设计更小的网络,也没有蒸馏一个学生模型,而是保留原来的 BERT 主体,只增加中间分类头。

优点是:

  • 模型结构改动较小;
  • 不需要为所有样本固定降低模型深度;
  • 可以通过阈值灵活调整速度和质量;
  • 同一个模型可以适配不同延迟预算。

例如:

高精度场景:
提高退出阈值

低延迟场景:
降低负类退出阈值

作者最后将其总结为:

根据样本需要分配计算,并通过阈值控制不同的质量—延迟权衡。

局限性

局限一:实验范围较小

论文只测试了:

  • BERT-Base;
  • MS MARCO Passage;
  • ASNQ。

没有验证:

  • BERT-Large;
  • RoBERTa;
  • T5;
  • decoder-only LLM reranker;
  • 跨领域数据;
  • 多语言数据;
  • 真实生产搜索流量。

所以论文证明的是:

方法在两个经典英文排序数据集上有效,

而不是已经证明它对所有 reranker 都有效。

局限二:“加速倍数”主要由平均退出层数估算

作者使用 average exit layer 衡量计算效率,并表示该指标在实验中与 wall-clock runtime 成比例。 2020.sustainlp-1.11

但在真实 GPU 系统中,动态退出可能造成:

  • 同一 batch 中样本退出层不同;
  • 动态 batching 更复杂;
  • GPU 利用率下降;
  • 控制流和数据搬运产生额外开销。

因此:

平均只算 4 层,不一定就严格等于实际延迟缩短 3 倍。

论文没有系统报告:

  • 每秒查询数;
  • p50/p95 延迟;
  • 不同 batch size;
  • CPU/GPU 实际 wall-clock latency;
  • 能耗。

对于一篇效率论文,这是较明显的不足。

局限三:没有统计显著性和置信区间

MRR 从:

0.347 → 0.343

虽然很小,但论文没有给出:

  • 显著性检验;
  • bootstrap confidence interval;
  • 多次随机种子结果。

因此,“质量几乎不下降”在实践上是合理的,但统计可靠性展示得不充分。

总结

本文提出了非对称提前退出BERT用于文档排序,这是一种有效提升模型在信息检索任务中效率的方法。计算资源根据样本的需求分配。实验表明,该方法能够通过设置不同的阈值实现不同的质量-延迟权衡,并且在基线条件下提升了模型效率。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇