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

文 | QvQ

编 | 兔子酱


在过去的几年里,信息检索(IR)领域见证了一系列神经排序模型的引入,这些模型多是基于表示或基于交互的,亦或二者的融合。然鹅,模型虽非常有效,尤其是基于 PLMs 的排序模型更是增加了几个数量级的计算成本。

为了在 IR 中协调效率和精度,一系列基于表征学习的后期交互类深度排序模型被一一提出,致力于基于交互范式来计算查询 query 和文档 doc 的相关性。

传统做法

传统的 Representation-Based 模型是如下图所示的双塔结构,分别计算 Query 端和 Doc 端的隐层表示,最后选择 Score function(如dot product,cosine similarity)计算相似度。这种方式由于失去了 Query-Doc 之间的交互,可能会产生语义漂移,精度相对来说不是太高,所以一般用来做向量召回或者粗排[1]。

经典模型:DSSM, SNRM

  • 优点:计算量少,Document 可以离线处理得到其表征。线上运行时,只需要在线计算Query 的隐层表示,而 Doc 的隐层表示可以通过查询得到,非常适合精度要求不高,速度要求较快的场合。

  • 缺点:失去了交互信息,类似于 Word2Vec 的问题,学习出来的是一个静态向量,不同上下文场景下,都是同一个表征。

所以,Representation-Based 模型学习出来的语义表达有局限性,没有考虑上下文的信息。

今天介绍的三篇论文就是针对以上局限进行改进。

  • DC-BERT 通过解耦问题和文档实现有效的上下文编码。

  • ColBERT、Poly-encoders 则是在原始的 Representation-Based 模型中增加了弱交互,这种方法既丰富了模型的表达能力,又不会增加太大的计算量,并且 Doc 端还是能够预先处理,保证了在线运行的速度。

Arxiv访问慢的小伙伴也可以在 【夕小瑶的卖萌屋】订阅号后台回复关键词 【0910】 下载论文PDF~

DC-BERT

论文名称:SIGIR 2020 | DC-BERT: Decoupling Question and Document for Efficient Contextual Encoding

arxiv地址
https://arxiv.org/pdf/2002.12591.pdf

自从预训练语言模型(BERT等)提出,有关开放域 QA 的研究取得了显著改进。目前开放域 QA 的主流方法是 “retrieve and read” 的 pipline 机制。一般通过使用 BERT 模型对retrieve 模块检索出的文档进行 rerank,选出和问句最相关的 Topk 个文档进行后续 read 分析。Rerank 的基本操作是将问题和检索到的每个文档进行拼接作为 BERT 的输入,输出相关性 score。

(向右滑动查看完整公式)

然鹅,由于每一个问题都需要与 retrieve 模块检索出的每一个文档进行拼接,这需要对大量检索文档进行重编码,非常耗时。

为了解决效率问题,DC-BERT 提出具有双重 BERT 模型的解耦上下文编码框架:在线的 BERT 只对问题进行一次编码,而离线的 BERT 对所有文档进行预编码并缓存它们的编码。DC-BERT 在文档检索上实现了 10 倍的加速,同时与最先进的开放域 QA 方法相比,保留了大部分(约98%)的 QA 问答性能。

如上图所示,DC-BERT 自底向上分为如下三个部分:

Dual-BERT component

DC-BERT 框架包含两个 BERT 模型,分别对问题和每个检索得到的文档进行编码。

  1. 在训练期间,算法将更新两个 BERT 模型的参数以优化学习目标;

  2. 训练模型后,我们会对所有文档进行预编码,并将其编码存储在离线缓存中;

  3. 在测试期间,我们只使用在线 BERT 模型对问题进行一次编码,并从缓存中读出由 retrieve 模块检索得到的所有候选文档的缓存编码。

这样做的优点在于 DC-BERT 只对 Query 进行一次编码,从而降低了底层 BERT 的编码计算成本。

Transformer component

通过 Dual-BERT component模块,获取到问题的编码  和文档编码   ,其中  是词嵌入的维数,  和  分别是问题和文档的长度。由于 rerank 是预测文档与问题的相关性,因此引入了一个带有训练 global embeddings 的Transformer 组件来使问题和文档进行交互。

具体来讲,全局 position embeddings 和 type embeddings 被加入到问题和文档的顶层编码中,用预训练 BERT 的 position embeddings 和 type embeddings 进行初始化,之后送入 Transformer 层进行深度交互,并在训练过程中进行更新。

Classifier component

DC-BERT 框架将 ReRank 任务作为一个二分类任务,通过计算候选文档是否与该问题相关来进行重排序。如下:

(向右滑动查看完整公式)

其中,  是问题和候选文档对;  和  分别是问题和文档的  token 经过 Transformer 模块的输出(经过交互后的输出)。

这篇论文的核心思路是采用两个 BERT 模型,一个 offline 模型提前向量化;一个online 的模型实时在线计算 query 的词级别向量表示,最后再用一层 Transformer 做线上相关性预测。

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 部分。

每个查询嵌入都通过 MaxSim 运算符与所有文档嵌入进行交互,该运算符会计算最大相似度(如余弦相似度),并且这些运算符的标量输出会在查询条件中相加。这种范例使 ColBERT 可以利用基于 LMs的深度表示,同时将离线编码文档的成本转移到所有排序文档中,并一次摊销编码查询的成本。

Query Encoder

Query Encoder计算如下:

(向右滑动查看完整公式)

通过在查询 query 之前添加特殊标记 ,在文档之前添加另一个标记 ,来区分与查询和文档相对应的输入序列。BERT 是编码器,CNN 是做维度变换,用来对 BERT 输出降维,Normalize 为了之后计算余弦相似度而做的正则化处理。

值得注意的是,文章对 query 填充掩码标记的另外一个目的是做 query augmentation,这一步骤允许 BERT 在与这些掩码相对应的位置上生成基于查询的新嵌入,这一机制旨在对 query 中新术语或者重要词进行重新编码学习

Document Encoder

结构与query encoder类似,主要区别如下:

  1. 添加筛选器 Filter。因为 Doc 一般比较长,Filter 通过一个预定义的列表对文档中一些特殊的 token 以及标点符号进行过滤。

  2. 没有添加 mask token。

(向右滑动查看完整公式)

Late Interaction

这一步操作则是针对与Representation-Based方法的改进,对 query 和 doc 的信息进行了交互,具体公式如下:

计算 query 中每个 term 与 doc 的每个 term 的最大相似度,然后累加得到 score。由于之前进行过 Normalize,我们只需要计算 inner-products 得到的即为余弦相似度。

实验结论

文章采用了 Microsoft 于 2016 年引入的阅读理解的数据集 MS MARCO,它是从网页中收集的800万个段落的集合,这些段落是从必应收集到100万个实际查询的结果。

通过实验数据对比可以看出,ColBERT 的效果比传统 ConvKNRM 明显要好,此外检索的速度比 BERT-base 模型要快几个数量级。

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 时时刻刻都应相互感知,信息相互交融,从而更深刻地感受到相互之间是否足够匹配。

相较于 Siamese Network (Bi-encoder),这类交互式匹配方案可以在Q(Query)和D(Doc)之间实现更细粒度的匹配,所以通常可以取得更好的匹配效果。但是很显然,这类方案无法离线计算candidates 的表征向量,每处理一个 query 都只能遍历所有(query, candidate) 的 pairs 依次计算相关性,这种时间和计算开销在工业界是不被允许的。

模型结构

总的来说,本文是对速度快但质量不足的 Bi-encoder 架构和质量高但速度慢的 Cross-encoder 架构的一种折中,其基本结构如下图:

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 的速度,同时又有实现更精准匹配的潜力。

实验效果

本文选择了检索式对话数据集 ConvAI2、DSTC 7、Ubuntu v2 以及Wikipedia IR 数据集进行实验。负采样方式为:在训练过程中,使用同一个 batch 中的其他 query 对应的 response 作为负样本,而 Cross-encoder 的负采样方式为:在开始训练之前,随机采样 15 个 responses 作为负样本[2]。

实验结果已经表明 Poly-encoder 明显优于 Bi-encoder架构,且性能逼近 Cross-encode 架构的效果。在检索耗时方面,其速度比 Cross-encoder 足足快了约 2600-3000倍!

本文提出的 Poly-encoder 的核心思想虽然非常简单,但是却十分有效,确实在很多场景下可以作为 Bi-encoder 的替代,甚至在一些对速度要求较高的场景下可以作为 Cross-encoder 的替代。


文末福利
后台回复关键词【入群
加入卖萌屋NLP/IR/Rec与求职讨论群
有顶会审稿人、大厂研究员、知乎大V和妹纸
等你来撩哦~

参考文献

[1] 基于表征(Representation)文本匹配、信息检索、向量召回的方法总结
https://zhuanlan.zhihu.com/p/140323216
[2] PolyEncoder-Facebook的全新信息匹配架构-提速3000倍
https://zhuanlan.zhihu.com/p/119444637

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源开放 | Gowild 狗尾草“七律”知识图谱进入 OpenKG,开放 8000 万中文百科知识三元组数据...

项目网站: https://ai.gowild.cn/kgOpenKG发布地址: http://openkg.cn/dataset/7lore狗尾草科技:https://www.gowild.cn1.七律开放知识图谱简介作为人工智能技术的重要分支,知识图谱自2012年被提出并成功应用后,就获得了迅速发展,…

向量空间 Vector Space -- 推荐系统

文章目录1. 算法解析2. 基于相似用户做推荐3. 基于相似歌曲做推荐4. 总结音乐App的功能越来越强大,不仅可以自己选歌听,还可以根据你听歌的口味偏好, 给你推荐可能会喜爱的音乐,有时候,推荐的还非常适合你的口味。1. 算…

阿里P8架构师谈:分布式事务的解决方案,以及原理、总结

分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务各方面与大家进行介绍。 事务 1.1 什么是事务 数据库…

美团NLP中心算法实习生内推啦!

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术部门介绍搜索与NLP部是美团人工智能技术研发的核心团队,致力于打造高性能、高扩展的搜索引擎和领先的自然语言处理核心技术和服务能力,依托搜索排序,NLP(自然语…

B+树 -- MySQL数据库索引

文章目录1. 定义清楚问题2. 尝试学过的数据结构解决问题3. 改造二叉查找树来解决问题4. 总结为了加速数据库中数据的查找速度,我们常对表中数据创建索引。数据库索引是如何实现的呢?底层使用的是什么数据结构和算法呢? 1. 定义清楚问题 如何…

创建python的虚拟环境(图文教程),并使用。

创建python的虚拟环境 第一步:打开anaconda命令行,即打开anaconda prompt。 base的主环境切换到虚拟环境nlp (base) C:\Users\user>conda env list 查看环境列表 (base) C:\Users\user>conda create -n nlp python 创建一个虚拟环境&#xff0…

领域应用 | 到底什么时候使用图数据库?

本文转载自公众号:TigerGraph。图数据库作为近两年快速发展的新型数据受到了市场极大的关注。但对于很多行业而言,图数据库还是一个很新的概念,企业管理人员和技术人员面临着同样的问题:企业的业务适不适合使用图?到底…

常用的后端性能优化六种方式:缓存化+服务化+异步化等

后端优化的六种方法: 1.硬件升级 硬件问题对性能的影响不容忽视。 举一个例子:一个DB集群经常有慢SQL报警,业务排查下来发现SQL都很简单,该做的索引优化也都做了。后来DBA同学帮忙定位到问题是硬件过旧导致,将机械硬…

有钱可以多任性?OpenAI提出人肉模型训练,文本摘要全面超越人类表现!

文 | 小轶背景三个多月前,OpenAI的GPT-3在NLP界掀起轩然大波。就在上周,视金钱如粪土的OpenAI团队又在文本摘要方面推出了最新力作,全方位超越人类表现。其亮点在于:以人类偏好替代自动化评测方法(如ROUGE、BLUE&#…

数据挖掘第一次作业

我先大概写了写,还有一些读过的论文没有往上放,一些论文之间的联系线条没有搞出来。 就先这样吧!有空再搞,我现在想去玩板子啦!

A*搜索算法--游戏寻路

文章目录1. 算法解析2. 总结仙剑奇侠传这类MMRPG游戏中,有人物角色 自动寻路功能。当人物处于游戏地图中某位置时,点击另一个相对较远的位置,人物就会自动地绕过障碍物走过去。这个功能是怎么实现的呢?1. 算法解析 这是一个非常典…

阿里P8架构师谈:应用后端+移动端的性能优化指标,以及性能优化方法

性能优化专题 阿里P8架构师谈:MySQL数据库的索引原理、与慢SQL优化的5大原则 阿里P8架构师谈:Web前端、应用服务器、数据库SQL等性能优化总结 大型网站Web前端优化最佳实践,以及最全优化工具集锦 阿里P8架构师谈:多线程、架构、…

无主题

厦门月亮少 20191003 之前突然遇到个bug,解决好久无果,开始干点别的事情,大约四天后的今天,我打开程序想解决一下,然后,调试半天无果,妈妈突然微信和我聊天了,聊完以后往终端一瞥&a…

PyTorch Trick集锦

文 | z.defying知乎来源 | https://zhuanlan.zhihu.com/p/76459295前言本文整理了13则PyTorch使用的小窍门,包括了指定GPU编号、梯度裁剪、扩展单张图片维度等实用技巧,能够帮助工作者更高效地完成任务。1、指定GPU编号2、查看模型每层输出详情3、梯度裁…

论文浅尝 | 利用推理链进行视觉问题回答

论文笔记整理:吴杨,浙江大学计算机学院,知识图谱、NLP方向。http://papers.nips.cc/paper/7311-chain-of-reasoning-for-visual-question-answering.pdf动机在视觉问题回答中,较为复杂的问题经常需要多步骤的推理才能够回答&#…

阿里P8架构师谈:数据库、JVM、缓存、SQL等性能调优方法和原则

编辑 性能优化基本是BAT等一线互联网公司程序员必备的技能,以下为大家完整揭晓性能完整的优化方案和方法:包含web网站调优、数据库、JVM调优、架构调优等方案。 第一:Web网站调优 1、尽可能减少HTTP请求:图片合并 (cs…

知乎招聘搜索算法实习生!邀你共建知乎搜索引擎!

星标/置顶小屋,带你解锁最萌最前沿的NLP、搜索与推荐技术部门介绍搜索算法团队是知乎核心算法团队之一,负责知乎搜索框背后的各项算法工作。我们团队一直非常重视新技术在搜索场景的探索和落地,包括但不限于 NLP,排序,…

论文浅尝 | 主题感知的问答生成

Citation: XingC, Wu W, Wu Y, et al. Topic aware neural response generation[C]//Thirty-FirstAAAI Conference on Artificial Intelligence. 2017.动机人机对话在 AI 和 NLP 领域是一项具有挑战性的工作。现存的对话系统包括任务导向的对话系统和非任务导向的聊天机器人。在…

.halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

尊敬的读者: 网络安全是当今数字时代的一大挑战,各种勒索病毒如.halo病毒层出不穷,对用户和企业的数据安全构成了严重威胁。本文将介绍.halo勒索病毒,以及如何恢复被其加密的数据文件,同时提供预防措施。在面对被勒索…

阿里P8架构师谈:多线程、架构、异步消息、Redis等性能优化策略

常见性能优化策略分类 1.代码 之所以把代码放到第一位,是因为这一点最容易引起技术人员的忽视。很多技术人员拿到一个性能优化的需求以后,言必称缓存、异步、JVM等。实际上,第一步就应该是分析相关的代码,找出相应的瓶颈&#xf…