pytorch微调bert_香侬读 | RoBERT: 没错,我就是能更强——更大数据规模和仔细调参下的最优BERT
文章标题: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
文章链接:https://arxiv.org/pdf/1907.11692.pdf
代码链接:https://github.com/pytorch/fairseq
导言
自从BERT横空出世以来,各类预训练模型一直在试图“撼动”BERT的地位,如XLM、XLNet等等,然而,这些模型都异常庞大,这给调参带来了巨大的困难, 我们往往没有足够的时间为一个模型找到最佳参数。这篇论文将炼丹炉火力全开,在得到以下炼丹配方后将BERT的效果再次提到SOTA:
- 训练更久,batch更大,数据更多
- 丢弃NSP
- 在更长的序列上训练
- 动态改变mask策略
在新的炼丹配方上训练,RoBERT在GLUE上达到了88.5,在4/9上的任务上刷新SOTA,且在SQuAD和RACE上更新记录。
总的来说,本论文的贡献在于:
- 修改了BERT原有的训练策略
- 引入了一个更大的新数据集
CCNEWS
- 验证了预训练模型合理设计的重要性
下面我们略过BERT等一些背景知识,开门见山地直奔主题。
新的调整
在这里直接列出RoBERT在原BERT上新的调整,详情请看原论文:
- 对学习率的峰值和warm-up更新步数作出调整(在不同任务下不同,在实验阶段说明)
- 将Adam中
改为
- 不对序列进行截短,使用全长度序列
- 使用更高级的炼丹炉
DGX-1
each with 8*32GBNVIDIA V100 GPUs
interconnected by Infiniband - 使用更多的炼丹原料,共160G左右,包括:
- 原BERT的16GB原料
CC-NEWS
的76GB原料OPENWEBTEXT
的38GB原料STORIES
的31GB原料
训练过程分析
动态Mask
原来的BERT是静态mask,即在数据预处理阶段把所有的数据都mask了,在训练阶段保持不变,即使在不同的epoch里。但这样显然是有问题的, 为此,在实践中我们把数据复制10份,然后统一进行mask,然后再保持不变,送入训练过程,相当于每种mask一共需要被看4次,而不是原来的40 次了。那么动态mask就是训一个mask一个,这样基本可以保证每次看到的都不一样。下面是BERT_base使用静态和动态mask的结果:
看起来dynamic比static好一点(虽然好得不是那么多),所以后文我们都统一使用dynamic的方法。
输入格式和NSP
原BERT使用了NSP,但是近期的一些文章质疑了NSP的作用,并且是把两个句子贴在一起喂给模型,本文讨论了下面的组合:
- SEGMENT-PAIR+NSP。这就是原BERT的NSP方法,输入的是两个段,每个段都可能有多个句子,总长度要小于512。
- SENTENCE-PAIR+NSP。这里从各自的文档或段中sample一个句子即可,因为总长度小于512,所以增大了batch size使得总字符数和SEGMENT-PAIR差不多。
- FULL-SENTENCES。直接从文档中连续sample句子直到塞满512的长度,且丢掉NSP。当到达一个文档结尾时,先增加一个文档分隔符,再从后面的文档接着sample。
- DOC-SENTENCES。和上面一样,只是不得(may not)跨文档。同样增大batch size 使得总字符数和上面差不多。
模型使用的是BERT_base,实验结果如下:
首先看最上面两行,使用多个句子效果更好,因为可以捕捉句子之间的相关性。再看中间两行,差不多,但是注意到都好于有NSP的模型,这说明NSP的确没用。而且似乎DOC-SENTENCES比FULL-SENTENCES略好,但这难以控制batch size,所以后面我们固定使用FULL-SENTENCES。
更大的batch size
原BERT使用了bs=256和1M步的训练方法,这等价于bs=2K和125K步或者bs=8K和31K步,下面是在BOOKCORPUS
和WIKIPEDIA
上的实验结果:
好像趋势不太明显,只能说总的来看bs更大效果更好。
原子单位
时下流行的方法是BPE,传统上我们使用unicode(两个byte)作为切分基础,Radford et al. (2019) 使用了 byte-level
方法将字典大小限制在了50K左右,所以本文使用这种方法,且不对数据进行任何预处理。
实验
总结一下上面,RoBERT作了如下调整:
- 使用动态mask
- FULL-SENTENCES without NSP
- 更大的bs
- 更大的byte-level BPE
此外,还有两个重要的因素有待探究:
- 数据量大小
- 训练次数
所以,我们首先复现BERT_large作为基线模型,包括原来的数据集,然后在相同的结构和数据集上实现RoBERT,然后再在160G的新数据集上训练,且增加训练步数。下表是结果:
结果是显然的,更多的数据和更长的训练会提高效果,这告诉我们一个道理:大力出奇迹。
GLUE
对于GLUE,我们考虑两种设置
- 对不同的任务各自微调,在bs
和lr之间选择,并且对前6%的训练步数进行线性warm-up,然后使用线性衰减。此外,用10个epoch微调与提前终止,其他保持前文所述不变。
- 和GLUE榜上的其他模型一较高下,但是只基于单任务微调。对RTE,STS和MRPC使用MNLI单任务微调。对于QNLI和WNLI这两个任务有独特的微调方法,详情参考论文及附录。下表是结果:
对第一种比较设置,RoBERT在结构与BERT_large相同的情况下碾压了对手,在GLUE榜上也刷新了4个任务的记录。
SQuAD
下表是SQuAD1/2的结果:
其中,带有† 表示引入了额外的外部数据。可以看到,即使在有外部数据的情况下,RoBERT也比BERT_large好。
RACE
下表是结果:
依旧碾压了BERT_large和XLNet呢。
小结
RoBERT在BERT的基础上进行了更细致的探究,包括损失函数、超参数、数据量、训练方法等,但是,本文说是RoBERT比XLNet好,但是在GLUE上人家也只用了112G数据,这相差的50G数据量能否弥补呢?这是一个问题。
总之,神仙打架(苦笑)。
pytorch微调bert_香侬读 | RoBERT: 没错,我就是能更强——更大数据规模和仔细调参下的最优BERT相关推荐
- gamit怎么利用glred生成测站时间序列_香侬读 | 按什么套路生成?基于插入和删除的序列生成方法
"香侬读"是香侬科技(Shannon.AI)推出的栏目,每周解读NLP或前沿.或经典的论文,捕捉时下最新见解,探究未来发展趋向.欢迎大家广泛讨论.交流,也欢迎推荐优秀的文章与我们一 ...
- pytorch微调bert_北大、人大联合开源工具箱UER,3 行代码完美复现BERT、GPT
本文由AI研习社用户张正投稿,来稿见文末联系方式 作者 | 张正 单位 | 清华大学 编辑 | Camel 现存的预训练模型中没有一种可以完美的适用于所有任务,这也给预训练模型的选择带来困难. 对于这 ...
- pytorch微调bert_小版BERT也能出奇迹:最火的预训练语言库探索小巧之路
选自Medium 作者:Victor Sanh 机器之心编译 参与:魔王 过去一段时间,大模型层出不穷.在大家纷纷感叹「大力出奇迹」的时候,作为调用预训练语言模型最流行的库,HuggingFace 尝 ...
- 香侬读 | 让预训练模型学习知识:使用多学习器增强知识建模能力
论文标题: K-Adapter: Infusing Knowledge into Pre-Trained Models with Adapters 论文作者: Ruize Wang, Duyu Tan ...
- 一文读懂 Spring Boot、微服务架构和大数据治理三者之间的故事
微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物.互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况 ...
- NeurIPS 2019 | 香侬科技开源Glyce2.0,中文字形增强BERT表征能力
文章标题:Glyce: Glyph-vectors for Chinese Character Representations 文章链接:https://arxiv.org/pdf/1901.1012 ...
- 关于大数据,需要你读懂的10个小故事
自2011年以来,大数据旋风以"迅雷不及掩耳之势"席卷中国.毋庸置疑,大数据已然成为继云计算.物联网之后新一轮的技术变革热潮,不仅是信息领域,经济.政治.社会等诸多领域都" ...
- 大数据陷阱:需要读懂的10个小故事
自2011年以来,大数据旋风以"迅雷不及掩耳之势"席卷中国.毋庸置疑,大数据已然成为继云计算.物联网之后新一轮的技术变革热潮,不仅是信息领域,经济.政治.社会等诸多领域都" ...
- 老文新读 | 大数据于国内影视行业的意义及应用
编者注:本文由作者4年前发表于知乎专栏,前两天编者偶然读到,觉得很有意思,于是转过来与大家分享.原文标题:评析:触不到的大数据 作者 | 王义之,凡影合伙人 最近这几年,我们可以听到很多关于大数据在影 ...
最新文章
- EasyTransaction 1.3.0 发布,一站式分布式事务解决方案
- MySQL如何从开源中获利
- 另一种公钥私钥认证方式
- 112.局部变量和全局变量在内存中是怎样存储的?113.WLAN无线传输协议
- 大对象简介+大对象的4种类型+lob类型的优点+lob的组成
- 【数据结构与算法】之深入解析“TinyURL加密与解密”的求解思路与算法示例
- centos7 redis5.0以前版本 集群部署示例 - 第一篇
- solr cloud 更新 solrconfig 配置_Solr各版本新特性「4.x,5.x,6.x,7.x」
- java中after什么意思_Java中的即时isAfter()方法
- c语言中声明外部函数需要添加的关键字,C语言中声明和定义的区别——分析extern关键词。...
- 在 Linux 命令行中使用和执行 PHP 代码(一)
- Android 与 JavaScript 相互调用桥梁 JSBridge
- Visio Professional 2016 破解教程
- 优酷路由宝刷潘多拉固件最详细教程+最新版+赚钱插件
- OpenCV算法精解2--OpenCV中C++基本操作2
- 测试计算机性能的软件比较专业,用什么软件可以测试计算机的整体性能?
- 等值线图的Python绘制方法
- 介绍一个牛逼的Github项目
- USB 发展 缺陷 与 未来
- linux如何ping多个ip,如何同时Ping多个IP地址并保存记录 | 个人信息技术网