目录
2.1 Pre-training tasks for embedding-based large-scale retrieval
1 问题描述
文本匹配是NLP领域的一个重要的基础问题,文本匹配主要研究两段文本之间的关系,文本相似度计算,信息检索(IR)、自然语言推理(NLI)、问答匹配(QA)等NLP任务都可以视为文本匹配问题。文本匹配可以抽象为给定一段文本作为查询(Query),从大量的文档(Documents)匹配出最佳的文档。
目前主流的文本匹配架构有两类:Representation-Based 模型和 Interaction-Based 模型。
Representation-Based 模型:如上图a所示。该方案利用 Bi-enoder(如DSSM、SNRM、Bert等)将Query和Document编码映射到相同的语义向量空间,通过构造匹配函数为Query和Document的匹配程度进行打分。该方法优点在于可以离线计算好所有Document的表征向量,线上只需要计算Query的表征向量再匹配即可,计算量较小,运行很快;缺点在于Query和Document只有在最终计算匹配得分的时候才发生交互,Query和Document学习到的向量都是静态的,在不同上下文中的表示都相同,造成一定的语义漂移,最终匹配精度较低。
Interaction-Based 模型:如上图b、c所示。该方案采用Crosser-encoder(如DeepMatch、DRMM、KNRM等)Query和Document在编码时会进行交互计算,使编码能更好地融合语境信息,突出重点语义内容。具体的交互方案有早期的多层次相似度计算和当前的基于attention结构进行不同粒度的交互计算。交互模型的优点是能够实现更细粒度的匹配,有效提高匹配效果。缺点是,Document不能离线编码,所有的计算都在线上计算,运行比较耗时。
针对基于表示和基于交互的两类匹配架构的问题,以下三篇论文提出了各自的解决方案。
- Chang, W. C., Yu, F. X., Chang, Y. W., Yang, Y., & Kumar, S. (2020). Pre-training tasks for embedding-based large-scale retrieval. ICLR 2020
- Samuel Humeau, Kurt Shuster, Marie-Anne Lachaux, Jason Weston (2020). Poly-encoders:Architectures and Pre training Strategies for Fast and Accurate Multi sentence Scoring. ICLR 2020
- Khattab, O., & Zaharia, M. (2020). ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT. SIGIR 2020
2 核心思想 & 实验描述
2.1 Pre-training tasks for embedding-based large-scale retrieval
作者主要针对Representation-Based文本匹配方案提出了三个预训练任务,旨在提高该方案中Query和Document之间的交互。
模型结构:作者采用基于表示的架构,其中Bi-encoder采用Transformer模型。依据极大似然原理,估计模型参数。
预训练任务:作者基于Wikipedia的数据设计三种预训练任务
- Inverse Cloze Task (ICT):该任务是将一个段落中的一个句子随机取出作为查询 q1,段落中剩下的其他句子作为文档d,构建出样本数据。该任务获取句子的语义上下文。
- Body First Selection (BFS):该任务是从Wikipedia的摘要描述中随机取出一个句子作为查询 q2,当前页面下的一个随机段落作为文档 d。该任务基于Wiki的第一段包含文章主题信息的假设。
- Wiki Link Prediction (WLP):该任务是从Wikipedia的摘要描述中随机取出一个句子作为查询 q3,当前页面超链接的另一个页面的一个随机段落作为文档 d。该任务基于Wiki中存在超链接的文档间具有语义的相似性。
实验描述:
- Bi-encoder:召回模型的Bi-encoder具体结构为12层的BERT-base模型,最终的embedding通过在[cls]隐藏的标记应用线性层生成。将MaskedLM预训练作为baseline,预测句子中随机屏蔽的词语[cls]。
- Pre-train:作者将词语级的预训练任务MLM与三个段落级别的预训练任务ICT,BFS和WLP进行了比较。其中ICT,BFS和WLP的数据是从Wikipedia语料库生成的
- Downstream:作者选择ReQA作为benchmark,在SquAD和 Natural Questions数据集上进行问题检索,评价指标采用Recall@k,运行结果如下图:
消融实验结果如下:
由消融研究可以看出,pre-train task: ICT > BFS > WLP
且将embedding维度从128提高到512效果不明显。
2.2 Poly-encoder
主要思想:是将给定的候选标签用Bi-encoder中的一个向量表示,从而可以缓存候选doc的内容以加快推理时间。在推理阶段,将query的多种语义编码利用 attention机制与候选content共同作用,从而可以提取更多信息。content是 doc文本经过离线 Candidate Encoder 编码得到语义向量。
模型结构:如下图所示:
该模型中的Context和Candidate分别表示文本匹配中的Query和Document。Poly-encoder 保持了Bi-encoder的高效性,使用两个独立的transformer对Context和Candidate进行编码。
- Candidate 被编码为一个向量
, 该步可以预先计算缓存,实现较快的推理速度。
- Context 在该论文的任务中比候选实体长很多,因此作者采用m个向量进行表示
,而非 Bi-encoder 中的一个向量,但m的值会影响推理速度。为了获取这m个代表context全局语义的特征向量,模型采用attention结构进行交互计算。
- attention中的三个参数分别为 query、key、value。其中query为随机初始化参数
,该参数在fine-tuning阶段学习;key和value都是上层transformer编码器的输出
,attention公式如下:
其中
- 经过attention交互计算,模型获取到m个具有Context全局语义信息的特征向量,下一步将以候选对象编码
为query与context的特征向量进行交互,得到最终的context向量,公式如下:
,其中
- attention中的三个参数分别为 query、key、value。其中query为随机初始化参数
- 计算context特征向量
与每一个候选对象特征向量
的匹配度。
实验描述及结果:作者选择检索式对话数据集 ConvAI2、DSTC 7、Ubuntu v2 以及Wikipedia IR 数据集进行实验。负采样方式为:在训练过程中,使用同一个 batch中的其他query对应的response作为负样本,而Cross-encoder的负采样方式为:在开始训练之前,随机采样 15 个responses作为负样本。结果如下图所示:
可见Poly-encoder效果介于Bi-encodeer和Cross-encoder之间
上表展示了从ConvAI2的K个可能的候选对象中预测下一个对话的平均时间。可见Poly-encoder运行速度接近Bi-encoder,比Cross-encoder快了2000多倍。
2.3 ColBERT
作者提出的ColBERT是基于上下文的后期交互的排序模型,用于估计查询 query和文档 document 之间的相关性。使用两个encoder分别对query和document进行embedding,使得document的编码过程可以预先计算并缓存,保证了模型推理的高效率;同时通过一种新颖的后期交互策略(Late Interaction),使得query和document能够进行交互。
模型结构:如下图所示
论文通过延迟query-document交互使得基于交互模型的细粒度匹配和基于表示模型的文档表示的预计算结合到一起。
如上图所示,每个查询嵌入都通过MaxSim运算符与所有的文档嵌入进行交互,该运算符计算最大相似度(例如余弦相似度),并且这些运算符的标量输出跨查询项求和。这个范例允许ColBERT利用基于LM的深层表示,同时降低离线编码文档的成本,并在所有排序文档中摊销一次编码查询的成本。此外,它使ColBERT能够利用向量相似性搜索索引直接从大型文档集合中检索top-k个结果,与仅对term-based检索的输出重新排序的模型相比,极大地改善了召回率。
具体包含以下两个结构:
- Query Encoder & Document Encoder:ColBERT的query和document共享同一个BERT-based Encoder,通过在query和document中分别添加一个特殊的标记[Q]和[D],来区分输入序列类型。公式如下
-
-
-
其中:“#”表示[mask]标。CNN是做维度变换,用来对BERT输出降维,Normalize为了之后计算余弦相似度而做的正则化处理。Document Encoder中使用筛选器 Filter。因为Doc一般比较长,Filter通过一个预定义的列表去除文档中的标点符号、停用词等表示。
-
-
Late Interaction:计算query中每个term与doc的每 term的最大相似度,然后累加得到score。由于之前进行过Normalize,我们只用计算内积就得到余弦相似度。
-
公式如下:
-
ColBERT使用Learning2Rank中的pairwise Loss,使得相关document得分高于不相关document。
实验描述及结果:论文使用MS MARCO、TERC CAR数据集验证模型。
实验结果如下:
结果表明,ColBER模型推理准确性与BERT模型类似,由于BM25、ConvKNRM等模型,且运行效率是Bert的500倍。
3 横向对比
这三篇论文主要针对与解决当前文本匹配的架构的问题:
- 基于表示的模型查询和文档缺乏交互,导致语义漂移,推理精度不足
- 基于交互的模型不能预计算缓存document编码,推理速率较低
Poly-encoder和ColBERT都是在基于表示的模型中增加了查询和文档的弱交互,这种方法既增强了模型的表达能力,又不会增加太大的计算量,并且Doc 端还是能够预先处理,保证了在线运行的速度。
Poly-encoder侧重于对query进行嵌入表示时,融合候选文档的全局语义信息,丰富了query和document的交互。document端的编码是静态的,保证了能够预计算。我个人认为,将document的静态的全局语义信息通过attention机制融合到query编码中,不能很好的利用语言模型的深层表示信息。
ColBERT的创新之处在于提出的Late Interaction策略。在编码阶段,不直接生成query和document的全局的特征表示向量,而是保留较低层次的特征编码序列。在模型推理的后期,直接在query特征序列和document特征序列上进行MaxSim相似度计算,这样就实现了功能强大且代价极低的细粒度相似性建模。在ColBERT模型下,document端的特征序列能离线计算,保证了线上运行效率,同时可以还可以利用向量相似度索引(vector-similarity indexs)直接从大型文档集 中进行端到端检索,极大地提高了模型的运行效率。
以上两个模型都是在基于表示的方案下,增加查询和候选文档编码的交互来丰富模型的表达能力,Pre-training tasks for large-scale retrieval这篇论文,通过提出三个预训练任务,低成本地为Bi-encoder召回模型构造出大量弱标签训练数据,作者提出模型首先在构造出的数据上进行训练,然后再执行downstream任务,获得了较好的结果。个人认为,该方案比较适合于downstream任务用来fine-tune的数据较少的情况。
在我个人看来,这三篇论文中ColBERT模型具有较大的发展空间,首先该模型用较小的计算代价实现了query和document的细粒度深层次的交互,且正由于该相似度建模较为简单,因此我认为基于ColBERT的方法在相似度建模方面还有一些有前景的工作。