大型语言模型:RoBERTa — 一种稳健优化的 BERT 方法

@slavahead

一、介绍

        BERT模型的出现BERT模型带来了NLP的重大进展。 BERT 的架构源自 Transformer,它在各种下游任务上取得了最先进的结果:语言建模、下一句预测、问答、NER标记等。

        尽管 BERT 性能出色,研究人员仍在继续尝试其配置,希望获得更好的指标。幸运的是,他们成功了,并提出了一种名为 RoBERTa 的新模型 - 鲁棒优化的 BERT 方法。

        在本文中,我们将参考官方 RoBERTa 论文,其中包含有关模型的深入信息。简而言之,RoBERTa 对原始 BERT 模型进行了多项独立改进——包括架构在内的所有其他原则保持不变。本文将介绍和解释所有的进步。

二、动态遮蔽

        从 BERT 的架构中我们记得,在预训练期间,BERT 通过尝试预测一定百分比的屏蔽标记来执行语言建模。原始实现的问题在于,为不同批次的给定文本序列选择的掩码标记有时是相同的。

        更准确地说,训练数据集被复制 10 次,因此每个序列仅以 10 种不同的方式进行屏蔽。请记住,BERT 运行 40 个训练周期,具有相同掩码的每个序列都会传递给 BERT 四次。研究人员发现,使用动态掩码效果稍好,这意味着每次将序列传递给 BERT 时都会唯一生成掩码。总体而言,这会减少训练期间的重复数据,从而使模型有机会处理更多不同的数据和屏蔽模式。

静态掩蔽与动态掩蔽

三、下一句预测

        该论文的作者进行了研究,寻找对下一个句子预测任务进行建模的最佳方法。结果,他们发现了一些有价值的见解:

  • 删除下一个句子的预测损失会带来稍微更好的性能。
  • 与传递由多个句子组成的序列相比,将单个自然句子传递到 BERT 输入会损害性能。解释这种现象的最可能的假设之一是模型很难仅依靠单个句子来学习远程依赖关系。
  • 通过从单个文档而不是多个文档中采样连续的句子来构造输入序列更有利 。 通常,序列始终由单个文档的连续完整句子构建,因此总长度最多为 512 个标记。当我们到达文档末尾时,问题就出现了。在这方面,研究人员比较了是否值得停止对此类序列进行句子采样,或者额外采样下一个文档的前几个句子(并在文档之间添加相应的分隔符标记)。结果表明第一种方案效果较好。

        最终,对于最终的 RoBERTa 实现,作者选择保留前两个方面并省略第三个方面。尽管观察到第三个见解背后的改进,但研究人员并没有继续下去,因为否则,它会使之前的实现之间的比较更加成问题。发生这种情况的原因是,到达文档边界并停在那里意味着输入序列将包含少于 512 个标记。为了在所有批次中具有相似数量的令牌,在这种情况下需要增加批次大小。这导致批量大小可变和研究人员希望避免的更复杂的比较。

四、增加批量大小

        NLP 的最新进展表明,增加批量大小并适当降低学习率和训练步骤数通常会提高模型的性能。

        提醒一下,BERT 基础模型是在 256 个序列的批量大小上训练一百万步的。作者尝试在 2K 和 8K 的批量大小上训练 BERT,并选择后者来训练 RoBERTa。相应的训练步数和学习率值分别变为31K和1e-3。

同样重要的是要记住,通过一种称为“梯度累积”的特殊技术,批量大小的增加会导致更容易的并行化。< /span>

五、字节文本编码

        在 NLP 中,存在三种主要类型的文本标记化:

  • 字符级标记化
  • 子字级标记化
  • 词级标记化

        原始 BERT 使用词汇大小为 30K 的子字级标记化,这是在输入预处理和使用多种启发式之后学习的。 RoBERTa 使用字节而不是 unicode 字符作为子词的基础,并将词汇量扩展至 50K,无需任何预处理或输入标记化。这导致 BERT 基础模型和 BERT 大模型分别增加 15M 和 20M 的额外参数。 RoBERTa 中引入的编码版本表现出比以前稍差的结果。

        尽管如此,与 BERT 相比,RoBERTa 词汇量大小的增长允许在不使用未知标记的情况下对几乎任何单词或子词进行编码。这给 RoBERTa 带来了相当大的优势,因为该模型现在可以更全面地理解包含稀有单词的复杂文本。

六、预训练

        除此之外,RoBERTa 应用了上述所有四个方面,并具有与 BERT Large 相同的架构参数。 RoBERTa的参数总数为355M。

        RoBERTa 在五个海量数据集的组合上进行了预训练,产生总共 160 GB 的文本数据。相比之下,BERT Large 仅在 13 GB 数据上进行预训练。最后,作者将训练步骤数从 100K 增加到 500K。

        因此,在最流行的基准测试中,RoBERTa 在 XLNet Large 上的表现优于 BERT Large。

七、RoBERTa 版本

        与 BERT 类似,研究人员开发了两个版本的 RoBERTa。基本版本和大版本中的大多数超参数是相同的。下图展示了主要区别:

        RoBERTa 中的微调过程与 BERT 类似。

八、结论

        在本文中,我们研究了 BERT 的改进版本,它通过引入以下几个方面来修改原始训练过程:

  • 动态掩蔽
  • 省略下一句预测目标
  • 较长句子的训练
  • 增加词汇量
  • 使用更大批量的数据进行更长时间的训练

        由此产生的 RoBERTa 模型在顶级基准测试中似乎优于其祖先。尽管配置更复杂,RoBERTa 仅添加了 15M 额外参数,保持了与 BERT 相当的推理速度。

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

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

相关文章

springCould中的Eureka-从小白开始【2】

目录 1.什么是Eureka ❤️❤️❤️ 2. 组件❤️❤️❤️ 3.单机Eureka配置❤️❤️❤️ 4.服务8001服务入住eureka ❤️❤️❤️ 5.消费端80入住到eureka ❤️❤️❤️ 6.集群Eureka配置 ❤️❤️❤️ 7.将Client发布到eureka集群上 ❤️❤️❤️ 8.服务端8002集群搭建…

Python轴承故障诊断 (八)基于EMD-CNN-GRU并行模型的故障分类

目录 前言 1 经验模态分解EMD的Python示例 2 轴承故障数据的预处理 2.1 导入数据 2.2 制作数据集和对应标签 2.3 故障数据的EMD分解可视化 2.4 故障数据的EMD分解预处理 3 基于EMD-CNN-GRU并行模型的轴承故障诊断分类 3.1 训练数据、测试数据分组&#xff0c;数据分ba…

SpringCloud02

1.在项目中&#xff0c;服务之间的调用是怎么实现的&#xff1f; 1.1基于RestTemplate和LoadBalanced注解&#xff1a; RestTemplate是Spring提供的用于访问RESTful服务的客户端。添加LoadBalanced注解后&#xff0c;RestTemplate会成为一个负载均衡的HTTP客户端&#xff0c;它…

云原生系列2-GitLab和Jenkins

1、GitLab类似github&#xff0c;是个私有仓库 1、GitLab安装&#xff0c;至少8G内存4核cpu # 查找Gitlab镜像 docker search gitlab/gitlab-ce # gitlab镜像拉取 docker pull gitlab/gitlab-ce # 查看镜像 docker images # 本机先建3个目录&#xff0c;为了gitlab容器通过挂…

【web安全】密码爆破讲解,以及burp的爆破功能使用方法

前言 菜某总结&#xff0c;欢迎指正错误进行补充 密码暴力破解原理 暴力破解实际就是疯狂的输入密码进行尝试登录&#xff0c;针对有的人喜欢用一些个人信息当做密码&#xff0c;有的人喜欢用一些很简单的低强度密码&#xff0c;我们就可以针对性的生成一个字典&#xff0c;…

轻量级购物小程序H5产品设计经典样例

主要是看到这个产品设计的不错值得借鉴特记录如下&#xff1a; 不过大多数购物app都大致相同&#xff0c;这个算是经典样例&#xff0c;几乎都可以复制&#xff0c;我第一次使用&#xff0c;感觉和顺畅。看上去产品是经过打磨的&#xff0c;布局非常好。内容也很丰富。支持异业…

【Linux】冯诺依曼体系结构与操作系统及其进程

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解冯诺依曼体系结构与操作系统&#xff0c;掌握…

pytorch中nn.Sequential详解

1 nn.Sequential概述 1.1 nn.Sequential介绍 nn.Sequential是一个序列容器&#xff0c;用于搭建神经网络的模块被按照被传入构造器的顺序添加到容器中。除此之外&#xff0c;一个包含神经网络模块的OrderedDict也可以被传入nn.Sequential()容器中。利用nn.Sequential()搭建好…

AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息

前言&#xff1a; 前提&#xff1a;需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要&#xff1a;1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 &#xff0c;启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…

useConsole的封装,vue,react,htmlscript标签,通用

之前用了接近hack的方式实现了console的封装&#xff0c;目标是获取console.log函数的执行&#xff08;调用栈所在位置&#xff09;所在的代码行数。 例如以下代码&#xff0c;执行window.mylog(1)时候&#xff0c;console.log实际是在匿名的箭头函数()>{//这里执行的} con…

通过https协议访问Tomcat部署并使用Shiro认证的应用跳转登到录页时协议变为http的问题

问题描述&#xff1a; 在最近的一个项目中&#xff0c;有一个存在较久&#xff0c;并且只在内部城域网可访问的一个使用Shiro框架进行安全管理的Java应用&#xff0c;该应用部署在Tomcat服务器上。起初&#xff0c;应用程序可以通过HTTP协议访问&#xff0c;一切运行都没…

力扣面试题 16.19. 水域大小(java DFS解法)

Problem: 面试题 16.19. 水域大小 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该问题可以归纳为一类遍历二维矩阵的题目&#xff0c;此类中的一部分题目可以利用DFS来解决&#xff0c;具体到本题目&#xff08;该题目可以的写法大体不变可参看前面几个题目&#…

XZ_iOS 之 M1 M2 M3的M系列芯片的Mac苹果电脑安装cocoapods

安装的前提&#xff0c;应用程序->终端->右键-显示简介->勾选 使用Rosetta打开&#xff0c;如下图&#xff0c;然后重启终端 安装的顺序如下&#xff1a;Homebrew->rvm->ruby->cocoapods 1、安装Homebrew /bin/bash -c "$(curl -fsSL https://raw.git…

淘宝类目信息API接口获取淘宝商品分类信息API调用说明(含APIkey密钥)

cat_get-获得淘宝分类详情 item_cat_get-获得淘宝商品类目 公共参数 名称类型必须描述keyString是调用key&#xff08;点此获取&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_search_…

【Mac】flutter项目集成高德定位SDK,获取key

一、获取调试版安全码SHA1 1.进入当前用户文件夹下的~/.android目录 cd ~/.android2.查看 debug.keystore ls3.运行 debug.keystore keytool -list -v -keystore debug.keystore这里报错&#xff1a; The operation couldn’t be completed. Unable to locate a Java Runt…

docker 安装及配置 nginx + tomcat(四):高可用

文章目录 1. 引言2. 高可用架构3. 实际步骤3.1 虚拟机新建系统3.2 安装 keepalived3.3 配置 keepalived3.4 启动 keepalived3.5 验证高可用3.5.1 查看当前效果3.5.2 模拟灾难 4 参考 1. 引言 前情提要&#xff1a; 《docker 安装及配置 nginx tomcat&#xff08;一&#xff0…

安全运营之安全加固和运维

安全运营是一个将技术、流程和人有机结合的复杂系统工程&#xff0c;通过对已有安全产品、工具和服务产出的数据进行有效的分析&#xff0c;持续输出价值&#xff0c;解决安全问题&#xff0c;以确保网络安全为最终目标。 安全加固和运维是网络安全运营中的两个重要方面。 安全…

在本地通过 k8s 部署一个 nginx 镜像

目标 目标:通过 deployment 启动一个 nginx,并且通过浏览器访问。 目的,熟悉并学习一下 k8s 的一些特性,毕竟看文档和实操是两码事。 本地部署 k8s 简单点,也不用 minikube 和 kubeadmin,直接通过 docker desktop 部署 k8s。 下载 docker desktop 下载完成后会自动…

Linux系统之部署Linux管理面板1Panel

一、介绍 1.1简介 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。 1.2特点 快速建站&#xff1a;深度集成 Wordpress 和 Halo&#xff0c;域名绑定、SSL 证书配置等一键搞定&#xff1b; 高效管理&#xff1a;通过 Web 端轻松管理 Linux 服务器&#xff0c;包括应用管…

ios备忘录怎么导入华为 方法介绍

作为一个常常需要在不同设备间切换的人&#xff0c;我深知备忘录的重要性。那些突如其来的灵感、重要的会议提醒、甚至是生活中的琐碎小事&#xff0c;我们都习惯性地记录在备忘录里。但当我决定从iPhone转向华为时&#xff0c;一个问题困扰了我&#xff1a;如何将那些珍贵的备…