当前位置: 首页 > news >正文

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

一、介绍

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

大型语言模型:BERT — 来自变压器的双向编码器表示

了解BERT如何构建最先进的嵌入

towardsdatascience.com

        尽管BERT具有出色的性能,但研究人员仍在继续试验其配置,以期获得更好的指标。幸运的是,他们成功地提出了一种名为RoBERTa的新模型 - 稳健优化的BERT方法。

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

二、RoBERTa功能介绍

2.1. 动态遮罩

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

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

        静态屏蔽与动态屏蔽

2.2. 下一句预测

        该论文的作者进行了研究,以找到一种最佳方法来模拟下一个句子预测任务。因此,他们发现了几个有价值的见解:

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

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

2.3. 增加批量大小

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

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

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

2.4. 字节文本编码

        在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上的表现优于BERT。

四、RoBert版本

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

  • RoBERTa中的微调过程类似于BERT。
  • 五、结论

  •         在本文中,我们研究了BERT的改进版本,该版本通过引入以下方面来修改原始训练程序:
  • 动态遮罩
  • 省略下一句预测目标
  • 较长句子的训练
  • 增加词汇量
  • 使用更大的数据批次进行更长时间的训练
  • 由此产生的RoBERTa模型在顶级基准测试上似乎优于其祖先。尽管配置更复杂,但RoBERTa仅添加了15M个附加参数,保持了与BERT相当的推理速度。
  • 资源

  • RoBERTa:一种鲁棒优化的BERT预训练方法
  • 维亚切斯拉夫·叶菲莫夫

相关文章:

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

一、介绍 BERT模型的出现导致了NLP的重大进展。BERT的架构源自Transformer,在各种下游任务上实现了最先进的结果:语言建模,下一句预测,问答,NER标记等。 大型语言模型:BERT — 来自变压器的双向编码器表示 …...

解析navicate数据库密码

在线运行地址:代码在线运行 - 在线工具 <?php class NavicatPassword {protected $version 0;protected $aesKey libcckeylibcckey;protected $aesIv libcciv libcciv ;protected $blowString 3DC5CA39;protected $blowKey null;protected $blowIv null;public func…...

mysql字段类型与oracle字段类型对应关系

MySQL与Oracle两种数据库在工作中&#xff0c;都是用的比较多的数据库&#xff0c;由于MySQL与Oracle在数据类型上有部分差异&#xff0c;在我们迁移数据库时&#xff0c;会遇上一定的麻烦&#xff0c;下面介绍MySQL与Oracle数据库数据类型的对应关系。 一、常见数据类型在MyS…...

linux 中 tar \ zip 解压错误后撤回

#zip zipinfo -1 path/xx.zip | xargs rm -rf#tar tar -tf xx.tar | xargs rm -rf...

对象图 UML从入门到放弃之四

1.劝退说明 对象图提供了系统在某个特定时刻的状态快照。这是一种有用的描述系统的方法&#xff0c;当系统的结构是动态构建起来而不是由其静态的类结构决定时&#xff0c;更是如此。不过&#xff0c;应该对画太多的对象图保持警惕。在大部分情况下&#xff0c;它们都可以从相应…...

FPGA实现HDMI输入转SDI视频输出,提供4套工程源码和技术支持

目录 1、前言免责声明 2、我目前已有的SDI编解码方案3、设计思路框架核模块解析设计框图IT6802解码芯片配置及采集ADV7611解码芯片配置及采集silicon9011解码芯片配置及采集纯verilog的HDMI 解码模块RGB888转YUV422SPMTE编码SDI模式图像缓存SPMTE SDIGTXGV8500 4、vivado工程1-…...

针对FTP的SSRF攻击

前言 ssrf中常用的协议有http&#xff0c;gopher等。但http协议在ssrf中的用处也仅限于访问内网页面&#xff0c;在可以crlf的情况下才有可能扩大攻击范围。gopher协议比较特殊&#xff0c;在部分环境下支持此协议&#xff0c;如&#xff1a;curl。但还有一些环境就不支持了&a…...

线性代数中涉及到的matlab命令-第一章:行列式

目录 1&#xff0c;逆序数 2&#xff0c;行列式定义和性质 2.1&#xff0c;常用特性及命令 2.2&#xff0c;求行列式 2.3&#xff0c;行列式的性质 2&#xff0c;行列式按行&#xff08;列&#xff09;展开 3&#xff0c;范德蒙德行列式 在学习线性代数过程中&#…...

QT编程,QT内存管理、信号与槽、

目录 一、QT工具 二、QT内存管理 三、信号与槽 1、信号与槽特点 2、信号 3、槽函数 4、连接 5、发送信号 6、取消连接 一、QT工具 1、Qt Designer&#xff1a;界面设计编辑工具 2、Qt Assistant: Qt技术文档浏览器 3、Qt Linguist: 国际化语言翻译工具 4、…...

springcloud之项目实战环境准备

写在前面 为了更好的学习springcloud&#xff0c;我们来一起开发一个实战项目&#xff0c;加深理解。 1&#xff1a;项目介绍 在开始项目实战之前先来做一个整体的项目介绍&#xff0c;从而能够让对项目的整体架构和模板有一个比较清晰的认知。 大家都知道双11&#xff0c;…...

Linux 部署 MinIO 分布式对象存储 配置为 typora 图床

前言 MinIO 是一款高性能的对象存储系统&#xff0c;它可以用于大规模的 AI/ML、数据湖和数据库工作负载。它的 API 与Amazon S3 云存储服务完全兼容&#xff0c;可以在任何云或本地基础设施上运行。MinIO 是开源软件&#xff0c;也提供商业许可和支持 MinIO 的特点有&#x…...

JVM Optimization Learning(四)

目录 一、调优 1、基础概念 2、什么是调优&#xff1f; 3、调优&#xff0c;从规划开始 4、调优案例 一、调优 1、基础概念 吞吐量&#xff1a;用户代码执行时间 /&#xff08;用户代码执行时间 垃圾回收时间&#xff09; 响应时间&#xff1a;STW越短&#xff0c;响应…...

新华三辅导笔记 2023/10/9-2023/10/13

新华三辅导笔记 一、需要用到的软件二、计算机网络概述1、计算机网络的定义和基本功能&#xff08;1&#xff09;什么是计算机网络&#xff08;2&#xff09;计算机网络的基本功能 2、&#xff08;1&#xff09;局域网、城域网和广域网&#xff08;范围划分&#xff09;&#x…...

边坡安全监测系统的功能优势

随着科技的进步&#xff0c;边坡安全监测系统在各种工程项目中发挥着越来越重要的作用。这款系统通过实时监测垂直、水平位移数据&#xff0c;以折线图的方式显示在监控平台中&#xff0c;为工程人员提供了直观、便捷的监控工具&#xff0c;从而能够及时掌握边坡稳定状况&#…...

【架构】研发高可用架构和系统设计经验

研发高可用架构和系统设计经验 从研发规范层面、应用服务层面、存储层面、产品层面、运维部署层面、异常应急层面这六大层面去剖析一个高可用的系统需要有哪些关键的设计和考虑。 一、高可用架构和系统设计思想 1.可用性和高可用概念 可用性是一个可以量化的指标,计算的公…...

Linux线程安全

线程安全 Linux线程互斥进程线程间的互斥相关背景概念互斥量mutex互斥量的接口互斥量实现原理探究 可重入VS线程安全概念常见的线程不安全的情况常见的线程安全的情况常见的不可重入的情况常见的可重入的情况可重入与线程安全联系可重入与线程安全区别 常见锁概念死锁死锁的四个…...

Windows安装Node.js

1、Node.js介绍 ①、Node.js简介 Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;它允许开发者使用JavaScript语言来构建高性能的网络应用程序和服务器端应用。Node.js的核心特点包括&#xff1a; 1. 事件驱动: Node.js采用了事件驱动的编程模型&#xff0c;通…...

想要开发一款游戏, 需要注意什么?

开发一款游戏是一个复杂而令人兴奋的过程。游戏开发是指创建、设计、制作和发布电子游戏的过程。它涵盖了从最初的概念和创意阶段到最终的游戏发布和维护阶段的各个方面。 以下是一些需要注意的关键事项&#xff1a; 游戏概念和目标&#xff1a; 确定游戏开发的核心概念和目标…...

横向AlGaN/GaN基SBD结构及物理模型数据库的开发

GaN基功率器件凭借其临界电场高、电子饱和漂移速度大、热导率高等优良性能在大功率快充、充电桩、新能源汽车等领域具备广泛应用空间。为进一步助推半导体高频、高功率微电子器件的发展进程&#xff0c;天津赛米卡尔科技有限公司技术团队依托先进的半导体TCAD仿真平台成功开发出…...

使用安卓Termux+Hexo,手机也能轻松搭建个人博客网站

文章目录 前言1.安装 Hexo2.安装cpolar3.远程访问4.固定公网地址5.结语 前言 Hexo 是一个用 Nodejs 编写的快速、简洁且高效的博客框架。Hexo 使用 Markdown 解析文章&#xff0c;在几秒内&#xff0c;即可利用靓丽的主题生成静态网页。 下面介绍在Termux中安装个人hexo博客并…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

智能职业发展系统:AI驱动的职业规划平台技术解析

智能职业发展系统&#xff1a;AI驱动的职业规划平台技术解析 引言&#xff1a;数字时代的职业革命 在当今瞬息万变的就业市场中&#xff0c;传统的职业规划方法已无法满足个人和企业的需求。据统计&#xff0c;全球每年有超过2亿人面临职业转型困境&#xff0c;而企业也因此遭…...

跨平台商品数据接口的标准化与规范化发展路径:淘宝京东拼多多的最新实践

在电商行业蓬勃发展的当下&#xff0c;多平台运营已成为众多商家的必然选择。然而&#xff0c;不同电商平台在商品数据接口方面存在差异&#xff0c;导致商家在跨平台运营时面临诸多挑战&#xff0c;如数据对接困难、运营效率低下、用户体验不一致等。跨平台商品数据接口的标准…...