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


这样做的优点在于 DC-BERT 只对 Query 进行一次编码 , 从而降低了底层 BERT 的编码计算成本 。
2、Transformer component
通过 Dual-BERT component模块 , 获取到问题的编码 和文档编码, 其中 是词嵌入的维数 ,和 分别是问题和文档的长度 。 由于 rerank 是预测文档与问题的相关性 , 因此引入了一个带有训练 global embeddings 的Transformer 组件来使问题和文档进行交互 。
具体来讲 , 全局 position embeddings 和 type embeddings 被加入到问题和文档的顶层编码中 , 用预训练 BERT 的 position embeddings 和 type embeddings 进行初始化 , 之后送入 Transformer 层进行深度交互 , 并在训练过程中进行更新 。
3、Classifier component
DC-BERT 框架将 ReRank 任务作为一个二分类任务 , 通过计算候选文档是否与该问题相关来进行重排序 。 如下:
其中 ,是问题和候选文档对; 和 分别是问题和文档的 token 经过 Transformer 模块的输出(经过交互后的输出) 。
这篇论文的核心思路是采用两个 BERT 模型 , 一个 offline 模型提前向量化;一个online 的模型实时在线计算 query 的词级别向量表示 , 最后再用一层 Transformer 做线上相关性预测 。
3 ColBERT
论文名称:SIGIR 2020 | ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
arxiv地址:
https://arxiv.org/pdf/2004.12832.pdf
ColBERT 提出了一种新颖的后期交互范式 。 为了同时兼顾匹配的效率和doc中的上下文信息 , ColBERT 提出了基于上下文(contextualized)的后期交互的排序模型 , 用于估计查询 query 和文档 doc 之间的相关性 。 query 和doc 分别通过各自的 encoder 编码 , 得到两组 token level 的 embedding 集合;然后 , 评估 query 和 doc 中的每个 item 的关联 , 得到快速排序的目的 。
ColBERT 的模型结构整体还是类似于 Siamese 结构 , 分为 Query 端和 Doc 端 , 最后在进行交互计算文本分相似度 。 模型主体上分为 Query Encoder、Document Encoder 、以及之后的 Late Interaction 部分 。
2020深度文本匹配最新进展:精度、速度我都要
本文插图
每个查询嵌入都通过 MaxSim 运算符与所有文档嵌入进行交互 , 该运算符会计算最大相似度(如余弦相似度) , 并且这些运算符的标量输出会在查询条件中相加 。 这种范例使 ColBERT 可以利用基于 LMs的深度表示 , 同时将离线编码文档的成本转移到所有排序文档中 , 并一次摊销编码查询的成本 。
1、Query Encoder
Query Encoder计算如下:
通过在查询 query 之前添加特殊标记, 在文档之前添加另一个标记, 来区分与查询和文档相对应的输入序列 。 BERT 是编码器 , CNN 是做维度变换 , 用来对 BERT 输出降维 , Normalize 为了之后计算余弦相似度而做的正则化处理 。
值得注意的是 , 文章对 query 填充掩码标记的另外一个目的是做 query augmentation , 这一步骤允许 BERT 在与这些掩码相对应的位置上生成基于查询的新嵌入 , 这一机制旨在对 query 中新术语或者重要词进行重新编码学习 。
2、Document Encoder
结构与query encoder类似 , 主要区别如下:
1)添加筛选器 Filter 。 因为 Doc 一般比较长 , Filter 通过一个预定义的列表对文档中一些特殊的 token 以及标点符号进行过滤 。
2)没有添加 mask token 。
(向右滑动查看完整公式)
3、Late Interaction
这一步操作则是针对与Representation-Based方法的改进 , 对 query 和 doc 的信息进行了交互 , 具体公式如下:


推荐阅读