RoBERTa 论文研读笔记

写在前面

这篇博客,一是补课,之前DataWhale的论文阅读,我因为参与课题申报等原因,没有仔细的去研读Bert系最新的几篇论文;二来,也是为自己带的预研团队开一个头,让坚持阅读原始论文和敢于创新能在一开始是就刻入我们团队的骨髓。

1 研究动机

本文并没有对于Bert模型架构有原创性的改动,而是将立足点放在如何更好的通过调参来挖掘Bert模型的潜能。这里的调参,除了传统意义的模型超参数外,也包括模型的一系列设计选择。

2 研究内容和方法

本文的研究方式,可以看成是非常传统的控制变量法的模式,来探究不同的设计决策对于Bert模型的影响。

  1. 静态遮词 vs 动态遮词
    这是一个有意思的改进, 原版bert的预训练只会在训练开始随机选择15%的词进行遮掩,但是一经选定,就会固定下来,不论训练多少个epoch。而动态遮词,则是会将数据进行副本备份,然后不同的副本随机遮词。举例,如果训练40轮,有10个副本,那么则只有4个epoch是采用同样的遮词。下图引用了文章中给出的实验效果,从表格中的数据来看,动态遮词略有提升,但其实并不明显。作者给出的解释是尽管动态遮掩只有些微提升,但是考虑到其的其他效率优势,就在之后的实验中全部采用这种方式。
    PS: 文中没有明确指出动态遮掩的其他优势,但我个人理解,其实是通过遮掩来做数据增强。
    Mask
  2. NSP(下一句预测)任务的取舍
    因为bert的下游任务中有MNLI这种判断两句关系的,所以在读bert的时候,大家是非常接受 bert对于两个任务的设定。论文中也说了学术界也对于去掉NSP是否会损失模型性能存在争议。
    其实单句的sentence pair 因为文本长度不足,学不到长依赖肯定会损失性能,但是对于多句输入,NSP任务,是否必要,作者依然采用控制变量法来比较了 sentence-pair (Bert原版), full sentence (多句,甚至可以通过特殊分隔符实现跨文章),doc sentence(多句,不跨文章,但是需要动态调整batch size) 。前者添加NSP loss,后两者均不添加。下表数据表明,去掉NSP任务,会提高模型性能。个人理解,这也说明,预训练语言模型,最本质的性能提升手段还是学习长依赖。
    NSP
  3. 输入策略选择
    对于Bert 的输入,作者给出的结论是,选择尽可能大且多源的数据,尽可能大的batch,基于byte的词汇表。 对于batch的选择,测试结果如下表所示,选择大的batch,配合稍大的学习率,可以一定程度提高perplexity,以及下游任务的准确率。
    batch_ppl
  4. 综合调参
    RoBERTa 全称一种鲁棒性的bert调优方法,当我们保持Bert_large架构不变,采用上述调参选择,对比原版Bert和XLnet结果如下,可以看出RoBERTa在squad, mnli和sst-2上都达到了STOA。
    RoBERTa_general
    本文的实验部分后面还详细给出了RoBERTa 最好的结果,在三个benchmark GLUE, SQuaD and RACE上的表现,ROBERTa基本霸榜。这里简单贴一下实验结果,具体细节,可以参考论文的相关部分,相应的描述比较清晰。
    GLUE
    SQUAD
    RACE
    5 超参数选择
    除了一些调参策略,作者也该出了具体任务的bert模型的最优参数,以及不同大小的模型预训练的超参数选择,这里也贴一下;
    GLUE_paramters
    pretrian_paramter

3 创新点分析和个人点评

之所以把创新点和个人点评合并,是个人认为这个工作虽然刷榜了GLUE等评测集,但是属于一个细致性的验证工作,并没有太多的创新。文章最大的贡献个人认为,是实验论证了NSP这个任务对于模型提升没有太大作用。至于动态遮掩,虽然是个好的方法,但是对于海量数据,以及大batch,大学习率效果是不是那么有效,有待进一步的验证或者数学上的解释。
但毋庸置疑,这是一个值得肯定的工作,甚至值得推崇。不知道什么时候,黑盒炼丹、调参侠成了对于深度学习从事着的一顶帽子,仿佛调参你上你也行,全凭玄学。实际上,玄学之说,更多的是自我嘲讽,调参恰恰是初入此道的基本功,对于模型和数据的理解和选择,其实是一个好的深度学习工程师必须走的路,也是需要时间和方法积累,这也远远好于git clone代码走通就走,不求甚解。所以,当你的算力和调参水平达到本文作者的程度,一样可以诞生有影响力的工作。 勿要眼高手低,与君共勉。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RoBERTa中文预训练模型 概述 中文预训练RoBERTa模型 RoBERTa是BERT的改进版,通过改进训练任务和数据生成方式、训练更久、使用更大批次、使用更多数据等获得了State of The Art的效果;可以用Bert直接加载。 本项目是用TensorFlow实现了在大规模中文上RoBERTa的预训练,也会提供PyTorch的预训练模型和加载方式。 中文预训练RoBERTa模型-下载 6层RoBERTa体验版 RoBERTa-zh-Layer6: Google Drive 或 百度网盘,TensorFlow版本,Bert 直接加载, 大小为200M 推荐 RoBERTa-zh-Large 通过验证 RoBERTa-zh-Large: Google Drive 或 百度网盘 ,TensorFlow版本,Bert 直接加载 RoBERTa-zh-Large: Google Drive 或 百度网盘 ,PyTorch版本,Bert的PyTorch版直接加载 RoBERTa 24/12层版训练数据:30G原始文本,近3亿个句子,100亿个中文字(token),产生了2.5亿个训练数据(instance);覆盖新闻、社区问答、多个百科数据等; 本项目与中文预训练24层XLNet模型 XLNet_zh项目,使用相同的训练数据。 RoBERTa_zh_L12: Google Drive 或 百度网盘 TensorFlow版本,Bert 直接加载 RoBERTa_zh_L12: Google Drive 或百度网盘 PyTorch版本,Bert的PyTorch版直接加载 Roberta_l24_zh_base TensorFlow版本,Bert 直接加载 24层base版训练数据:10G文本,包含新闻、社区问答、多个百科数据等 什么是RoBERTa: 一种强大的用于预训练自然语言处理(NLP)系统的优化方法,改进了Transformers或BERT的双向编码器表示形式,这是Google在2018年发布的自监督方法。 RoBERTa在广泛使用的NLP基准通用语言理解评估(GLUE)上产生最先进的结果。 该模型在MNLI,QNLI,RTE,STS-B和RACE任务上提供了最先进的性能,并在GLUE基准上提供了可观的性能改进。 RoBERTa得分88.5,在GLUE排行榜上排名第一,与之前的XLNet-Large的表现相当。 效果测试与对比 Performance 互联网新闻情感分析:CCF-Sentiment-Analysis 模型 线上F1 BERT 80.3 Bert-wwm-ext 80.5 XLNet 79.6 Roberta-mid 80.5 Roberta-large (max_seq_length=512, split_num=1) 81.25 注:数据来源于guoday的开源项目;数据集和任务介绍见:CCF互联网新闻情感分析 自然语言推断:XNLI 模型 开发集 测试集 BERT 77.8 (77.4) 77.8 (77.5) ERNIE 79.7 (79.4) 78.6 (78.2) BERT-wwm 79.0 (78.4) 78.2 (78.0) BERT-wwm-ext 79.4 (78.6) 78.7 (78.3) XLNet 79.2 78.7 RoBERTa-zh-base 79.8 78.8 RoBERTa-zh-Large 80.2 (80.0) 79.9 (79.5) 注:RoBERTa_l24_zh,只跑了两次,Performance可能还会提升; BERT-wwm-ext来自于这里;XLNet来自于这里; RoBERTa-zh-base,指12层RoBERTa中文模型 问题匹配语任务:LCQMC(Sentence Pair Matching) 模型 开发集(Dev) 测试集(Test) BERT 89.4(88.4) 86.9(86.4) ERNIE 89.8 (89.6) 87.2 (87.0) BERT-wwm 89.4 (89.2) 87.0 (86.8) BERT-wwm-ext - - RoBERTa-zh-base 88.7 87.0 RoBERTa-zh-Large 89.9(89.6) 87.2(86.7) RoBERTa-zh-Large(20w_steps) 89.7 87.0 注:RoBERTa_l24_zh,只跑了两次,Performance可能还会提升。保持训练轮次和论文一致: 阅读理解测试 目前阅读理解类问题bertroberta最优参数均为epoch2, batch=32, lr=3e-5, warmup=0.1 cmrc20

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值