|2020深度文本匹配最新进展:精度、速度我都要
在过去的几年里 , 信息检索(IR)领域见证了一系列神经排序模型的引入 , 这些模型多是基于表示或基于交互的 , 亦或二者的融合 。 然鹅 , 模型虽非常有效 , 尤其是基于 PLMs 的排序模型更是增加了几个数量级的计算成本 。
为了在 IR 中协调效率和精度 , 一系列基于表征学习的后期交互类深度排序模型被一一提出 , 致力于基于交互范式来计算查询 query 和文档 doc 的相关性 。
1 传统做法
传统的 Representation-Based 模型是如下图所示的双塔结构 , 分别计算 Query 端和 Doc 端的隐层表示 , 最后选择 Score function(如dot product , cosine similarity)计算相似度 。 这种方式由于失去了 Query-Doc 之间的交互 , 可能会产生语义漂移 , 精度相对来说不是太高 , 所以一般用来做向量召回或者粗排[1] 。
本文插图
经典模型:DSSM, SNRM
- 优点:计算量少 , Document 可以离线处理得到其表征 。 线上运行时 , 只需要在线计算Query 的隐层表示 , 而 Doc 的隐层表示可以通过查询得到 , 非常适合精度要求不高 , 速度要求较快的场合 。
- 缺点:失去了交互信息 , 类似于 Word2Vec 的问题 , 学习出来的是一个静态向量 , 不同上下文场景下 , 都是同一个表征 。
今天介绍的三篇论文就是针对以上局限进行改进 。
- DC-BERT 通过解耦问题和文档实现有效的上下文编码 。
- ColBERT、Poly-encoders 则是在原始的 Representation-Based 模型中增加了弱交互 , 这种方法既丰富了模型的表达能力 , 又不会增加太大的计算量 , 并且 Doc 端还是能够预先处理 , 保证了在线运行的速度 。
论文名称: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 自底向上分为如下三个部分:
1、Dual-BERT component
DC-BERT 框架包含两个 BERT 模型 , 分别对问题和每个检索得到的文档进行编码 。
- 在训练期间 , 算法将更新两个 BERT 模型的参数以优化学习目标;
- 训练模型后 , 我们会对所有文档进行预编码 , 并将其编码存储在离线缓存中;
- 在测试期间 , 我们只使用在线 BERT 模型对问题进行一次编码 , 并从缓存中读出由 retrieve 模块检索得到的所有候选文档的缓存编码 。
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 部分 。
本文插图
每个查询嵌入都通过 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 的信息进行了交互 , 具体公式如下:
计算 query 中每个 term 与 doc 的每个 term 的最大相似度 , 然后累加得到 score 。 由于之前进行过 Normalize , 我们只需要计算 inner-products 得到的即为余弦相似度 。
4、实验结论
文章采用了 Microsoft 于 2016 年引入的阅读理解的数据集 MS MARCO , 它是从网页中收集的800万个段落的集合 , 这些段落是从必应收集到100万个实际查询的结果 。
本文插图
通过实验数据对比可以看出 , ColBERT 的效果比传统 ConvKNRM 明显要好 , 此外检索的速度比 BERT-base 模型要快几个数量级 。
本文插图
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 时时刻刻都应相互感知 , 信息相互交融 , 从而更深刻地感受到相互之间是否足够匹配 。
本文插图
相较于 Siamese Network (Bi-encoder) , 这类交互式匹配方案可以在Q(Query)和D(Doc)之间实现更细粒度的匹配 , 所以通常可以取得更好的匹配效果 。 但是很显然 , 这类方案无法离线计算candidates 的表征向量 , 每处理一个 query 都只能遍历所有(query, candidate) 的 pairs 依次计算相关性 , 这种时间和计算开销在工业界是不被允许的 。
1、模型结构
总的来说 , 本文是对速度快但质量不足的 Bi-encoder 架构和质量高但速度慢的 Cross-encoder 架构的一种折中 , 其基本结构如下图:
本文插图
Poly-encoder的思想非常简单 。 将给定的候选标签用Bi-encoder中的一个向量表示 , 从而可以缓存候选 doc 的内容以加快推理时间 。 在推理阶段 , 将 query 的多种语义编码利用 attention 机制与候选 content 共同作用 , 从而可以提取更多信息 。 content 是 doc 文本经过离线 Candidate Encoder 编码得到语义向量 。
具体来讲:
- Poly-encoder首先是通过初始化多个attention模块 , 对每一个query产生不同的 , 以此获取 query 中一词多义或切词带来的不同语义信息;
- 将这些具有相同维度的query语义向量进行动态组合成最终的;
- 最后计算 与每一个由 Bi-encoder 编码的候选 的匹配程度 。
2、实验效果
本文选择了检索式对话数据集 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 的替代 。
[赠书福利]
在AI科技评论9月11日推文“《柏拉图与技术呆子》:探讨人类与技术的创造性伙伴关系”留言区留言 , 谈一谈你对本书的相关看法、期待等 。
AI 科技评论将会在留言区选出5名读者 , 每人送出《柏拉图与技术呆子》一本 。
活动规则:
1. 在留言区留言 , 留言点赞最高且留言质量较高的前 5 位读者将获得赠书 。 获得赠书的读者请联系 AI 科技评论客服(aitechreview) 。
2. 留言内容和留言质量会有筛选 , 例如“选我上去”等内容将不会被筛选 , 亦不会中奖 。
3. 本活动时间为2020年9月11日 - 2020年9月18日(23:00) , 活动推送内仅允许中奖一次 。
EMNLP 9月16日出录用结果了!
【|2020深度文本匹配最新进展:精度、速度我都要】加AI科技评论的官方微信 , 备注EMNLP ,拉您进交流群!
推荐阅读
- 肝癌|深度总结|慢乙肝抗病毒治疗中发生肝癌的风险预测模型
- 布法罗大学|新工具可以通过眼睛里的微小反射来识别出深度伪造照片
- ai算法|62个AI算法被指存在重大问题,都不具有新冠临床诊断价值
- 哈尔滨工业大学|2020“中国高等学校十大科技进展”揭晓!
- 阿尔茨海默病|阿尔茨海默病疗法开发即将迎来拐点?深度解读礼来在研抗体详细结果
- 古脊椎所|古脊椎所两项科研成果领衔入选“2020年度中国古生物学十大进展”
- 肝硬化|2020年英国胃肠病/肝病学会指南:肝硬化腹水管理
- 太空|2020年,人类找到的7个非常惊人的太空发现
- 广西国际壮医医院|奇迹!深度昏迷4个月,少年苏醒后写下“好好活下去”
- 光伏电池|深度|主流光伏电池效率提升方式与潜力分析
