RoBERTa: A Robustly Optimized BERT Pretraining Approach. Yinhan Liu, Myle Ott, Naman Goyal, et al. 2019

BERT提出之后,有很多后续工作XLNet、ALICE、XLM、MT-DNN相继被提出,成绩都在BERT的基础上往上提升了一点点。然而本文认为那是因为BERT其实根本没有得到充分的训练(否则成绩和这些后来居上者相当),为此本文从模型设计选择(design choice)、训练策略、语料等方面入手,重新对BERT进行了预训练,得到RoBERTa,实验结果表明RoBERTa在GLUE、RACE和SQuAD都达到了SOTA.

主要工作

RoBERTa在每个部分都做了一点点修改,除了Text Encoding外其他的小修改都得到了轻微的提升,最后它将所有的修改合在一起得到最佳模型。具体修改包括:

  • 修改了超参数:将adam的\(\beta_2\)参数从0.999改为0.98
  • 增加训练轮数:训练steps从100K到500K
  • 加入了混合精度
  • 加大batch size:从BERT的256改为2K甚至8K
  • 在更长的序列上训练,修改输入格式:FULL-SENTENCES+移除NSP任务
  • 将BERT静态遮掩改为动态遮掩
  • 增加新的预训练数据集CC-NEWS,语料从16G文本到160G文本
  • Text Encoding:采用更大的byte-level的BPE词典

实验结果

在SQuAD、MNLI-m和SST-2上的实验结果:

RoBERTa对比BERT有明显的提升,但是和XLNet差距不大。

在GLUE上的结果:

对于单任务单模型,RoBERTa九个任务均达到SOTA;

在SQuAD上的结果:

RoBERTa的成绩还可以。

在RACE上的对比结果:

从实验结果上看,RoBERTa均达到了SOTA.

总结

RoBERTa其实本质上只是一个调参达到最优的BERT,和XLNet不相上下。

这篇paper带给我们的意义就是:RoBERTa再一次证明BERT才是众多预训练模型中的首选和扛鼎之作,也是那个真正引起质变的模型。


RoBERTa:一个调到最优参的BERT的更多相关文章

  1. 如何使用JDBC Request跨数据库查询后引用查询的结果作为下一个JDBC Request的入参

    [前言] 今天来给大家介绍下如何使用JDBC Request跨数据库查询后引用查询的结果作为下一个JDBC Request的入参! 因为我现在所测的系统模块中部分表在不同的数据库中,所以在用JDBC ...

  2. 关于工作中.net转java遇到的一个远程调用传递重复参的问题。

    工作中遇到一个很奇怪的传参问题.之前.net使用的是一个List列表,列表中有几个重复的参数.列表中使用的model类是KeyValue. 我使用java模仿其写法,传递List和KeyValue.对 ...

  3. Hive 的简单使用及调优参考文档

    Hive 的简单使用及调优参考文档   HIVE的使用 命令行界面 使用一下命令查看hive的命令行页面, hive --help --service cli 简化命令为hive –h 会输出下面的这 ...

  4. 用Python+Aria2写一个自动选择最优下载方式的E站爬虫

    前言 E站爬虫在网上已经有很多了,但多数都只能以图片为单位下载,且偶尔会遇到图片加载失败的情况:熟悉E站的朋友们应该知道,E站许多资源都是有提供BT种子的,而且通常打包的是比默认看图模式更高清的文件: ...

  5. 记录一个调了半天的问题:java.lang.SecurityException: Permission denied (missing INTERNET permission?)

    Move the <uses-permission> elements outside of <application>. They need to be immediate ...

  6. SQL调优

    # 问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...

  7. JVM调优基础到进阶

    GC和GC Tuning GC的基础知识 1.什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上 ...

  8. MySQL调优系列基础篇

    前言 有一段时间没有写博客了,整天都在忙,上班,录制课程,恰巧最近一段时间比较清闲,打算弄弄MYSQL数据库. 关于MySQL数据库,这里就不做过多的介绍,开源.免费等特性深受各个互联网行业喜爱,尤其 ...

  9. 【Hibernate 8】Hibernate的调优方法:抓取策略

    在上一篇博客中,介绍了Hibernate的缓存机制.合理的配置缓存,可以极大程度上优化Hibernate的性能.这篇博客,介绍另外一个调优方式:抓取策略. 一.什么是抓取策略 抓取策略(fetchin ...

随机推荐

  1. Python Ethical Hacking - VULNERABILITY SCANNER(1)

    HTTP REQUESTS BASIC INFORMATION FLOW The user clicks on a link. HTML website generates a request(cli ...

  2. STL源码剖析:序列式容器

    前言 容器,置物之所也.就是存放数据的地方. array(数组).list(串行).tree(树).stack(堆栈).queue(队列).hash table(杂凑表).set(集合).map(映像 ...

  3. MySQL数据库---数据库备份、视图、触发器、事物、存储过程、函数和索引

    备份 方法: 使用mysqldump实现逻辑备份 语法: mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql 单库备份: mysqldump -uroot - ...

  4. Git的忽略文件

    *.iml.gradle.idea/local.properties/.idea/workspace.xml/.idea/libraries.DS_Store/build/captures.exter ...

  5. Markdown画图(mermaid)学习

    简介 目前博客园支持mermaid的graph,subgraph,sequenceDiagram,gantt,classDiagram mermaid(美人鱼), 是一个类似markdown,用文本语 ...

  6. Python read和write方法

    Python read和write方法: read(): 从文件中读取字符串 注:Python 字符串可以是二进制数据,而不仅仅是文字. 语法: 文件对象.read([count]) count:打开 ...

  7. Python os.stat() 方法

    概述 os.stat() 方法用于在给定的路径上执行一个系统 stat 的调用.高佣联盟 www.cgewang.com 语法 stat()方法语法格式如下: os.stat(path) 参数 pat ...

  8. Python os.pathconf() 方法

    概述 os.pathconf() 方法用于返回一个打开的文件的系统配置信息.高佣联盟 www.cgewang.com Unix 平台下可用. 语法 fpathconf()方法语法格式如下: os.fp ...

  9. Python List insert()方法

    描述 insert() 函数用于将指定对象插入列表的指定位置.高佣联盟 www.cgewang.com 语法 insert()方法语法: list.insert(index, obj) 参数 inde ...

  10. Android JNI之静态注册

    这篇说静态注册,所谓静态注册,就是native的方法是直接通过方法名的规定格式和Java端的声明处代码对应起来的,其对应规则如下: JNIEXPORT <返回值> JNICALL Java ...