[论文解读] Poly-encoders: Transformer Architectures and Pre-training Strategies for Fast and Accurate Multi-sentence Scoring
简要结论:引入 Poly-encoder,一种将 Bi-encoders 的缓存优势与 Cross-encoders 的丰富交互相结合的 Transformer 架构,能够在多句评分任务中实现更快的推理和更高的准确性;并显示对任务型数据(特别是 Reddit)进行预训练在对话和 IR 数据集上获得了 state-of-the-art 结果。
The use of deep pre-trained bidirectional transformers has led to remarkable progress in a number of applications (Devlin et al., 2018). For tasks that make pairwise comparisons between sequences, matching a given input with a corresponding label, two approaches are common: Cross-encoders performing full self-attention over the pair and Bi-encoders encoding the pair separately. The former often performs better, but is too slow for practical use. In this work, we develop a new transformer architecture, the Poly-encoder, that learns global rather than token level self-attention features. We perform a detailed comparison of all three approaches, including what pre-training and fine-tuning strategies work best. We show our models achieve state-of-the-art results on three existing tasks; that Poly-encoders are faster than Cross-encoders and more accurate than Bi-encoders; and that the best results are obtained by pre-training on large datasets similar to the downstream tasks.
研究动机与目标
- 在候选检索任务中平衡准确性与速度,推进多句评分。
- 在不同的预训练策略下比较 Bi-encoder、Cross-encoder 和提出的 Poly-encoder 架构。
- 展示与任务相关的预训练数据对下游性能的影响。
- 展示在实时系统中的可扩展性和实际推理速度权衡。
提出的方法
- 提出三种架构:Bi-encoder(将上下文编码和标签编码分离)、Cross-encoder(对上下文和标签进行联合编码并使用完整自注意力)、以及 Poly-encoder(上下文对一小组学习得到的全局上下文编码进行关注,而标签单独编码)。
- 开发预训练方案:在维基百科/多伦多图书进行类似 BERT 的预训练;在 Reddit 上从头开始进行预训练(用于对话相关性),使用 MLM 和下一个句子/话语预测任务。
- 在四个任务(ConvAI2、DSTC7、Ubuntu V2、Wikipedia Article Search)上对每种架构进行微调,使用与任务相关的负样本和评估指标。
- 研究超参数,包括批量大小、每个批次的负样本数量,以及微调哪些 Transformer 层,以最大化性能。
- 评估在 CPU/GPU 上的推理速度,并比较 Bi-编码、Poly-编码和 Cross-编码在训练效率上的差异。
- 评估 Poly-encoder 中不同上下文代码数量(m)对性能和速度的影响。
实验结果
研究问题
- RQ1Poly-encoder 是否能在多句评分任务中实现相对于 Bi-encoder 和 Cross-encoder 的准确性与速度的更优平衡?
- RQ2不同的预训练数据(Reddit 与 Wikipedia/ Toronto Books)如何影响对话和信息检索数据集的下游性能?
- RQ3Poly-encoder 中上下文代码数量(m)对检索准确性和推理时间的影响是多少?
- RQ4在实时系统中部署这些架构的实际训练和推理时间权衡是什么?
主要发现
- 在所评估任务中,Poly-encoder 在准确性方面持续优于 Bi-encoder。
- Poly-encoder 的推理速度显著快于 Cross-encoder,使其适用于实时检索和对话系统。
- 在 Reddit(对话类数据)上的预训练在将 Poly-encoders 或 Bi-encoders 结合使用时,在所有三个对话任务和 IR 任务上获得了 state-of-the-art 结果。
- 使用更多的上下文代码(更高的 m)通常会提高 Poly-encoder 的性能,但随着 m 增大,回报递减,与速度之间的权衡需要考虑。
- 推理时间显示 Cross-encoders 要慢几个数量级,而 Poly-encoders 提供了有利的准确性-速度权衡,适合生产部署。
- 在 Reddit 上的预训练在所有架构和任务上相对于基于 BERT 的初始化带来改进。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。