语言模型文本匹配的主流方法回顾
语言模型文本匹配的主流方法回顾
文本匹配作为自然语言处理中的一个核心任务,在信息检索、问答系统等领域有着广泛的应用。本文通过回顾近年来在该领域的代表性研究工作,系统地介绍了不同方向的文本匹配方法,包括基于深度学习的匹配模型和双塔模型等。这些研究成果不仅推动了文本匹配技术的发展,也为相关领域的研究者提供了重要的参考。
Matching Model
A Deep Architecture for Matching Short Texts
这篇发表于2013年NIPS的论文主要针对短文本匹配问题。传统的匹配方法通常是将两个文本分别映射到各自的向量空间,然后计算它们之间的相似性(如余弦相似性)。而DeepMatch模型则通过深度网络来建模文本间的交互,主要基于以下两个直觉:
- Localness:两个文本间存在的词级别的共现模式。这种共现不仅限于字面的精确匹配,还可以是话题级别的共现。
- Hierarchy:共现模式可能在不同的词抽象层次中出现,从而组合出文本对间复杂的语义关系。
A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval
这篇2014年CIKM的论文提出了Convolutional Latent Semantic Model(CLSM,也称为CDSSM)。该模型通过卷积和池化结构来处理查询和文档,主要步骤包括:
- word-n-gram layer:在输入的文本上做词粒度的n-gram,即用制定大小的滑动窗口在文本上滑动,每个窗口包含多个词。
- letter-trigram layer:每个词通过字母的三元组表示,如"boy"表示为三个字母三元组:#bo, boy, oy#。每个词由多个字母三元组组成,用一个multi-hot向量表示,向量的长度是字母三元组的数量,也即词表的大小(假设是30k)。
- convolutional layer:将每个word-n-gram转换成一个向量(图中的300维向量)。
- max-pooling:将整个文本的多个word-n-gram的向量表示转化成一个向量(图中的300维的向量)。
- semantic layer:对上一步得到的向量进行变化,压缩维度(图中的128维的向量)。
A Deep Relevance Matching Model for Ad-hoc Retrieval
这篇2016年CIKM的论文提出了DRMM(Deep Relevance Matching Model),主要针对文本匹配中的相关性匹配问题。DRMM在query的term级别进行相关性匹配,具体步骤包括:
- 基于嵌入,构建query中term和文档的局部交互。对于每个term,将交互映射为一个固定长度的匹配直方图。
- 对于每个匹配直方图,通过前馈网络将其映射为一个匹配分数。
- 最后,通过term门控网络聚合所有匹配直方图的匹配分数,作为最终的相关性分数。
文中还对比了相关性匹配和语义匹配的差异:
- 语义匹配更看重相似性匹配信号、组合性含义以及全局匹配要求。
- 相关性匹配更看重精确匹配信号、query term的重要性以及多样化的匹配要求。
DeepRank: A New Deep Architecture for Relevance Ranking in Information Retrieval
这篇2017年CIKM的论文提出了DeepRank模型,模仿人类判断相关性的过程,分为三个步骤:
- 检测策略:抽取相关的内容——以query中某个term为中心的片段。
- 评估网络:评估局部相关性——query与每个检测到的片段的匹配矩阵,多个片段的匹配矩阵则可以看作一个三维的张量。每个匹配矩阵可以是精确的匹配或者是语义相似性(如向量的余弦相似度)。再通过CNN或者2D-GRU,把每个矩阵转化成一个相关性表示向量(即图中的Local Relevance Representation)。
- 聚合网络:聚合局部相关性,得到最终相关性分数——分两步:1)先把每个query term对应的多个片段的局部相关性表示聚合为单个向量,作为query term级别的相关性表示;2)聚合每个query term的相关性表示作为最终的分数。
Dual-Encoder
Semantic Text Matching for Long-Form Documents
这篇2019年WWW的论文针对长文本间的文本匹配问题,提出了Siamese multi-depth attention based hierarchical recurrent neural network(SMASH RNN)。该模型学习doc的不同层次的表示作为doc表征,可以看作融合了多层次信息的表征。论文中一共考虑了三个层次:段落、句子、词。每个层次对应一个编码器,每个编码器输出对应层次的表征,最终将三个层次的表征融合作为文档最终的表征。进行文本匹配时,按照双塔的思路,分别计算两个doc的表征,再计算相似性。
RocketQA: An Optimized Training Approach to Dense Passage Retrieval for Open-Domain Question Answering
这篇2021年NAACL的论文提出了RocketQA,一个优化的训练方法,主要贡献包括:
- cross-batch negatives:使模型见到更多的负样本。
- denoised hard negatives:通过训练一个更复杂的交互式模型来筛选真正的负样本。
- 数据增强:直接用交互式模型进行打标,生成更多的数据。
PAIR: Leveraging Passage-Centric Similarity Relation for Improving Dense Passage Retrieval
这篇2021年ACL的论文提出了PAssage-centric sImilarity Relations(PAIR)来解决以下问题:
- 如何形式化定义query-centric和passage-centric这两种相似关系;
- 需要大量高质量的数据学习passage-centric相似性;
- 同时学习query-centric和passage-centric,可能会与主任务(query-centric)冲突。
PAIR通过以下方式解决这些问题:
- 损失函数:通过两个损失函数来结合query-centric和passage-centric。
- 生成伪标签数据:用一个更复杂的交互式模型去打标,以获取更多数据。
- 两阶段训练流程:预训练阶段在伪标签数据上训练query-centric和passage-centric两个任务;微调阶段在标注数据和伪标签数据上仅训练query-centric任务。
RocketQAv2: A Joint Training Method for Dense Passage Retrieval and Passage Re-ranking
这篇2021年EMNLP的论文提出了RocketQAv2,通过两个主要技术实现召回和重排的联合优化:
- Dynamic Listwise Distillation:通过两个损失将召回和排序模型串联起来:
- 真实标签与排序模型输出计算listwise的监督损失;
- 排序模型输出的分数分布与召回模型输出的分数分布计算KL损失,及将排序模型蒸馏到召回模型。
- Hybrid Data Augmentation:在构造数据时基于RocketQA Retriever和Reranker进行筛选。
Pre-trained Language Model for Web-scale Retrieval in Baidu Search
这篇2021年KDD的论文针对检索系统的三个挑战提出了解决方案:
- 语义匹配的分布差异问题:用ERNIE(双塔结构)进行文本匹配,两个塔的交互采用Poly-Encoder。
- 长尾问题:将ERNIE的训练分成四个阶段:pretraining、post-pretraining、intermediate fine-tuning、target fine-tuning。
- 线上部署性能问题:对输出的向量维度进行压缩以及量化。
小小的总结
这些论文主要围绕训练策略和数据优化展开,虽然看起来没有那么高大上,但非常贴近业界实践。实践中,训练策略和数据的影响往往很大,以下是一些重要点:
- 数据去噪:实践中,正样本一般时人工标注的,负样本也会有一部分是标注的,但是往往需要挖掘大量的负样本,挖掘过程中难免会引入一些假阴样本。
- 难负样本:难负样本已经是一种常规优化手段,但需要根据当前阶段判断是否需要添加以及添加多少。
Cross-Encoder
随着对文本匹配效果的进一步追求,交互式的编码器开始登场。这类模型大多基于BERT及其衍生模型,主要区别在于交互式通常会在比较前的阶段就让两个输入进行交互,比如输入时直接把两个文本拼接。
ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERT
这篇2020年SIGIR的论文提出了一种基于双塔的迟交互模型ColBERT,结合双塔模型的效率和交互模型的性能。其核心思想是用query中的每个词去文档中软匹配,找到文档中与之最匹配的词,作为匹配分数,再把所有词的匹配分数相加作为query和文档的匹配分数。在计算匹配时,由于词的嵌入是融合了其上下文信息的,因此二者并不单单只是词之间的匹配,而是融合了上下文信息。
ColBERTv2: Effective and Efficient Retrieval via Lightweight Late Interaction
这篇2022年NAACL的论文提出了ColBERTv2,对迟交互进行轻量化,实现高效且节省空间的检索。具体包括:
- 模型压缩:通过残差压缩机制,将每个向量表示为最接近的聚类中心的索引和量化的残差向量。
- 去噪监督:结合了交叉编码器的蒸馏和硬负样本挖掘,以提升检索质量。
- 索引构建:通过k-means聚类选择聚类中心,段落中的每个token的嵌入表示为聚类中心的索引加上一个量化后的残差向量。
- 检索过程:在查询时,通过候选生成、近似“MaxSim”操作和候选段落的排名来完成检索。
PLAID: An Efficient Engine for Late Interaction Retrieval
这篇2022年CIKM的论文提出了PLAID(Performance-optimized Late Interaction Driver),进一步降低检索的延时。核心方法包括:
- 中心点交互(Centroid Interaction):通过将每个token的嵌入向量替换为其最近的中心点,以近似每篇文档的相关性。
- 中心点剪枝(Centroid Pruning):基于查询向量与所有中心点的距离,提前剪枝掉与查询向量距离较远的中心点ID。
- 优化的内核(Fast Kernels):为了加速MaxSim操作和残差解压缩,PLAID实现了定制的C++代码和CUDA内核。
在多个信息检索基准测试中,PLAID在保持检索质量的同时,相较于原始ColBERTv2模型,在GPU上实现了高达7倍的加速,在CPU上实现了高达45倍的加速。
总结
文本匹配任务经历了从字面匹配到模糊匹配,再到目前基于语言模型的语义匹配的发展过程。目前的研究工作主要集中在训练流程和训练数据的优化上。这些研究成果不仅推动了文本匹配技术的发展,也为相关领域的研究者提供了重要的参考。