大语言模型-RetroMAE-检索预训练模型

一、背景信息:

RetroMAE是2022年10月由北邮和华为提出的一种密集检索预训练策略。
RetroMAE主要应用于检索模型的预训练,模型架构为非对称的Encoder-Decode结构。

二、整体结构:

RetroMAE的模型架构为非对称的Encoder-Decode结构。

Encoder部分: 是由类似于BERT的Encoder组成(12层Transformer的Encoder),用于生成句向量。
Decoder部分: 仅有由一层类似于Transformer的Decoder构成,用于重建句子。

1、token级别的预训练:比如MLM或者Seq2Seq,难以获得高质量句向量。
2、对比学习:受限于数据增强的质量,需要大量负样本。
3、自重建方法:不受数据增强跟负样本采样策略的影响,但对对编码质量要求高,训练数据也要求被充分利用到。

RetroMAE中的掩码

在Encoder阶段,对sentence进行15%~30%的mask,通过Encoder得到句子向量的表示(这里用Encoder的[CLS] token表示)。
在Decoder阶段,句子被进一步加大噪音,mask的比例为50%~70%,通过增加mask的比例来提升任务的复杂性。
而整个预训练的任务则为:在encoder阶段,对被掩码的部分进行重构,也就是MLM(Masked Language Modeling),在decoder阶段对整个句子进行重构,整体loss函数为:

在这里插入图片描述

三、Encoder模块

假设,句子输入为X;Encoder部分随机mask(15%~30%)后为 X ~ e n c \tilde{X} _{enc} X~enc;Encoder编码器用 Φ e n c ( ) \Phi_{enc}() Φenc()表示。
因此经过Encoder后得到的句子向量: h X ~ ← Φ e n c ( X ~ e n c ) {h} _{\tilde{X}} \gets \Phi_{enc}(\tilde{X} _{enc}) hX~Φenc(X~enc)

四、Decoder模块

相比于Transformer中的Decoder结构,RetroMAE做了一些改进,并将其称为Enhanced-Decoder。

Enhanced-Decoder的核心想法,为以下两点:

  • 可以从输入数据中获取更多信息
  • 可以根据不同来源的数据训练模型

因此,Enhanced-Decoder在attention模块同时使用了两个输入流 H 1 、 H 2 H_{1}、H_{2} H1H2;输入流 H 1 H_{1} H1保留了较多输入数据的信息。
H 1 ← [ h X ~ + p 0 , . . . , h X ~ + p N ] H 2 ← [ h X ~ , e x 1 + p 0 , . . . , e x N + p N ] \begin{matrix} H_{1} \gets [h_{\tilde{X}}+p_{0},...,h_{\tilde{X}}+p_{N}] \\H_{2} \gets [h_{\tilde{X}}, e_{x_{1}}+p_{0},...,e_{x_{N}}+p_{N}] \end{matrix} H1[hX~+p0,...,hX~+pN]H2[hX~,ex1+p0,...,exN+pN]
其中,句子输入为X;Decoder部分随机mask(50%~70%)后为 X ~ d e c \tilde{X} _{dec} X~dec; e x i e_{x_{i}} exi表示没有掩码过的词向量; p i p_{i} pi表示对应的位置向量;
此外,因为Transformer中的attention的掩码矩阵是一个的下三角矩阵优势在于增强模型生成能力,而检索通常更关注于模型的表示能力需要看到上下文,因此这里引入了Position-Specific Attention Mask。
继而Enhanced-Decoder的attention层为以下形式:

Q = H 1 W Q Q = H_{1}W_{Q} Q=H1WQ , K = H 2 W K K=H_{2}W_{K} K=H2WK , V = H 2 W V V=H_{2}W_{V} V=H2WV

M i j = { 0 , a t t e n d e d − ∞ , m a s k e d M_{ij}=\left\{\begin{matrix}0,attended \\-∞,masked \end{matrix}\right. Mij={0attendedmasked

A = s o f t m a x ( Q T K d + M ) V A = softmax(\frac{Q^{T}K}{\sqrt{d}}+M) V A=softmax(d QTK+M)V

最终RetroMAE的损失由encoder部分的MLM损失,deocder部分自重建的交叉熵损失两部分相加得到。
L d e c = ∑ x i ∈ X C E ( X i ∣ Φ d e c ( X ~ d e c ) ) L_{dec} = \sum_{x_{i}\in X}^{} CE(X_{i}| \Phi_{dec}(\tilde{X} _{dec})) Ldec=xiXCE(XiΦdec(X~dec))
L = L e n c + L d e c L = L_{enc}+L_{dec} L=Lenc+Ldec

其中, L e n c L_{enc} Lenc为由encoder部分的损失, L d e c L_{dec} Ldec为由deocder部分的损失,CE为交叉熵损失函数。

Reference

RetroMAE: Pre-Training Retrieval-oriented Language Models Via Masked Auto-Encoder

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

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

相关文章

C++学习笔记-operator关键字:重载与自定义操作符

在C编程中,operator关键字扮演着极其重要且独特的角色。它允许开发者为内置类型或自定义类型重载或定义新的操作符行为。这一特性极大地增强了C的表达能力,使得代码更加直观、易于理解和维护。本文将深入探讨C中operator关键字的使用,包括操作…

Interesting bug caused by getattr

题意:由 getattr 引起的有趣的 bug 问题背景: I try to train 8 CNN models with the same structures simultaneously. After training a model on a batch, I need to synchronize the weights of the feature extraction layers in other 7 models. …

Elasticsearch:Golang ECS 日志记录 - zap

ECS 记录器是你最喜欢的日志库的格式化程序/编码器插件。它们可让你轻松地将日志格式化为与 ECS 兼容的 JSON。 编码器以 JSON 格式记录日志,并在可能的情况下依赖默认的 zapcore/json_encoder。它还处理 ECS 错误格式的错误字段记录。 默认情况下,会添…

OpenWrt 为软件包和docker空间扩容

参考资料 【openwrt折腾日记】解决openwrt固件刷入后磁盘空间默认小的问题,关联openwrt磁盘扩容空间扩容【openwrt分区扩容】轻松解决空间可用不足的尴尬丨老李一瓶奶油的YouTube 划分空间 参考一瓶奶油的YouTube 系统 -> 磁盘管理 -> 磁盘 -> 修改 格…

【机器学习】不同操作系统下如何安装Jupyter Notebook和Anaconda

引言 Jupyter Notebook 是一个非常流行的开源Web应用程序,允许你创建和共享包含代码、方程、可视化和解释性文本的文档 文章目录 引言一、如何安装Jupyter Notebook1.1 对于Windows用户1.2 对于macOS用户1.3 对于Linux用户: 二、如何安装Anaconda2.1 对于…

基于Element UI内置的Select下拉和Tree树形组件,组合封装的树状下拉选择器

目录 简述 效果 功能描述 代码实现 总结 简述 基于Element UI内置的Select下拉和Tree树形组件,组合封装的树状下拉选择器。 效果 先看效果: 下拉状态: 选择后状态: 选择的数据: 功能描述 1、加载树结构&…

Linux云计算 |【第一阶段】SERVICES-DAY2

主要内容: DNS服务基础及搭建、特殊解析(针对地址库文件:DNS轮询 DNS泛域名解析 DNS别名)、缓存DNS(全局转发forwarders)、DNS递归迭代(子域授权)、DNS主从架构搭建、DNS主从数据同步 一、DNS工…

【技术升级】Docker环境下Nacos平滑升级攻略,安全配置一步到位

目前项目当中使用的Nacos版本为2.0.2,该版本可能存在一定的安全风险。软件的安全性是一个持续关注的问题,尤其是对于像Nacos这样的服务发现与配置管理平台,它在微服务架构中扮演着核心角色。随着新版本的发布,开发团队会修复已知的…

光伏模拟器应用

太阳能光伏 (PV) 模拟器是一种可编程电源,用于模拟太阳能电池板。模拟器具有快速瞬态响应,可响应负载条件的变化并保持电压-电流特性的输出。 用户可以根据系统规格定义太阳能电池板配置,并通过选择环境条件来选择适当的环境条件进行模拟。用…

pytest+allure

安装 下载:github win环境下载zip 环境变量: pycharm: pip install allure-pytest 验证安装 生成结果: if __name__ __main__:pytest.main([-s,test_createTag2.py,--alluredir,result]) 生成报告: allure gener…

如何查看Kafka的偏移量offset

本文介绍三种方法查看Kafka的偏移量offset。 1. API:ConsumerRecord的offset()方法查看offset。 2. API:KafkaConsumer的position(TopicPartition partition)方法查看offset。 3. 命令行:kafka-consumer-groups.sh命令查看offset。 前提条…

前置-Linux相关知识速记

linux Linux命令大全 [!IMPORTANT] chown-chmod-ls-chgrp-cdpwd-mkdir-rmdir-cp-rm-mv-cat-tac-nl-more-less-head-tail 应用领域 通常服务器使用 LAMP(Linux Apache MySQL PHP)或 LNMP(Linux Nginx MySQL PHP)组合。 目前…

STM32 BootLoader 刷新项目 (五) 获取软件版本号-命令0x51

STM32 BootLoader 刷新项目 (五) 获取软件版本号-命令0x51 下面我们来讲解第一个指令,获取软件版本号命令-0x51. 在BootLoader中获取软件版本号的操作有多个重要的作用,具体如下: 版本管理: 识别当前版本:通过获取软…

无人机上磁航技术详解

磁航技术,也被称为地磁导航,是一种利用地球磁场信息来实现导航的技术。在无人机领域,磁航技术主要用于辅助惯性导航系统(INS)进行航向角的测量与校正,提高无人机的飞行稳定性和准确性。其技术原理是&#x…

vue3 + antd vue 纯前端 基于xlsx 实现导入excel 转 json,将json数据转换XLSX导出(模版下载)

一、导入 0、关键代码 // 安装插件 npm i xlsx/yarn add xlsx // 导入xlsx import * as XLSX from xlsx; 点击提交的时候才整理数据。上传的时候文件保存在 state.form.file[0] 中的 // 定义字段映射关系 const fieldMap {sheet2json: {技能名称: skill_name,技能等级: …

微服务实战系列之玩转Docker(六)

前言 刚进入大暑,“清凉不肯来,烈日不肯暮”,空调开到晚,还是满身汗。——碎碎念 我们知道,仓库可见于不同领域,比如粮食仓库、数据仓库。在容器领域,自然也有镜像仓库(registry&…

代码随想录——零钱兑换Ⅱ(Leetcode518)

题目链接 完全背包 class Solution {public int change(int amount, int[] coins) {int[] dp new int[amount 1];dp[0] 1;for(int i 0; i < coins.length; i){for(int j coins[i]; j < amount; j){dp[j] dp[j - coins[i]];}}return dp[amount];} }本题为组合问题…

uni-app AppStore Connect上传拒绝汇总

1.Guideline 2.3.3 - Performance - Accurate Metadata 问题是图片不对&#xff0c;最好是自己截图&#xff0c;然后用香蕉云编 上传图片合成图片 2.Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing 解决办法&#xff1a;在uniapp manifest.json找到 APP常用其他…

【软考】系统集成项目管理工程师【第二版】

&#x1f44a;重要通知&#x1f44a; &#x1f44a; 1. 2024年中考上半年取消&#xff0c;改下半年&#x1f44a; &#x1f44a; 2. 2024下半年 使用《系统集成项目管理工程师教程》第三版&#x1f44a; &#x1f44a; 3. 为了方便大家学习&#xff0c;博主正在整理第三版 &am…

使用uniapp开发小程序(基础篇)

本文章只介绍微信小程序的开发流程&#xff0c;如果需要了解其他平台的开发的流程的话&#xff0c;后续根据情况更新相应的文章,也可以根据uniapp官网的链接了解不同平台的开发流程 HBuilderX使用&#xff1a;https://uniapp.dcloud.net.cn/quickstart-hx.html 开发工具 开始…