2020深度文本匹配最新进展:精度、速度我都要( 三 )


计算 query 中每个 term 与 doc 的每个 term 的最大相似度 , 然后累加得到 score 。 由于之前进行过 Normalize , 我们只需要计算 inner-products 得到的即为余弦相似度 。
4、实验结论
文章采用了 Microsoft 于 2016 年引入的阅读理解的数据集 MS MARCO , 它是从网页中收集的800万个段落的集合 , 这些段落是从必应收集到100万个实际查询的结果 。
2020深度文本匹配最新进展:精度、速度我都要
本文插图
通过实验数据对比可以看出 , ColBERT 的效果比传统 ConvKNRM 明显要好 , 此外检索的速度比 BERT-base 模型要快几个数量级 。
2020深度文本匹配最新进展:精度、速度我都要
本文插图
4 Poly-encoders
论文名称:ICLR 2020 | Poly-encoders: Transformer Architectures and Pre-training Strategies for Fast and Accurate Multi-sentence Scoring
arxiv地址:
https://arxiv.org/pdf/1905.01969.pdf
在 BERT 兴起之后 , 基于 concat 的 self-attention 模型大量涌现 。 如下图所示 , query 和 candidate 拼成一句话 , 使得模型可以对 query 和 doc 进行深度交互 , 充分发挥 BERT 的 next sentence 任务的作用 。 本篇论文实现的交互式匹配(Cross-encoder)也是基于这种架构 。 交互式匹配的核心思想是则是 query 和 candidates 时时刻刻都应相互感知 , 信息相互交融 , 从而更深刻地感受到相互之间是否足够匹配 。
2020深度文本匹配最新进展:精度、速度我都要
本文插图
相较于 Siamese Network (Bi-encoder) , 这类交互式匹配方案可以在Q(Query)和D(Doc)之间实现更细粒度的匹配 , 所以通常可以取得更好的匹配效果 。 但是很显然 , 这类方案无法离线计算candidates 的表征向量 , 每处理一个 query 都只能遍历所有(query, candidate) 的 pairs 依次计算相关性 , 这种时间和计算开销在工业界是不被允许的 。
1、模型结构
总的来说 , 本文是对速度快但质量不足的 Bi-encoder 架构和质量高但速度慢的 Cross-encoder 架构的一种折中 , 其基本结构如下图:
2020深度文本匹配最新进展:精度、速度我都要
本文插图
Poly-encoder的思想非常简单 。 将给定的候选标签用Bi-encoder中的一个向量表示 , 从而可以缓存候选 doc 的内容以加快推理时间 。 在推理阶段 , 将 query 的多种语义编码利用 attention 机制与候选 content 共同作用 , 从而可以提取更多信息 。 content 是 doc 文本经过离线 Candidate Encoder 编码得到语义向量 。
具体来讲:

  1. Poly-encoder首先是通过初始化多个attention模块 , 对每一个query产生不同的 , 以此获取 query 中一词多义或切词带来的不同语义信息;
(向右滑动查看完整公式)
  1. 将这些具有相同维度的query语义向量进行动态组合成最终的;
(向右滑动查看完整公式)
  1. 最后计算 与每一个由 Bi-encoder 编码的候选 的匹配程度 。
很显然 , Poly-encoder 架构在实际部署时是可以离线计算好所有 candidates 的向量, 线上部分只需要计算 query 对应的 m 个 向量 , 再通过简单的 dot product 就可以快速计算 query 对应每个 candidate 的动态的得分。 看起来 Poly-encoder 享有 Bi-encoder 的速度 , 同时又有实现更精准匹配的潜力 。
2、实验效果
【2020深度文本匹配最新进展:精度、速度我都要】本文选择了检索式对话数据集 ConvAI2、DSTC 7、Ubuntu v2 以及Wikipedia IR 数据集进行实验 。 负采样方式为:在训练过程中 , 使用同一个 batch 中的其他 query 对应的 response 作为负样本 , 而 Cross-encoder 的负采样方式为:在开始训练之前 , 随机采样 15 个 responses 作为负样本[2] 。


推荐阅读