每天给你送来NLP技术干货!


来自:圆圆的算法笔记

今天给大家介绍3篇WWW 2022检索方向3篇值得一读的文章。第一篇文章是北邮和微软联合提出的利用对比学习、可导量化对多阶段向量化检索的优化。第二篇文章是理海大学提出的StructBERT,用于进行结构化表格数据的检索。第三篇文章是首尔大学提出的基于prompt的query-document向量化召回模型。

1

基于对比学习和可导量化的向量化检索

本文主要解决的是query-document检索中的性能问题。目前业内的主流检索方法是query侧和document侧分别使用encoder生成表示,在线阶段使用ANN的方式进行向量检索。当document的数量较大时,直接放到内存中检索是不现实的。因此,一般会通过一些优化的检索方法,例如基于量化的检索方法进行高效检索。将每个document生成两个embedding,一个是通过量化生成的离散表示sparse embedding,这部分表示的数据量较小,可以直接放到内存中,主要用来进行粗选,在全量corpus中选出最相关的topK;另一部分是dense embedding,这部分embedding参数量加到,会在粗选的候选集基础上进行进一步筛选,得到最终的结果。

本文采用可导的向量量化的方法生成sparse embedding,并且引入了监督信号通过对比学习指导sparse embedding的学习。首先介绍一下什么是向量量化。向量量化的方法,整体流程如下图,将向量分成多份,每份内部使用Kmeans进行聚类,这样每份内的元素都可以离散化为cluster id进行表示,每个类别都有一个对应的向量表示,实现了原始向量的压缩。

Differentiable Product Quantization for End-to-End Embedding Compression(ICML 2020)利用量化的思路提出了对embedding table进行压缩的方法。首先将原始的embedding table利用一个Key Matrix进行离散化生成codebook,再使用一个Value Matrix进行逆向操作生成重构的embedding表。在实际使用的时候,只保留中间产出的codebook和value matrix。在离散化过程中,将embedding和Key矩阵的向量都分成D份,计算每份的距离并以距离最小的作为其对应的离散化id表示,和量化方法类似。为了让上述过程是可导的,将距离计算取最小的argmin操作改为softmax操作,实现了离散化过程可导。

这篇文章利用了这种可导的量化思路优化ANN检索。原来的量化方法是无监督的,而本文采用了有监督的方法进行量化。首先通过上述可导的量化方法生成每个文档的离散化表示,然后使用对比学习的思路,在此基础上进一步引入监督信号指导codebook生成过程,让相关的query-document对离得更近,不相关的离得更远。

在dense embedding的学习方面,本文重点强调第一阶段和第二阶段的document数据分布不一致,因此针对第二阶段dense embedding的学习在第二阶段的子集中进行采样。

本文在负样本的采样方法上也进行了详细设计。在训练Sparse Embedding的阶段,负样本的构造采用了对比学习中常用的in-batch negitives,即其他pair对的正样本被视为前样本的负样本。此外,通过BM25采样语义相似的负样本,这可以提升负样本和正样本的区分难度。对于一个大小为N的batch size,每一对正样本会有2N个负样本,来自于其他样本和它们使用BM25采样的语义相关的负样本。

在第二阶段的负样本采样方法和第一阶段不同。第二阶段的候选集为和query相关性高的document,而第一阶段为全量document。为了让第二阶段的训练数据集和线上实际应用时的候选数据集数据分布相同,文中采用了二部图采样的方法。首先通过第一阶段训练的Sparse Embedding计算query到document的距离,选择距离TopK的query-document对建立边,这个过程模拟了线上使用时第一个step构造候选document集合的过程。然后在二部图上通过random walk或snowball sampling进行采样构造训练样本。通过这种方式构造负样本,其实生成了区分难度更大的样本,在Sparse Embedding相关性高的样本中构造正负样本,区分难度更大,也和线上实际应用的第二阶段场景相符。

2

基于对StruBERT:结构化信息检索

本文主要解决的问题是结构化数据的检索问题:给定一个文本query和一个table(包含多行多列)的结构化数据,计算二者的相关性;或者给定两个table,判断这两个table是否相关或计算相关性得分。

本文提出了StruBERT方法对结构化数据进行编码。一个table数据可以拆解出3方面信息:row-based、column-based和textual information(如表说明等)。对于row-based信息,将每行各个单元的信息拼接到一起,每个单元格的表达格式为【表头名+字段类型+单元内容】。例如对于下图中的R1的第一个单元格,可以得到palyer text Ronald这种表示。将同一行的不同单元的表示使用[SEP]拼接到一起。对于column-based,也使用相同的方法是得到对应序列。这样生成了row-based sequence和column-based sequence,可以用来表示原来table的结构化信息。为了将textual information也考虑进来,将其拼接到每个row和column序列的前方。

对于每个生成好的序列,使用BERT进行编码,BERT输出每个token的表示。文本使用average pooling,将一个单元格内的信息融合成一个表示。这样,每个row或column的序列都得到一个有多个单元格的embedding组合到一起的表示。最后,通过horizontal和vertical两个方向的attention获取两个方向上各个单元格信息的依赖关系。以StruBERT为基础,产出结构化数据的表示后,可以使用该表示进行下游的table检索相关任务,例如以query检索table,或以table检索table,table部分使用S填入BERT进行编码。

3

基于Prompt的文档检索模型

在query-document检索问题中,主流解决方法是基于预训练Bert作为Encoder,提取query和document的信息,进而得到相关性分。主要有两种做法,一种是将query和document在输入前进行交叉(cross-encoder),如PASSAGE RE-RANKING WITH BERT(2019)中采用的这种方法;另一种是对query和document分别编码(bi-encoder)。第二种方法的效果往往不如第一种,但是第二种方法可以提前分别计算好每个query和document的表示,再进行后续相关性计算,计算代价要比第一种方法需要每个pair都计算得分小得多。对于bi-encoder,业内目前的主流模型为孪生网络,query侧和document侧使用相同的Bert生成各自的表示,并且两个encoder是相同的,防止不同的encoder对query和document生成的表示不在同一空间而影响效果。

然而,query和document的数据分布本身差异很大,例如document的单词数量会比query大得多。在这个视角上,其实是需要对query和document的encoer采用一些差异化的网络结构来建模这种数据分布的差异的。

本文提出了一种Semi-Siamese半孪生网络,并结合了轻量级的finetune方法(如prompt finetune、prefix finetune)。本文的方法可以概括为,使用预训练的Bert初始化query侧和document侧的Encoder,并通过改造prefix finetune和LoRA两种轻量级finetune既保证两个Encoder的共性,又能建立差异性。

首先介绍文中采用的prefix finetune和LoRA这两种轻量级finetune方法。Prefix finetune在NLP Prompt系列——Prompt Engineering方法详细梳理一文中进行过详细介绍,感兴趣的同学可以。在finetune阶段整个预训练模型参数freeze,在输入样本前增加多个可学习的prefix embedding,finetune的时候只更新prefix embedding。这里prefix embedding相当于一个可学习的上下文信息,根据特定任务进行调整,实现了轻量级finetune。而LoRA则是通过引入参数量远小于原模型的可分解的两小矩阵建立一个旁路,通过finetune这个旁路来影响预训练模型。两个方法的示意图如下。

文中为了同时保证query侧和document侧Encoder参数的一致性,以及建模query和document的差异性,对prefix tuning和LoRA进行了改造。在prefix-tuning中,插入的prefix embedding既有query和document共享的,也有query和document私有的。在LoRA中也是类似的思路,使用的旁路矩阵既有query和document共享的,也有query和document私有的。

文中提出结合prefix-tuning和LoRA两种finetune方式,增强轻量级finetune的效果。采用了如下流程的序列式混合finetune方法,例如先训练prefix embedding,然后固定prefix embedding,继续用LoRA进行finetune。

文中进行了3组实验。首先在cross-encoder架构中的对比了不同finetune方法的效果,可以看到LoRA+方法(对全连接、Attention等部分参数使用可分解矩阵进行finetune)的方法取得了最有效果,并且效果要优于直接finetune所有参数。而prompt-tuning和prefix-tuning的效果要差一些。

接下来,作者对比了在bi-encoder中不同finetune方法的效果对比,和cross-encoder中的实验效果差别较大。在bi-encoder中,LoRA系列模型没有特别明显的效果优势,prompt-tuning和prefix-tuning体现出一定优势。并且将二者进行结合的方式,相比单独使用prefix-tuning和LoRA方法效果进一步提升,证明了本文提出的混合finetune方法在bi-encoder架构中的有效性。

对于这组实验现象,文中提出一些解释。对于query很短的数据集,Bert可能很难从query中提取有效信息。而引入prefix embedding后,相当于向模型中增加了和这个任务相关的上下文信息,有助于提取更丰富的信息。而这种方法在query较长的数据集中效果不明显,因为query足够长能够比较容易提取出较多信息。对于LoRA+,通过对比可以发现在bi-encoder中效果会明显优于LoRA,作者分析是由于cross-encoder建模更复杂的,因此LoRA+引入更多可finetune参数会带来效果提升。

最后,作者分析了在finetune引入半孪生(即个性化)的效果,实验结果表明,引入半孪生的效果会优于query和document侧使用完全相同的Encoder,验证了对query和docuemnt的Encoder引入个性化信息的效果。

4

总结

这篇文章给大家详细介绍了WWW2022中信息检索方向的3篇优质论文,涵盖了结构化数据检索、可导量化、轻量级Finetune的检索模型等工作。


最近文章

EMNLP 2022 和 COLING 2022,投哪个会议比较好?

一种全新易用的基于Word-Word关系的NER统一模型,刷新了14种数据集并达到新SoTA

阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果


下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
下载二:南大模式识别PPT  后台回复【南大模式识别】

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

WWW'22 | 信息检索方向值得一读的3篇论文详解相关推荐

  1. 读Google三篇论文有感

    读Google三篇论文有感 在这一个星期内,我认真读了谷歌的三篇重要论文,下面是我的读后感.这三篇论文分别是Google FS.MapReduce.Bigtable.Google没有公布这三个产品的源 ...

  2. ICLR 2021投稿中值得一读的NLP相关论文

    我们从 ICLR 2021开放投稿的3000篇论文中,粗略筛选了近100篇与自然语言处理领域中也许值得一读的论文,供大家查阅. 理论.模型与经验性分析:38篇 问答与阅读理解:4篇 知识图谱:4篇 文 ...

  3. 图灵奖得主Judea Pearl:最近值得一读的19篇因果推断论文

    近日,图灵奖得主.因果科学之父Judea Pearl 在推特上分享了一个论文集列表PDF,推荐了19篇大多近期发表.值得一读的因果推断相关文章(推荐列表下载),同时特别highlight了一下&quo ...

  4. 多目标跟踪(MOT)领域近期值得读的几篇论文

    ©PaperWeekly 原创 · 作者|黄飘 单位|华中科技大学硕士生 研究方向|多目标跟踪 Siamese Track-RCNN 论文题目:Multiple Object Tracking wit ...

  5. 方向梯度直方图(Histogram Of Gradient)详解

    特征描述子(Feature Descriptor) 特征描述子就是图像的表示,抽取了有用的信息,丢掉了不相关的信息.通常特征描述子会把一个w*h*3(宽高3,3个channel)的图像转换成一个长度为 ...

  6. 不明觉厉!用了近10年,才有人读懂这篇论文

    绘图:Andreas de Santis 来源:环球科学 "数学物理开放问题"网站列出了数学物理领域最令人费解的13道难题.对科学家来说,解开其中任意一题,都是至高无上的荣誉.10 ...

  7. 转载:CVPR 2018值得一看的25篇论文,都在这里了 | 源码 解读

    转载于:http://www.tuan18.org/thread-2119-1-1.html (出处: 人工智能培训) Unsupervised Person Image Synthesis in A ...

  8. 幻读(phantom read)详解

    基本定义(也是来自网络) 当某个事务a范围查询数据时,另一个事务b在该范围内插入了数据,当事务a再次范围查询时,会产生幻行(即多了事务b插入的那行数据). 网络上的其他定义 看看幻读的正确理解 时间点 ...

  9. 【区块链技术工坊22期实录】王登辉:BANCOR算法详解及代码实现

    1,活动基本信息 1)题目: [区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: 1)BANCOR算法的特点和优劣势 2)BANCOR算法和举例 3)如何加入BANCOR.NETWOR ...

  10. Python读execl之xlrd库函数详解一:工作簿相关

    Python读execl主要用到xlrd库,用到主要函数详解如下: 准备工作: 安装xlrd库: pip install xlrd 待读取的execl文件,本文使用如下: 文件名:datalist.x ...

最新文章

  1. 差异基因分析:fold change(差异倍数), P-value(差异的显著性)
  2. sharepoint站点Feature的定制与开发 以及 stsadm 常用命令
  3. spring boot (3.自动配置@enableautoconfiguration)
  4. mysql导入csv大数据
  5. iOS 10 (X8)上CoreData的使用(包含创建工程时未添加CoreData)
  6. JAVA 常用开发快捷键大全
  7. js浮点数加减乘除精度不准确
  8. 计算机专用英语1500词带音标,计算机专用英语词汇1500词音标版.pdf
  9. 关于整车上下电流程和电源管理
  10. Pytorch中函数参数dim的理解
  11. php 视频网站采集器,自己在用的视频网站开源,真正的自动采集无需手动更新...
  12. 微软视窗的C++封装
  13. ps一点等于多少厘米_在ps中1厘米是多少像素
  14. Caché 时间函数
  15. 每日加瓦,终成栋房5-正则表达式
  16. csr sha2生成 linux,Openssl生成csr的解决方案
  17. 淘宝客推广(一):利用淘礼金做拉新
  18. 云服务器2核和4核区别大吗?如何选择几核云服务器?
  19. TextMeshPro常用中英文字符(含多语言)
  20. 网银新一代液晶按键USBkey安全分析

热门文章

  1. day1-接口测试与接口测试工具
  2. python-引用/模块
  3. js获得URL中的参数
  4. dragstart drag dragend dragenter dragover dragleave drop
  5. 【原生】封装一个判断数据类型的函数的方法,准确判断一个数据的类型
  6. get与post在技术上的区别
  7. [NOI2006] 神奇口袋
  8. ats反向代理和重定向
  9. Linux驱动模型解析bus之platform bus
  10. HNOI2017 滚粗记