BART模型和 Electra模型对比

总结

Electra模型在使用较少的计算资源的情况下能够达到跟大语言模型相近的效果。但BART模型对于传统的BERT中加入了不同种制造noise的方式,是BERT和GPT的结合体。Electra模型主要是Generator模型和Discriminator模型的结合体。

未知参数设置,两个模型在SQuAD(问答QA) 任务上的对比

网络上目前没有找到其他人有关掩码预测任务(MLM)或者(QA)任务的模型对比文件,只能根据原论文其中的实验结果简单对比。具体对比如下所示。个人觉得没有什么对比意义,需要复现相关实验,在实验中设置相同的参数相同的任务去计算相同指标进行对比。

在这里插入图片描述

BART模型

BART模型主要是结合了BERT的双向编码器(bidirectional encoder)和GPT的自左而右的decoder的特点。在seq2seq的transformers的模型基础上,结合了上下文语境的问题。能应用于生成任务和文本理解任务。详细图示如图所示。
在这里插入图片描述

BART模型跟GPT和BERT的联系不同

BART源自于BERTGPT模型,结合了两个模型的优点,但对于传统的BERT的单一noise——随机用[MASK]token去掩盖单词。BART在encoder中结合了多个生成noise的方式。具体如下。

  • Token masking , 随机将一个token替换为[MASK]【训练推断单个token的能力】
  • Token deletion, 随机删除某些token【训练推断单个token内容以及位置的能力】
  • Text infilling, 将一段连续的token【span】(1~num)替换为一个[MASK],长度服从 λ = 3 \lambda=3 λ=3的泊松分布【训练推理一段内容有多少个token的能力】
  • Sentence Permuation, 将一段句子的顺序打乱(最终输出原句子)【训练推理前后句关系的能力】
  • Document Rotation, 将序列中随机选取一个token,让这个token成为document的开头【提高找到document开头的能力】
    具体的noise的表现形式如下图所示。(蓝色为正确文本,红色为不同破坏输入的方式)
    在这里插入图片描述

BARTmask-fill模型具体调用过程

BART在掩码预测任务中仍然使用BartForConditionalGeneration模型。在huggingface所提及的mask-filling有所提及。下图为transformers==4.31的版本的介绍。

在这里插入图片描述

在原论文中,主要涉及的都是问答,生成释义等任务。但并未太多提及掩码预测,但在文中处处都用了掩码预测。个人认为掩码预测是上游任务。具体的模型在下游任务的效果如下所示。

在这里插入图片描述

Electra模型

主要是利用了GAN对抗生成网络的思想,通过训练两种transformer模型,判别器(Discriminator)和生成器(Generator),作用分别是确定预测某些掩码[MASK]序列的token和确定序列中哪些token是否被替换。具体样例如下图所示。
因为Generator的任务是MLM模型,所以最后生成的词汇是离散的,所以梯度不能够再次传递
在损失函数部分,因为MLM的loss明显会比判别器的loss大,所以实验通过设置参数 λ \lambda λ平衡。
损失函数如下图所示。

L M L M ( x , θ G ) = E ( ∑ i ∈ m − log ⁡ p G ( x i ∣ x masked  ) ) \mathcal{L}_{\mathrm{MLM}}\left(\boldsymbol{x}, \theta_G\right)=\mathbb{E}\left(\sum_{i \in \boldsymbol{m}}-\log p_G\left(x_i \mid \boldsymbol{x}^{\text {masked }}\right)\right) LMLM(x,θG)=E(imlogpG(xixmasked ))
L Disc  ( x , θ D ) = E ( ∑ t = 1 n − 1 ( x t corrupt  = x t ) log ⁡ D ( x corrupt  , t ) − 1 ( x t corrupt  ≠ x t ) log ⁡ ( 1 − D ( x corrupt  , t ) ) ) \mathcal{L}_{\text {Disc }}\left(\boldsymbol{x}, \theta_D\right)=\mathbb{E}\left(\sum_{t=1}^n-\mathbb{1}\left(x_t^{\text {corrupt }}=x_t\right) \log D\left(\boldsymbol{x}^{\text {corrupt }}, t\right)-\mathbb{1}\left(x_t^{\text {corrupt }} \neq x_t\right) \log \left(1-D\left(\boldsymbol{x}^{\text {corrupt }}, t\right)\right)\right) LDisc (x,θD)=E(t=1n1(xtcorrupt =xt)logD(xcorrupt ,t)1(xtcorrupt =xt)log(1D(xcorrupt ,t)))
min ⁡ θ G , θ D ∑ x ∈ X L M L M ( x , θ G ) + λ L Disc  ( x , θ D ) \min _{\theta_G, \theta_D} \sum_{\boldsymbol{x} \in \mathcal{X}} \mathcal{L}_{\mathrm{MLM}}\left(\boldsymbol{x}, \theta_G\right)+\lambda \mathcal{L}_{\text {Disc }}\left(\boldsymbol{x}, \theta_D\right) θG,θDminxXLMLM(x,θG)+λLDisc (x,θD)
在优化判别器(discriminator)中,计算了所有的token的loss,在常见的MLM模型(如BERT的MLM模型)中只计算了该被遮盖到的token的loss。实验结果证明在下游任务效果中有一定提升。评判指标为GLUE Score。在后续应用于下游任务中,无论是大语言模型还是小语言模型中,都有一定的提升。

discriminator的梯度优化过程中,并不会传递到generator中。而且生成器的目标任务为MLM(掩码预测)任务,判别器的任务为序列标注任务。在同等资源条件下,ELECTRA模型会比BERT等其他模型的效果会好。达到了用尽可能少的资源更好的解决问题。

ELECTRA模型实验结果

小模型在GLUE dev set的效果
在这里插入图片描述

大模型在GLUE dev set的结果

在这里插入图片描述

参考

ELECTRA: 超越BERT, 19年最佳NLP预训练模型
huggingface的ElectraForMaskedLM模型
huggingface的bart的mask-fill使用方法
介绍electra模型和bart模型
【论文精读】生成式预训练之BART

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

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

相关文章

【历史上的今天】7 月 20 日:人类登上月球;数据仓库之父诞生;Mac OS X Lion 发布

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 7 月 20 日,在 2005 年的今天,时任微软全球副总裁的李开复加盟谷歌担任谷歌全球副总裁及中国区总裁。谷歌公司在发布聘请李开复消息的同…

Rust之通用编程

1、变量与可变性: 在Rust语言中,变量默认是不可变的,所以一旦变量被绑定到某个值上面,这个值就再也无法被改变。 可以通过在声明的变量名称前添加mut关键字来使其可变。除了使变量的值可变,mut还会向阅读代码的人暗示…

【机器学习】分类算法 - KNN算法(K-近邻算法)KNeighborsClassifier

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:零基础快速入门人工智能《机器学习入门到精通》 K-近邻算法 1、什么是K-近邻算法?2、K-近邻算法API3、…

【论文阅读 03】机器学习算法在颈动脉斑块影像学分类中的研究进展

读完之后就是,总结 机器学习(SVM、小波)和深度学习(CNN)在 颈动脉斑块影像学中的 分类效果。只讨论了超声、磁共振两种成像 Chin J Clin Neurosci 临床神经科学杂志 复旦大学 颈动脉斑块( carotid plaques) 是一种…

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解 本文主要讲述opencv中的外接多边形的使用: 多边形近似外接矩形、最小外接矩形最小外接圆外接三角形椭圆拟合凸包 将重点讲述最小外接矩形的使用 1. API介绍 #多边形近似 v…

若依微服务整合activiti7.1.0.M6

若依微服务3.6.3版本整合activiti7(7.1.0.M6) 目前有两种办法集成activiti7 放弃activiti7新版本封装的API,使用老版本的API,这种方式只需要直接集成即可,在7.1.0.M6版本中甚至不需要去除security的依赖。不多介绍&a…

Origin科学绘图分析软件2023最新版下载安装教程

在科学研究和工程领域,数据的处理和分析是至关重要的一环,而Origin则是这方面的一款重要工具。Origin软件是由OriginLab公司开发的,主要用于各种科学数据的处理和分析,以及高质量的科学图形的创建。#乐享周末分享吧# 下载地址文末…

【英杰送书第三期】Spring 解决依赖版本不一致报错 | 文末送书

Yan-英杰的主 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 问题描述 报错信息如下 报错描述 解决方法 总结 【粉丝福利】 【文末送书】 目录: 本书特色: 问题描述 报错信息如下 Description:An attempt…

微服务保护——Sentinel【实战篇二】

一、线程隔离 🍉 线程隔离有两种方式实现: 线程池隔离信号量隔离(Sentinel默认采用) 线程隔离(舱壁模式)🥝 在添加限流规则时,可以选择两种阈值类型: QPS:…

Java反射 -- 详细介绍 (框架核心)

反射 是 Java框架 的核心 ,无论是Tomcat、SpringMVC、Spring IOC、Spring AOP、动态代理 ,都使用到了 反射 反射的作用简单讲就是 无需 new 对象,就可以动态获取到一个类的全部信息,包括 属性、方法,构造器&#xff0…

3、C# 方法构成

上一节,我们讲述了程序的基本构成。由大到小分别为”解决方案-->项目-->类-->方法“。 这一节,我们讲讲方法。 方法可以说是程序的基本构成单位。假如把方法抽象成点的话,我们可以认为程序是一个树状的结构。树根,就是我们的起点方法,也叫主方法。这一点,基本…

iOS 测试 iOS 端 Monkey 测试

说起 Monkey 测试,大家想到的是 monkey 测试只有安卓有,monkey 测试只针对安卓 app,今天给大家分享一下 Monkey 测试在 iOS 端也能跑!iOS 端 app 也能使用 Monkey 测试来执行稳定性测试。 一、环境准备 1、准备 Mac 设备&#x…

SpringCloud分布式项目下feign的使用

新建一个feign的微服务&#xff08;后面统称为A&#xff09;&#xff0c;其他项目要使用利用maven导入该服务模块的依赖就行了 导入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</…

Tabby - 本地化AI代码自动补全 - Linux Debian

参考&#xff1a; https://github.com/TabbyML/tabby Docker | Tabby Linux Debian上快速安装Docker并运行_Entropy-Go的博客-CSDN博客 Tabby - 本地化AI代码自动补全 - Windows10_Entropy-Go的博客-CSDN博客 为什么选择Tabby 已经有好几款类似强劲的代码补全工具&#xf…

【苹果日历推送】群发部署开发工具、SDK或框架,如APNs推送服务的HTTP/2接口

苹果日历本身并不直接支持群发推送通知&#xff0c;因为推送通知是针对单个设备的。如果你想向多个用户发送推送通知&#xff0c;你需要在自己的应用中实现推送功能&#xff0c;然后针对每个设备单独发送推送通知。 以下是实现推送通知的一般步骤&#xff1a; 开发推送服务&a…

【Linux | Shell】结构化命令2 - test命令、方括号测试条件、case命令

目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令&#xff0c…

vscode(Better Comments插件)在vue文件中不显示相对应的颜色

解决办法&#xff1a; 1、在.vscode文件下找到 aaron-bond.better-comments-3.0.2 &#xff08;我的路径&#xff1a;C:\Users\cown\.vscode\extensions\aaron-bond.better-comments-3.0.2&#xff09;&#xff0c;后面版本不唯一&#xff0c;根据自身情况辨别 2、进入文件路…

vue项目展示pdf文件

记录贴 最近我有个需求,就是在h5页面上展示pdf文件,分页,最后一页有个蒙层阴影渐变的效果,尝试过一些插件,但都不是很好用,最后用了pdfjs-dist加上canvas 可以看下效果 先下载: npm i pdfjs-dist2.5.207下面展示代码 html: <template><canvas v-for"pageNumb…

Linux——环境开发基础(vim、gcc、yum、git、gdb)

目录 1.Linux编辑器——vim使用 2.Linux编译器——gcc/g 3.Linux项目自动化构建工具——make/Makefile 4.Linux软件包管理器——yum 5.Linux调试器——gdb 前言&#xff1a;因为篇幅原因&#xff0c;本文着重列出命令&#xff0c;小伙伴下去自己尝试&#xff0c;只有多使…

关于K8s的Pod的详解(一)

关于K8s的Pod的详解&#xff08;一&#xff09; Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建&#xff0c;调度&#xff0c;管理的基本单位。由上级的Controller对Node上安装的Kubelet发…