最专业的医疗网站建设,网站上不去首页seo要怎么办,南宁网站怎么做seo,WordPress重力表单注册文 | QvQ编 | 兔子酱在过去的几年里#xff0c;信息检索(IR)领域见证了一系列神经排序模型的引入#xff0c;这些模型多是基于表示或基于交互的#xff0c;亦或二者的融合。然鹅#xff0c;模型虽非常有效#xff0c;尤其是基于 PLMs 的排序模型更是增加了几个数量级的计算… 文 | QvQ编 | 兔子酱在过去的几年里信息检索(IR)领域见证了一系列神经排序模型的引入这些模型多是基于表示或基于交互的亦或二者的融合。然鹅模型虽非常有效尤其是基于 PLMs 的排序模型更是增加了几个数量级的计算成本。为了在 IR 中协调效率和精度一系列基于表征学习的后期交互类深度排序模型被一一提出致力于基于交互范式来计算查询 query 和文档 doc 的相关性。传统做法传统的 Representation-Based 模型是如下图所示的双塔结构分别计算 Query 端和 Doc 端的隐层表示最后选择 Score function如dot productcosine 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 Encodingarxiv地址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 componentDC-BERT 框架包含两个 BERT 模型分别对问题和每个检索得到的文档进行编码。在训练期间算法将更新两个 BERT 模型的参数以优化学习目标;训练模型后我们会对所有文档进行预编码并将其编码存储在离线缓存中;在测试期间我们只使用在线 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 componentDC-BERT 框架将 ReRank 任务作为一个二分类任务通过计算候选文档是否与该问题相关来进行重排序。如下向右滑动查看完整公式其中 是问题和候选文档对 和 分别是问题和文档的 token 经过 Transformer 模块的输出经过交互后的输出。这篇论文的核心思路是采用两个 BERT 模型一个 offline 模型提前向量化一个online 的模型实时在线计算 query 的词级别向量表示最后再用一层 Transformer 做线上相关性预测。ColBERT论文名称SIGIR 2020 | ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction over BERTarxiv地址https://arxiv.org/pdf/2004.12832.pdfColBERT 提出了一种新颖的后期交互范式。为了同时兼顾匹配的效率和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 EncoderQuery Encoder计算如下:向右滑动查看完整公式通过在查询 query 之前添加特殊标记 在文档之前添加另一个标记 来区分与查询和文档相对应的输入序列。BERT 是编码器CNN 是做维度变换用来对 BERT 输出降维Normalize 为了之后计算余弦相似度而做的正则化处理。值得注意的是文章对 query 填充掩码标记的另外一个目的是做 query augmentation这一步骤允许 BERT 在与这些掩码相对应的位置上生成基于查询的新嵌入这一机制旨在对 query 中新术语或者重要词进行重新编码学习。Document Encoder结构与query encoder类似主要区别如下添加筛选器 Filter。因为 Doc 一般比较长Filter 通过一个预定义的列表对文档中一些特殊的 token 以及标点符号进行过滤。没有添加 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 Scoringarxiv地址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 编码得到语义向量。具体来讲Poly-encoder首先是通过初始化多个attention模块对每一个query产生不同的以此获取 query 中一词多义或切词带来的不同语义信息向右滑动查看完整公式将这些具有相同维度的query语义向量进行动态组合成最终的向右滑动查看完整公式最后计算 与每一个由 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