【关于 大 Bert 模型系列算法】

大BERT模型总结

名称 介绍 动机 预训练方法 微调 问题
Bert Transformer的双向编码器 多义词问题 && GPT 单向 Transformer Task 1:Masked LM && Task 2:Next Sentence Prediction 直接利用 特定任务数据 微调 1. [MASK]预训练和微调之间的不匹配2. Max Len 为 512
XLNet 广义自回归预训练方法 1. Bert 预训练和微调之间的不匹配 2. Bert 的 Max Len 为 512 (1)Permutation Language Modeling【解决Bert 预训练和微调之间的不匹配】(2)Two-Stream Self-Attention for Target-Aware Representations【解决PLM出现的目标预测歧义】(3)XLNet将最先进的自回归模型Transformer-XL的思想整合到预训练中【解决 Bert 的 Max Len 为 512】 直接利用 特定任务数据 微调 问题
RoBERTa A Robustly Optimized BERT Pretraining Approach 1. 确定方法的哪些方面贡献最大可能是具有挑战性的 2. 训练在计算上是昂贵的的,限制了可能完成的调整量 1. 去掉下一句预测(NSP)任务 2. 动态掩码 3. 文本编码 4. 更大的数据量 5. 更大的batch_size 直接利用 特定任务数据 微调 问题
ELECTRA 判别器 & 生成器 1. 只有15%的输入上是会有loss 利用一个基于MLM的Generator来替换example中的某些个token,然后丢给Discriminator来判别 直接利用 特定任务数据 微调 问题
ERNIE 1.0 ERNIE: Enhanced Representation through Knowledge Integration 随机【MASK】会让模型不能充分学习到语义信息 1. Knowledge Integration 2. Dialogue Language Model(DLM) 问题
ERNIE 2.0 ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding 之前的工作主要通过词或句子的共现信号,构建语言模型任务进行模型预训练。除了语言共现信息之外,语料中还包含词法、语法、语义等更多有价值的信息。 1. 预训练连续学习 2. 更多的无监督预训练任务 问题
ERNIE-T ERNIE: Enhanced Language Representation with Informative Entities 引入外部图谱 1. 引入知识图谱 2. 异构信息融合 2. dAE 问题

RoBERTa

  • 更大的模型参数量(论文提供的训练时间来看,模型使用 1024 块 V100 GPU 训练了 1 天的时间)
  • 更大bacth size。RoBERTa 在训练过程中使用了更大的bacth size。尝试过从 256 到 8000 不等的bacth size。
  • 更多的训练数据(包括:CC-NEWS 等在内的 160GB 纯文本。而最初的BERT使用16GB BookCorpus数据集和英语维基百科进行训练)

RoBERTa对BERT的改进

1. 动态掩码

BERT 依赖随机掩码和预测 token。原版的 BERT 实现在数据预处理期间执行一次掩码,得到一个静态掩码。 而 RoBERTa 使用了动态掩码:每次向模型输入一个序列时都会生成新的掩码模式。这样,在大量数据不断输入的过程中,模型会逐渐适应不同的掩码策略,学习不同的语言表征。

静态掩码:在数据预处理的时候,统计mask
动态掩码:将序列输入模型的时候,才进行mask

2. 去掉NSP任务
  • 动机:虽然是句子对输入,但其实一个句子不只有一句,而是文章里面的连续片段,可以包含多句。
  • 操作:采用去掉NSP而采用FULL - SENTENCES方式

RoBERTa去掉了NSP,而采用连续的抽取句子填充输入序列,直到最大长度512(可跨文章)。这种训练方式叫做(FULL - SENTENCES),而原来的BERT每次只输入两个句子。

3. 更大的数据量

在BERT采用的数据BOOKCORPUS + English WIKIPEDIA(共16G)基础上

  • 增加 CC-NEWS(76GB)
  • 增加 OPENWEBTEXT(38GB)
  • 增加 STORIES(31GB)
    也就是RoBERTa一共用了160GB语料进行预训练。
4. 更大的batch_size

BERT的batch_size是256,一共训练了1M步,实验证明,采用更大的batch_size以及训练更多步,可以提高性能。最后RoBERTa采用的batch_size是8K。

5. Byte-Pair Encoding 文本编码
  • BERT:采用的是基于character level的Byte-Pair Encoding(BPE)编码,词表大小是30K;
  • RoBERTa:文本编码。Byte-Pair Encoding(BPE)是字符级和词级别表征的混合,支持处理自然语言语料库中的众多常见词汇。原版的 BERT 实现使用字符级别的 BPE 词汇,大小为 30K,是在利用启发式分词规则对输入进行预处理之后学得的。Facebook 研究者没有采用这种方式,而是考虑用更大的 byte 级别 BPE 词汇表来训练 BERT,这一词汇表包含 50K 的 subword 单元,且没有对输入作任何额外的预处理或分词。

采用更大的BEP词汇表(50k)

《RoBERTa: A Robustly Optimized BERT Pretraining Approach》

大BERT —— RoBERTa相关推荐

  1. 对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)

    前言 本文系对BERT及其各种优化的简单总结.如RoBERTa.ALBERT.ERNIE.SBERT.MacBERT等. 随积累,即时更新. 总结 BERT 初始预训练任务简介: MLM,即完形填空. ...

  2. Pytorch实现Bert/RoBerta微调(以MELD数据集为例)

    Bert/RoBerta 微调笔记 前言 为什么要进行微调? 怎么微调?参数的设置? 问题: (1)Bert/RoBerta所有参数是不是都要训练? (2)微调Bert/RoBerta时,无法载入全部 ...

  3. Bert RoBerta DistilBert ALBert 解读

    目录 1 Transformer结构 1.1 self attention的理解 1.2 Multi head理解 1.3 transformer基本单元构成 2 Bert 2.1 bert的输入三部 ...

  4. 系统学习NLP(三十二)--BERT、XLNet、RoBERTa、ALBERT及知识蒸馏

    参考:https://zhuanlan.zhihu.com/p/84559048 一.BERT BERT是一种基于Transformer Encoder来构建的一种模型,它整个的架构其实是基于DAE( ...

  5. 06_1.Pytorch中如何表示字符串、word embedding、One - hot、Embedding(Word2vec、BERT、Glove)【学习总结】

    1.6.1.如何表示字符串 1.6.1.1.word embedding 1.6.1.1.1.文本表示(Representation) 1.6.1.1.2.独热编码 | one-hot represe ...

  6. 自然语言处理从零到入门 BERT

    BERT | Bidirectional Encoder Representation from Transformers 什么是 BERT? 参考 什么是 BERT? BERT的全称是Bidirec ...

  7. 蒸馏 (distill_Distill-BERT:使用BERT进行更智能的文本生成

    蒸馏 (distill The field of natural language processing is now in the age of large scale pretrained mod ...

  8. 深度学习之 自然语言处理BERT

    Natural Language Processing(NLP)包括自然语言理解和自然语言生成,自然语言理解的应用包括语义分析.机器客服.语音识别.机器翻译等. transformer这一深度网络架构 ...

  9. Dual-View Distilled BERT for Sentence Embedding

    论文标题:Dual-View Distilled BERT for Sentence Embedding 论文链接:https://arxiv.org/pdf/2104.08675v1.pdf 来源: ...

最新文章

  1. android 服务器异步回调,android – 如何从异步任务返回结果
  2. oracle的正则表达式(regular expression)简单介绍
  3. 机器学习工作流程第一步:如何用Python做数据准备?
  4. C语言经典例75-反转整数
  5. js使用hover事件做一个“个人中心”的浮动层
  6. C++PrimerPlus学习——第七章编程练习
  7. java实现三级联动查询_jeefast和Mybatis实现三级联动的示例代码
  8. Chapter 2 Build Caffe
  9. RMAN-20201: datafile not found in the recovery catalog
  10. 第一次冲刺-个人工作总结06
  11. 数据集标签_数据分享 | LiDAR点云数据汇总
  12. 巫妖易语言post-js逆向教程
  13. js 动画函数库 GreenSock velocityjs
  14. php eot,PHP EOT定界符的使用详解
  15. 谈互联网产品运营(转载)
  16. 天才女博士事迹引发的感想
  17. Word2Vec 源码
  18. android拍照保存照片方向,Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能...
  19. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements的解决方法
  20. 面试必备SQL调优方案

热门文章

  1. 定时提醒软件的提醒事项智能列表怎么打开
  2. 启用国行Lumia 830/930的联通4G网络
  3. swt eclipse 3.6
  4. 机器学习中的precision, recall, accuracy, F值
  5. 中国专利数据库(85-22)
  6. 推荐系统评价:什么是好的推荐系统?
  7. 微信支付服务器软件怎么添加呢,微信APP如何把微信支付添加到手机桌面
  8. 智慧养老解决方案有哪些新行业诞生?
  9. 北京地铁五号线全攻略 23座车站乘坐细节大起底
  10. MFC加载图标,位图。LoadImage LoadIcon, LoadBitmap