RetroMAE论文阅读

1. Introduction

在NLP常用的预训练模型通常是由token级别的任务进行训练的,如MLM和Seq2Seq,但是密集检索任务更倾向于句子级别的表示,需要捕捉句子的信息和之间的关系,一般主流的策略是自对比学习(self-contrastive learning)和自动编码(auto-encoding)。

  • self-contrastive learning的效果会被数据增强的质量所限制,且需要大量的负样本,而auto-encoding不受制于这两个问题
  • auto-encoding的研究重点在于encoding-decoding workflow的设计,对数据要求不高,但是下面两个因素会影响基于自动编码方法的性能:重建任务必须对编码质量有足够的要求;预训练数据需要被充分利用

本文的作者针对上面的两个因素,提出了一种面向检索的基于自动编码的预训练模型–RetroMAE:

在这里插入图片描述

  • 全新的自动编码流程:输入句子被掩码两次,第一次的掩码结果输入到编码器生成句子嵌入,另一个掩码结果结合生成的句子嵌入,输入到解码器中,通过MLM恢复原始句子;
  • 非对称的结构:编码器是一个全尺寸的BERT,用来生成有区别的句子嵌入;解码器只有一个单层的transformer。Encoder部分是一个全尺寸的BERT(有12层以及768个隐藏维度),Decoder部分是一个单层的Transformer
  • 非对称的掩码率:编码器的输入掩码率为15%-30%;解码器的掩码率为50%-70%。

总的来说:输入的句子在进入Encoder之前先进行15%~30%的适度mask,经过Encoder之后生成Sentence embedding;输入的句子在进入Decoder之前先进行50%~70%的mask,然后与Sentence embedding一起通过Decoder还原Sentence

论文

2. RetroMAE模型的优势

  • 传统的自回归可能会在解码过程中注意前缀(与GPT的mask方式相似),且传统的MLM(Masked Language Model)只mask一个较小比例的输入token(15%)。而RetroMAE会mask掉大部分的decoding输入,且使用简单的单层transformer作为decoder,这样的话在重建输入时仅仅利用decoder的input就不够了,会促使encoder去捕捉输入的深层语义信息。
  • 确保了训练信号完全由input sentence生成,是由自己提出的enhanced decoding实现的

3. 实现细节

  • 选择[CLS] token的最后一个hidden state作为sentence embedding
  • 在Decoder阶段masked input直接和sentence embedding进行拼接
    • 式(1)是sentence embedding的生成,输入通过编码器生成embedding
    • 式(2)是将sentence embedding和masked input拼在一起,其中 e x i e_{xi} exi表示token x i x_i xi的嵌入, p i p_i pi表示位置嵌入
    • 式(3)是还原输入的过程,CE表示cross-entropy loss
    • 图C的M矩阵表示第i个token是由第 i i i行可见的上下文重建的(可见的是蓝色的点),比如第0个token是由第1个context重建的,第1个token是由第0个和第2个token决定的。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • Enhanced Decoding
    从(2)和(3)两个式子中可以看到交叉熵损失只能从被掩码的tokens中进行训练获得,而且,每次重建都是基于相同的上下文,即 H X d e c H_{X_{dec}} HXdec。作者认为满足下列条件可以进一步增强预训练的效果:

    • 在输入句子中获得更多的训练信号
    • 基于多样的上下文执行重建任务

    所以作者提出了通过双流自我注意力和特定位置注意力掩码的增强解码,具体来说,作者生成了两个输入流: H 1 H_1 H1(query)和 H 2 H_2 H2 (context),解码操作(图C):
    在这里插入图片描述

其中h_x是sentence embedding,e_x_i是token embedding(没有被掩码的token embedding),p_i是position embedding。然后作者引进了特定位置的注意力掩码矩阵M,自注意力计算如下:

在这里插入图片描述

在原始的注意力机制中,Q、K、V的计算都是同一输入,而作者计算Q时选用 H 1 H_1 H1作输入,计算K和V时用 H 2 H_2 H2作输入,这样就可以基于的是多样的上下文输入进行重建句子。然后输出的A和 H 1 H_1 H1进行残差连接被用来重建原始输入,通过以下目标函数进行优化:

在这里插入图片描述

最终的目标函数是编码器损失和解码器损失之和。
要知道每个token x i x_i xi是基于对矩阵M的第 i i i行可见的上下文进行重建的,所以根据下面的规则生成掩码矩阵:

在这里插入图片描述

当我们重建 x i x_i xi这个token时,需要找出不同的上下文,所以在这里进行了抽样,s指的是抽样的token的集合, x j ∈ s ( X ≠ i ) x_j\in s(X_{\ne i}) xjs(X=i)表示当 x j x_j xj在抽样的token里,或者当 i ≠ 0 i\ne 0 i=0 j = 0 j=0 j=0时,该位置在掩码矩阵中的值设为0,其它位置的值设为 − ∞ -\infty ,如图C所示。如此一来,模型可以获得更多的训练信号

  • 整体的RetroMAE算法如下所示:

在这里插入图片描述

4. Experiment

作者评估了由 RetroMAE 的预训练编码器生成的句子嵌入的检索性能,其中探讨了两个主要问题:

(1) 与通用预训练模型和面向检索的预训练模型相比,RetroMAE 对零样本和有监督的密集检索的影响。

(2)RetroMAE中四个技术因素的影响:增强解码、解码器大小、解码器掩码率和编码器掩码率。

main results:
  • 在BEIR基准上进行零样本密集检索性能对比
    在这里插入图片描述
  • 基于DPR微调方法的有监督评估结果
    在这里插入图片描述
  • 基于ANCE微调方法的有监督评估结果

在这里插入图片描述

  • 与同类方法的预训练模型 coCondenser的对比

在这里插入图片描述

  • 通过知识蒸馏方法的性能对比

在这里插入图片描述

消融实验

解码方法、解码器规模、解码器的掩码率和编码器的掩码率的影响:
在这里插入图片描述

可以看到不使用增强解码的性能明显比使用增强解码的性能要低;

虽然解码器的transformer的层数从1增加到3性能并没有下降多少,但是会产生严重的计算成本,所以结合准确率和计算成本,单层的transformer更适合解码器;

对于解码器的掩码率带来的影响,作者分了两个部分:一个是使用增强解码,另一部分未使用增强解码。可以看到随着掩码率的提升,最终的性能也会跟着提升,使用增强解码的性能在掩码率为0.5时到达峰值,未使用增强解码的一组的性能在掩码率为0.7时达到峰值;

对于编码器的掩码率,作者发现调整为30%时性能会提升,但是增加到90%时性能会急剧下降,这表示适当提高掩码率有利于增强模型的学习能力,但是过高的掩码率会导致原本的语义信息的缺失。

5. conclusion

作者提出了 RetroMAE,这是一种新的掩码自动编码框架,用于面向检索的预训练语言模型:输入句子被随机的掩码,然后输入到编码器和解码器,然后句子嵌入与解码器的掩码输入进行结合以重建原始输入。作者引入了非对称模型结构(全尺寸编码器和单层解码器)和非对称掩码率(编码器的中等焱玛利率和解码器的高掩码率),这使得重建要求足够高。作者还提出了增强解码,充分利用了预训练数据。可以看到作者提出的模型在零样本密集检索以及有监督的密集检索性能都有所提升。

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

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

相关文章

Vscode Vim自动切换

在VsCode里安装了Vim插件,由于Vim插件存在Normal和Insert两种模式,会需要经常性的按shift切换中英文,太过麻烦,本文介绍一下如何通过im-select来解决。 首先先确保自己的电脑里装有英文语言包,win10系统下可以使用Win…

PanNet: A deep network architecture for pan-sharpening(ICCV 2017)

文章目录 AbstractIntroduction过去方法存在的问题我们提出新的解决方法Related work PanNet: A deep network for pan-sharpening(PanNet:用于泛锐化的深度网络)Background and motivationPanNet architectureSpectral preservationStructural preserva…

Docker - 常用命令

Docker - 常用命令 帮助命令 docker version # 查看docker版本信息 docker info # 显示docker的系统信息,包括镜像和容器的数量 docker 命令 --help # 帮助命令官网帮助文档:https://docs.docker.com/engine/reference/commandline/cli/ 镜像…

Vue.Draggable 踩坑:add 事件与 change 事件中 newIndex 字段不同之谜

背景 最近在弄自定义表单,需要拖动组件进行表单设计,所以用到了 Vue.Draggable(中文文档)。Vue.Draggable 是一款基于 Sortable.js 实现的 vue 拖拽插件,文档挺简单的,用起来也方便,但没想到接下来给我遇到了灵异事件……

05预测识别-依托YOLO V8进行训练模型的识别——对视频中的目标进行跟踪统计

上文中详细介绍了如何对视频进行抽帧,并对帧的图像进行目标识别。但在日常工作中,我们也会遇到需要对目标进行跟踪统计的情况,比如我们需要连续统计某一类目标有多少个的时候,如果单纯从帧中抽取图像的话,系统将无法判断是否为同一目标,从而造成目标数量统计的重复,导致…

最新大麦订单生成器 大麦订单图一键生成

1、8.6全新版 本次更新了四种订单模板生成 多模板自由切换 2、在软件中输入生成的信息,这里输入的是商品信息,选择生成的商品图片,最后生成即可 新版大麦订单生成 四种模板图样式展示 这个样式图就是在大麦生成完的一个订单截图&#xff…

lv11 嵌入式开发 ARM体系结构理论基础(异常、微架构)4

1 异常概念 处理器在正常执行程序的过程中可能会遇到一些不正常的事件发生 这时处理器就要将当前的程序暂停下来转而去处理这个异常的事件 异常事件处理完成之后再返回到被异常打断的点继续执行程序 2 异常处理机制 不同的处理器对异常的处理的流程大体相似&#xff0c…

SSM图书管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 图书管理系统是一套完善的信息系统,结合springboot框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和 数据库,系统主要…

2023美团外卖商家销量

数据内容字段如下 外卖ID 外卖STR 外卖商家名称 地址 城市 省份 电话 纬度 经度 月销 起送价 评分 经营许可证 食品许可证 资源下载:https://download.csdn.net/download/WANJIAWEN1002/88444367?spm1001.2014.3001.5503

排序算法之-冒泡

顺序排序算法原理 从头开始遍历未排序数列,遍历时比较相邻的两个元素,前面的大于后面的,则双方交换位置,一直比较到末尾,这样最大的元素会出现在末尾,接着再依次从头开始遍历剩余未排序的元素,…

Python自动化测试selenium指定截图文件名方法

这篇文章主要介绍了Python自动化测试selenium指定截图文件名方法,Selenium 支持 Web 浏览器的自动化,它提供一套测试函数,用于支持 Web 自动化测试,下文基于python实现指定截图文件名方法,需要的小伙伴可以参考一下 前…

drawio连接线使用技巧和功能大全

drawio连接线使用技巧和功能大全 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址draw.io或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能,并实现了…