roberta算法详解

一、背景

bert系列的算法论文越来越多,比较出名和有效果的有,Roberta、ALbert。这都是

另一个系列的是XLnet。

全名:RoBERTa:A Robustly Optimized BERT Pretraining Approach
官方源码:https://github.com/pytorch/fairseq
中文预训练模型1:https://github.com/brightmart/roberta_zh
此模型为某个公司训练
中文预训练模型2:https://github.com/ymcui/Chinese-BERT-wwm
此模型为哈工大讯飞实验室预训练

二、在预训练的改动
1.动态mask机制
  • 原始静态mask:
    BERT中是准备训练数据时,每个样本只会进行一次随机mask(因此每个epoch都是重复),后续的每个训练步都采用相同的mask,这是原始静态mask,即单个静态mask,这是原始 BERT 的做法。
  • 修改版静态mask:
    在预处理的时候将数据集拷贝 10 次,每次拷贝采用不同的 mask(总共40 epochs,所以每一个mask对应的数据被训练4个epoch)。这等价于原始的数据集采用10种静态 mask 来训练 40个 epoch。
  • 动态mask:
    并没有在预处理的时候执行 mask,而是在每次向模型提供输入时动态生成 mask,所以是时刻变化的。
    不同模式的实验效果如下表所示。其中 reference 为BERT 用到的原始静态 mask,static 为修改版的静态mask。
2.NSP去掉
3.数据+算力+时长
  • 1.更多的数据
    Bert使用了13G,XLNet使用了126G,RoBerta使用了160G
  • 2.更多的显卡
    Bert使用64个TPU,XLNET 128 个 Cloud TPU v3 , RoBerta1024 V100 GPUs
  • 3.更大的batch
    Bert使用了256,XLNet使用了2K,RoBerta使用了8K
4.Text Encoding

字节对编码(BPE)(Sennrich et al.,2016)是字符级和单词级表示的混合,该编码方案可以处理自然语言语料库中常见的大量词汇。BPE不依赖于完整的单词,而是依赖于子词(sub-word)单元,这些子词单元是通过对训练语料库进行统计分析而提取的,其词表大小通常在 1万到 10万之间。当对海量多样语料建模时,unicode characters占据了该词表的大部分。Radford et al.(2019)的工作中介绍了一个简单但高效的BPE, 该BPE使用字节对而非unicode characters作为子词单元。
总结下两种BPE实现方式:

  • 基于 char-level :原始 BERT 的方式,它通过对输入文本进行启发式的词干化之后处理得到。
  • 基于 bytes-level:与 char-level 的区别在于bytes-level 使用 bytes 而不是 unicode 字符作为 sub-word 的基本单位,因此可以编码任何输入文本而不会引入 UNKOWN 标记。
    当采用 bytes-level 的 BPE 之后,词表大小从3万(原始 BERT 的 char-level )增加到5万。这分别为 BERT-base和 BERT-large增加了1500万和2000万额外的参数。

参考文献:
1.https://arxiv.org/pdf/1907.11692.pdf

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值