[RoBERTa]论文实现:RoBERTa: A Robustly Optimized BERT Pretraining Approach

文章目录

    • 一、完整代码
    • 二、论文解读
      • 2.1 模型架构
      • 2.2 参数设置
      • 2.3 数据
      • 2.4 评估
    • 三、对比
    • 四、整体总结

论文:RoBERTa:A Robustly Optimized BERT Pretraining Approach
作者:Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov
时间:2019
地址:https://github.com/pytorch/fairseq

一、完整代码

这里我们使用python代码进行实现

# 完整代码在这里
# 有时间再做

二、论文解读

RoBERTa,这个论文名字我刚听到的时候,我以为是加了旋转编码的BERT,没想到是A Robustly Optimized BERT Pretraining Approach,其只是对BERT的一种探索和优化,其主要探索在以下几个方面:

  1. 训练更长的时间,使用更大的批次,处理更多的数据可以显著提高性能;
  2. NSP任务效果并不显著,在训练的时候可以删除;
  3. 训练更长的sentence;
  4. 动态mask相较于静态mask其提升并不是很大,但是RoBERTa还是采用了这种做法;

2.1 模型架构

BERT完全一致,是transformerencoder层构成的;

2.2 参数设置

Adam: β 1 = 0.9 , β 2 = 0.999 , ϵ = 1 e − 6 \beta_1=0.9, \beta_2=0.999, \epsilon=1e-6 β1=0.9,β2=0.999,ϵ=1e6 L 2 = 0.01 L_2=0.01 L2=0.01
dropout: d r o p o u t − r a t e = 0.1 dropout-rate=0.1 dropoutrate=0.1
updates: 1000000 1000000 1000000
batch_size: 256 256 256
token_size: 512 512 512
attention_activation: G E L U GELU GELU

2.3 数据

为了扩大数据量,这里使用了下面这四个数据;

  • BOOKCORPUS (Zhu et al., 2015) plus English WIKIPEDIA. This is the original data used to train BERT. (16GB).
  • CC-NEWS, which we collected from the English portion of the CommonCrawl News dataset (Nagel, 2016). The data contains 63 million English news articles crawled between September 2016 and February 2019. (76GB after filtering).
  • OPENWEBTEXT (Gokaslan and Cohen, 2019), an open-source recreation of the WebText corpus described in Radford et al. (2019). The text is web content extracted from URLs shared on Reddit with at least three upvotes. (38GB).
  • STORIES, a dataset introduced in Trinh and Le(2018) containing a subset of CommonCrawl data filtered to match the story-like style of Winograd schemas. (31GB).

2.4 评估

这里介绍了三个benchmarks,分别是:GLUESQuADRACE

GLUE:通用语言理解评估(GLUE)基准测试(Wang et al.,2019b)是一个用于评估自然语言理解系统的9个数据集的集合。6个任务被定义为单个句子分类或句子对分类任务。GLUE的组织者提供了培训和开发数据的分割,以及一个提交服务器和排行榜,允许参与者在私人保留的测试数据上评估和比较他们的系统。

SQuAD:斯坦福问题回答数据集(SQuAD)提供了一段上下文和一个问题。任务是通过从上下文中提取相关的跨度来回答这个问题。有了两个版本的SQuAD: V1.1和V2.0(Rajpurkar等人,2016,2018)。在V1.1中,上下文总是包含一个答案,而在V2.0中的一些问题在所提供的上下文中没有设有回答,这使得任务更具挑战性。

RACE:从考试中获得的阅读理解(RACE)(Lai et al.,2017)任务是一个大规模的阅读理解数据集,有超过28000篇文章和近10万个问题。该数据集收集自专为中高中生设计的中国英语考试。在竞赛中,每一段都与多个问题相关联。对于每个问题,这个任务是从四个选项中选择一个正确的答案。种族比其他流行的阅读理解数据集的背景要长得多,需要推理的问题比例非常大

三、对比

Static Masking 和 Dynamic Masking

可以发现其实提升并不明显,有的还降了,但是作者硬是认为也没办法,transformer用静态怎么可能没考虑动态呢,硬是水;

Model Input Format, Next Sentence Prediction 和 TrainBatch

这里先解释一下:

SEGMENT-PAIR+NSP:这遵循了BERT(Devlin et al.,2019)中使用的原始输入格式,有NSP丢失。每个输入都有一对片段,每个片段可以包含多个自然句子,但总的组合长度必须小于512个标记。

SENTENCE-PAIR+NSP:每个输入包含一对自然句子,要么从一个文档的连续部分中采样,要么从单独的文档中采样。由于这些输入明显短于512个令牌,我们增加批大小,使令牌的总数保持与SEGMENT-PAIR+NSP相似。我们保留了NSP的损失。

FULL-SENTENCES:每个输入都包含了从一个或多个文档中连续采样的完整句子,因此总长度最多为512个标记。输入可以跨越文档边界。当我们到达一个文档的结尾时,我们就开始从下一个文档中采样句子,并在文档之间添加一个额外的分隔符标记。我们消除了NSP的损失。

DOC-SENTENCES:输入的构造类似于FULL-SENTENCES,只是它们可能不会跨越文档边界。在文档末尾附近采样的输入可能小于512个标记,因此我们在这些情况下动态地增加批处理大小,以实现与全句相似的总标记数量。我们消除了NSP的损失。

从这里我们可以发现:NSP影响不显著,使用DOC要比FULL要略好;

TrainBatch

从这里我们可以发现,batch越大,能力越强;这里lr不同也许造成了一点干扰;

分词编码方式采取的是BPE,原来是30k,这里变大了,变成50k;

效果

这也许表示了模型越大越好;

四、整体总结

RoBERTa只是对transformer的一种探索,结果是模型越大效果越好;

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

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

相关文章

P10 Linux进程编程 fork创建子进程

目录 前言 01 fork()创建子进程 示例 1使用 fork()创建子进程。 02 fork创建新进程时发生了什么事? 2.1 父、子进程中对应的文件描述符指向了相同的文件表 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《Linux C应用编程&#xf…

异步回调模式

异步回调 所谓异步回调,本质上就是多线程中线程的通信,如今很多业务系统中,某个业务或者功能调用多个外部接口,通常这种调用就是异步的调用。如何得到这些异步调用的结果自然也就很重要了。 Callable、Future、FutureTask publi…

半导体划片机助力氧化铝陶瓷片切割:科技与工艺的完美结合

在当今半导体制造领域,氧化铝陶瓷片作为一种高性能、高可靠性的材料,被广泛应用于各种电子设备中。而半导体划片机的出现,则为氧化铝陶瓷片的切割提供了新的解决方案,实现了科技与工艺的完美结合。 氧化铝陶瓷片是一种以氧化铝为基…

《巫师3》缺失vcomp110.dll如何解决,如何快速修复vcomp110.dll丢失问题

在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“vcomp110.dll丢失”。这个错误提示通常意味着vcomp110.dll文件在系统中无法找到或加载。那么,vcomp110.dll丢失的原因是什么?它对电脑有什么影响?本…

高德地图vue实现自定义标点热力图效果(缩放时展示不同数据)

高德地图插件引入省略。。。样式和vue基础组件省略。。。 如果每个标点没有数值,则可以用点聚合来实现功能下面例子,每个标点会有按市统计的数值,而且缩放一定程度时,需要展示按省统计的标点,因此需要自定义标点样式和…

leetcode刷题日志-54螺旋矩阵

思路&#xff1a; 上下左右设置四个边界 每走完一行或者一列&#xff0c;移动相应边界&#xff0c;当左边界大于右边界&#xff0c;或者上边界大于下边界时&#xff0c;结束 代码如下&#xff1a; class Solution {public List<Integer> spiralOrder(int[][] matrix) {…

线程上下文切换

线程上下文切换 巧妙地利用了时间片轮转的方式, CPU 给每个任务都服务一定的时间&#xff0c;然后把当前任务的状态保存下来&#xff0c;在加载下一任务的状态后&#xff0c;继续服务下一任务&#xff0c;任务的状态保存及再加载, 这段过程就叫做上下文切换。时间片轮转的方式…

冒泡排序和直接选择排序(C/C++实现)

文章目录 冒泡排序(交换排序&#xff09;基本思想特性总结代码实现 直接选择排序基本思想特性总结代码实现&#xff08;优化&#xff0c;每次循环同时选择最小和最大的数&#xff09; 冒泡排序(交换排序&#xff09; 基本思想 基本思想&#xff1a;所谓交换&#xff0c;就是根…

class065 A星、Floyd、Bellman-Ford与SPFA【算法】

class065 A星、Floyd、Bellman-Ford与SPFA【算法】 2023-12-9 19:27:02 算法讲解065【必备】A星、Floyd、Bellman-Ford与SPFA code1 A*算法模版 // A*算法模版&#xff08;对数器验证&#xff09; package class065;import java.util.PriorityQueue;// A*算法模版&#xff…

两年外包生涯做完,感觉自己废了一半。。。。。

先说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入南京某软件公司&#xff0c;干了接近2年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

laravel的ORM 对象关系映射

Laravel 中的 ORM&#xff08;Eloquent ORM&#xff09;是 Laravel 框架内置的一种对象关系映射系统&#xff0c;用于在 PHP 应用中与数据库进行交互。Eloquent 提供了一种优雅而直观的语法&#xff0c;使得开发者可以使用面向对象的方式进行数据库查询和操作。 定义模型&…

结合ColorUI组件开发微信小程序

1.自定义组件生命周期函数&#xff1a; Component({data: {},attached() {console.log("自定义组件生命周期函数 attached--先执行");this.getPos();},ready() {console.log("ready生命周期函数---在attached之后执行")},methods: {getPos() {var that th…

数据结构:位图、布隆过滤器以及海量数据面试题

位图、布隆过滤器以及海量数据面试题 1.位图1.1概念1.2实现1.3位图应用 2.布隆过滤器2.1布隆过滤器的提出2.2布隆过滤器的概念2.3布隆过滤器的查找2.4布隆过滤器的实现2.5布隆过滤器的删除2.6布隆过滤器的优点2.7布隆过滤器的缺点 3.海量数据面试题3.1哈希切分3.2位图应用3.3布…

如何成为前1%的程序员

如果你想成为前1%的程序员&#xff0c;你必须遵循1%的程序员做什么&#xff0c;了解其他99%的人不做什么。在现代&#xff0c;我们有各种学习平台&#xff0c;里面充满了与编程相关的视频、图文以及其他资料。 举例来说&#xff0c;我作为编程的初学者&#xff0c;去寻找路线图…

IDEA2023找不到add framework support怎么解决

问题: 我的idea版本是2023.01&#xff0c;新版idea右键项目没有Add Framework Support&#xff0c;help里面也找不到相关的。 从project structue的facets里面添加就行了&#xff0c;都是一样的。 1.依旧是新建一个项目 2.file-->project structure--->facets 左上角加…

Android studio如何安装ai辅助工具

引言 在没有翻墙的情况下&#xff0c;即单纯在公司打工&#xff0c;经测试&#xff0c;大部分ai工具都是使用不了的&#xff08;比如各种gpt,codeium,copilot&#xff09;&#xff0c;根本登录不了账号&#xff0c;但有一个国内的codegeex是可以使用的&#xff0c;在这里不对各…

Android app性能优化指南

Android应用性能优化指南 提高应用程序的性能以实现更流畅的用户体验和更高的可见度。 性能在任何应用程序的成功中发挥着重要的作用。为用户提供流畅无缝的体验应该是开发人员的重点。 应用程序大小 在用户开始使用我们的应用程序之前&#xff0c;他们需要下载应用程序并将…

DTCC2023大会-DBdoctor-基于eBPF观测数据库-附所有PPT下载链接

DTCC2023大会-DBdoctor-基于eBPF观测数据库-附所有PPT下载链接 8月16日—18日,第14届中国数据库技术大会(DTCC-2023)在北京国际会议中心举行。聚好看在大会上首次发布基于eBPF观测数据库性能的产品DBdoctor&#xff0c;受到了业界广泛的关注。近期几位业内同仁过来要大会的PPT…

2024考研数学二备考历程

GoodNotesGoodNotes apphttps://share.goodnotes.com/s/bhsraJMZ6OJwuYJb3OWnzP

C/C++之输入输出

文章目录 一.C语言的输入输出1.printfi. 输出整数ii. 浮点数iii.字符 & 字符串 2.scanfi.整数ii.浮点数iii. 字符 & 字符串 3.特殊用法i. * 的应用ii. %n 的应用iii. %[] 的应用 二.C中的输入输出1.couti. 缓冲区&#xff08;buffer&#xff09;ii. cout之格式化输出 2…