大型语言模型,MirrorBERT — 将模型转换为通用词汇和句子编码器

大型语言模型,MirrorBERT — 将模型转换为通用词汇和句子编码器

一、介绍

         BERT 模型在现代 NLP 应用中发挥着基础作用,这已不是什么秘密。尽管它们在下游任务上表现出色,但大多数模型在没有微调的情况下在特定问题上并不是那么完美。从原始预训练模型中嵌入构建通常会导致指标与最先进的结果相去甚远。同时,微调是一个繁重的过程,通常需要至少数千个带注释的数据样本才能使模型更好地理解领域数据。在某些情况下,当我们无法简单地收集已经注释的数据或者它的价格很高时,这方面就会出现问题。

        MirrorBERT 旨在克服上述问题。 MirrorBERT 不是标准的微调算法,而是依靠自我监督,在没有任何外部知识的情况下智能地增强初始数据。这种方法使 MirrorBERT 在语义相似性问题上表现出相当的性能。此外,通过使用其创新的对比学习技术,MirrorBERT 可以转换预训练模型,例如 BERT 或 RoBERTa 在不到一分钟的时间内进入通用词汇编码器!

        在官方 MirrorBERT 论文的帮助下,我们将深入研究其关键细节,以了解其底层工作原理。所获得的知识将是通用的,因为所讨论的技术也可以用于处理相似任务的其他 NLP 模型。

二、MirrorBERT方法 与 BERT方法

        简单来说,MirrorBERT 与 BERT 模型相同,只是在学习过程中引入了几个步骤。让我们逐一讨论一下。

MirrorBERT学习流程

2.1.自我复制

顾名思义,MirrorBERT 只是复制初始数据。

自我复制

        然后,使用这些重复的数据进一步构造相同字符串的两种不同的嵌入表示。

2.2. 数据增强

        该论文的作者提出了两种稍微修改数据集文本的直观技术。据他们称,在绝大多数情况下,这些文本损坏并不会改变其含义。

2.3.输入增强

给定一对字符串 (xᵢ, x̄ᵢ),算法会随机选择其中一个并应用随机跨度掩码,该掩码由随机的用 [MASK] 标记替换文本中固定长度的子字符串 k

通过随机跨度掩蔽增强输入

2.4.特征增强

随机跨度掩码在句子/短语级别上运行。为了使模型也能够很好地处理单词级任务,需要另一种增强机制来处理较短的文本片段。特征增强通过使用 dropout 来解决这个问题。

退出过程是指关闭给定百分比p某个网络层中的神经元。这可以看作相当于将网络中相应的神经元归零。

该论文的作者建议使用 dropout 进行数据增强。当一对字符串 (xᵢ, x̄ᵢ) 传递到具有 dropout 层的网络时,如果在每次前向传递中 dropout 层始终禁用不同的神经元,则它们的输出表示会略有不同。

使用 dropout 进行功能增强的一个重要方面是,dropout 层已经包含在 BERT / RoBERTa 架构中,这意味着不需要额外的实现!

虽然随机范围掩蔽仅应用于数据集中的每个第二个对象,但 dropout 应用于所有对象。

2.5.对比学习

对比学习是一种机器学习技术,它通过学习数据表示来学习数据表示,使相似的对象在嵌入空间中彼此靠近,而不相似的对象彼此远离。

对比学习实现的方法之一是使用对比损失函数。为 MirrorBERT 选择的是 InfoNCELoss。让我们了解它是如何工作的。

信息NCE损失

乍一看,InfoNCELoss 的公式可能看起来很吓人,所以让我们逐步逐步了解它。

  1. 两个向量之间的余弦相似度衡量它们彼此对齐的程度,取值范围为 -1 到 1,值越大表示相似度越高。

两个向量之间的余弦相似度

2.为了更好地理解接下来的步骤,有必要注意InfoNCELoss使用softmax变换,温度参数T控制输出softmax分布的平滑度。这就是为什么相似度除以 T。

有关 softmax 温度的更多信息,请参阅本文对其进行更详细的解释。

余弦相似度除以温度

3. 与标准 softmax 公式一样,预测(相似度)随后转换为指数形式。

余弦相似度的指数

4。在普通的 softmax 公式中,分子包含类别概率的指数,而分母是所有分布概率的指数和。在与 InfoNCELoss 类似的情况下,公式类似地遵循以下逻辑:

  • 分子包含两个稍作修改的相同字符串 (xᵢ, x̄ᵢ) 的指数相似度,可以将其视为正例。< /span>
  • 分母由 xᵢ 与所有其他数据集字符串 xⱼ 之间的指数相似度之和组成,可以将其视为一组所有反例 .

余弦相似度的 Softmax 公式。 Nᵢ 表示除 xᵢ 和 x̄ᵢ 之外的所有数据集字符串。

5. 在理想情况下,我们希望相同字符串 (xᵢ, x̄ᵢ) 之间的相似度较高,而 xᵢ 与其他字符串 xⱼ 的相似度较低。如果为真,则上式中的分子将增加,而分母将减少,使整个表达式变大。

损失函数的作用相反:在理想情况下,它们取较小的值,而在更糟糕的情况下,它们会严重惩罚模型。为了使上面的公式符合这个损失原则,让我们在整个表达式之前添加负对数

softmax 相似度的负对数。该表达式可以被视为单个字符串 xᵢ 的损失值。

6. 上一步中的表达式已经对应于单个字符串 xᵢ 的损失值。由于数据集由许多字符串组成,因此我们需要考虑所有这些字符串。为此,让我们总结所有字符串的表达式。

信息NCE损失

得到的公式正是InfoNCELoss

InfoNCELoss 尝试将相似的对象彼此靠近分组,同时将嵌入空间中不相似的对象推开。

SBERT 中使用的三元组损失SBERT是对比学习损失的另一个示例。

三、培训资源

关于 MirrorBERT 的一个令人惊讶的事实是它不需要大量数据进行微调。此外,这些数据不必是外部的,因为整个训练过程是自我监督的。

研究人员报告说,为了微调词汇表示,他们只使用每种语言中 10k 个最常见的单词。对于句子级任务,使用 10k 个句子。

3.1 培训详情

MirrorBERT 训练的详细信息如下:

  • 在句子级任务中温度设置为T = 0.04,并设置为T = 0.2 在单词级任务中。
  • 在随机跨度掩码中,k 设置为 5。
  • 丢弃设置为p = 0.1
  • 使用 AdamW 优化器,学习率为2e-5
  • 批量大小设置为 200(或重复的 400)。
  • 词汇模型训练 2 个 epoch,句子级模型训练单个 epoch。
  • 创建 [CLS] 令牌表示,而不是所有输出令牌表示的均值池。

单个 MirrorBERT 训练周期仅需 10-20 秒。

3.2 评价

作者通过应用镜像微调来评估一组基准的指标。结果报告了三种类型的任务:词汇、句子级和跨语言。在每个模型中,MirrorBERT 都表现出了与其他类似 BERT 的微调模型相当的性能。

结果还表明,10k 到 20k 训练样本之间的范围对于微调来说是最佳的。随着训练样本的增多,模型的性能逐渐下降。

四、结论

        镜像微调实际上就像一个魔咒:镜像框架无需使用繁重的微调过程,只需更少的时间,无需使用外部数据,在语义相似性方面与 BERT、SBERT 或 RoBERTa 等其他微调模型相当任务。

        因此,MirrorBERT 可以将类似 BERT 的预训练模型转换为高效捕获语言知识的通用编码器。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(一)深入理解Mysql底层数据结构和算法

什么是索引 索引是帮助MySQL高效获取数据的排好序的数据结构 数据结构有哪些 数据结构模拟网站&#xff1a;Data Structure Visualization 二叉树 不适合做自增ID的数据结构。如下示意图&#xff0c;假设采用二叉树作为表自增主键ID的数据存储结果如下&#xff1a;当查询i…

BUG记录——drawio出现“非绘图文件 (error on line 7355 at column 83: AttValue: ‘ expected)”

BUG现象 drawio出现“非绘图文件 (error on line 7355 at column 83: AttValue: ’ expected)”&#xff0c;如下图&#xff1a; 解决办法 这只是我自己摸索到的解决办法并不一定适用于所以人&#xff0c;对我是适用的。 首先用记事本打开损坏的drawio文件&#xff0c;如下 …

服务器经常死机怎么办?如何处理

关于服务器死机这一话题相信大家是不会陌生的&#xff0c;平时在使用服务器的过程中&#xff0c;或多或少都是会有遇到过。轻则耽误业务开展&#xff0c;重则造成数据丢失&#xff0c;相信每个人都不想碰到服务器死机的情况。下文我也简单的介绍下服务器死机的原因以及对应的预…

多个磁盘做软件raid并解决分区aligned对齐问题

centos 服务器验证创建软件raid10数据盘&#xff0c;该机器缺少raid硬件。只能做软件raid。 /dev/sdd至/dev/sdm共10块8T磁盘&#xff0c;做raid10&#xff1b; 步骤如下&#xff1a; &#xff08;第一步&#xff09;创建raid10 事先不需要对单个磁盘做分区 10个相同数据盘创…

第11章 GUI Page417~418 步骤五 支持方框 使用宏定义

运行效果&#xff1a; 原来的创建item的方式&#xff1a; 使用宏定义的方式&#xff1a;

Corel Painter各版本安装指南

下载链接https://pan.baidu.com/s/1g3xrCkWmOlDwAThOkqpYlg?pwd0531 #2023版本 1.鼠标右击【Corel Painter 2023】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Corel Painter 2023】。 2.打开解压后的文件夹&#xff0c;双击打开【Setu…

Hadoop入门学习笔记——一、VMware准备Linux虚拟机

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 一、VMware准备Linux虚拟机1.1. VMware安装Linux虚拟机1.…

Diffusion扩散模型学习:图片高斯加噪

高斯分布即正态分布&#xff1b;图片高斯加噪即把图片矩阵每个值和一个高斯分布的矩阵上的对应值相加 1、高斯分布 np.random.normal 一维&#xff1a; import numpy as np import matplotlib.pyplot as pltdef generate_gaussian_noise(mean, std_dev, size):noise np.ran…

【智慧办公】如何让智能会议室的电子标签实现远程、批量更新信息?东胜物联网硬件网关让解决方案更具竞争力

近年来&#xff0c;为了减少办公耗能、节能环保、降本增效&#xff0c;越来越多的企业开始从传统的办公模式转向智慧办公。 以智能会议室为例&#xff0c;会议是企业业务中不可或缺的一部分&#xff0c;但在传统办公模式下&#xff0c;一来会议前行政人员需要提前准备会议材料…

Hadoop入门学习笔记——四、MapReduce的框架配置和YARN的部署

视频课程地址&#xff1a;https://www.bilibili.com/video/BV1WY4y197g7 课程资料链接&#xff1a;https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd5ay8 Hadoop入门学习笔记&#xff08;汇总&#xff09; 目录 四、MapReduce的框架配置和YARN的部署4.1. 配置MapReduce…

Python脚本打包成exe文件

我们很多时候写好一个python脚本之后&#xff0c;想要发给朋友&#xff0c;可是朋友没有安装python怎么办呢&#xff1f;别急&#xff0c;今天我就教你如何将python脚本打包成exe可执行文件&#xff0c;这样无论你的朋友有没有安装python&#xff0c;都可以运行你写好的程序&am…

ChatGPT的GPTs是什么?

我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 ​ 在 OpenAI 的DevDay&#xff08;11 月 6日&#xff09;&#xff0c;该公司宣布推出 ChatGPT GPT&#xff1a;任何人都可以制作并与他人共享的 ChatGPT 自定义版…

快速实现宠物用品小程序开发,从小白到专家的实战教程

随着移动互联网的普及&#xff0c;越来越多的消费者通过手机购物&#xff0c;宠物用品市场也不例外。制作一个专门的宠物用品小程序商城&#xff0c;可以方便消费者随时随地浏览和购买宠物用品&#xff0c;同时也可以帮助宠物店或宠物用品卖家拓宽销售渠道。本文将从开发准备、…

SpringBoot3-基础特性

文章目录 自定义 banner自定义 SpringApplicationFluentBuilder APIProfiles指定环境环境激活环境包含Profile 分组Profile 配置文件 外部化配置配置优先级 外部配置导入配置属性占位符 单元测试-JUnit5测试组件测试注解断言嵌套测试参数化测试 自定义 banner banner 就是启动…

80x86汇编—汇编程序基本框架

文章目录 First Program指令系统伪指令数值表达式 程序框架解释int 21 中断 通过一个基本框架解释各个指令和用处&#xff0c;方便复习。所以我认为最好的学习顺序就是先看一段完整的汇编代码程序&#xff0c;然后给你逐个逐个的解释每一个代码是干嘛用的。然后剩下的还有很多指…

前端三剑客实验5-6-复盘

实验 5 - JavaScript对象 若需要源代码&#xff0c;文章末尾自提 1、实现如下编程内容&#xff1a; 1. 分别使用工厂模式、构造函数和class模式来构建移动硬盘对象 2. 彩票号码生成器 随机生成7个1-36之间的随机数&#xff0c;要求数字不重复&#xff0c;并按从小到大的顺序…

合并排序可视化

合并排序可视化 结果 按照位置分色 按照数组值大小分色 可视化代码 参照 冒泡排序可视化 合并排序 public void mergeSort(List<Integer> list, int[] help, int l, int r) {if (l > r) {return;}int mid l (r - l) / 2;mergeSort(list, help, l, mid);mergeSor…

WPF中使用ListView封装组合控件TreeView+DataGrid

&#xff08;关注博主后&#xff0c;在“粉丝专栏”&#xff0c;可免费阅读此文&#xff09; wpf的功能非常强大&#xff0c;很多控件都是原生的&#xff0c;但是要使用TreeViewDataGrid的组合&#xff0c;就需要我们自己去封装实现。 我们需要的效果如图所示&#x…

Nsum问题

题目 题解 暴力法 class Solution:def fourSum(self, nums: List[int], target: int) -> List[List[int]]:if len(nums) < 4:return []nums.sort()N len(nums)res []for i in range(N-3):for j in range(i1, N-2):for k in range(j1, N-1):for m in range(k1, N):tmp…

灰盒测试简要指南!

在本文中&#xff0c;我们将了解什么是灰盒测试、以及为什么要使用它&#xff0c;以及它的优缺点。 在软件测试中&#xff0c;灰盒测试是一种有用的技术&#xff0c;可以确保发布的软件是高性能的、安全的并满足预期用户的需求。这是一种从外部测试应用程序同时跟踪其内部操作…
最新文章