大BERT —— RoBERTa
【关于 大 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相关推荐
- 对各大预训练语言模型的简单总结和评述(BERT/RoBERTa/ALBERT/ELECTRA/ERNIE/structBERT/SpanBERT...)
前言 本文系对BERT及其各种优化的简单总结.如RoBERTa.ALBERT.ERNIE.SBERT.MacBERT等. 随积累,即时更新. 总结 BERT 初始预训练任务简介: MLM,即完形填空. ...
- Pytorch实现Bert/RoBerta微调(以MELD数据集为例)
Bert/RoBerta 微调笔记 前言 为什么要进行微调? 怎么微调?参数的设置? 问题: (1)Bert/RoBerta所有参数是不是都要训练? (2)微调Bert/RoBerta时,无法载入全部 ...
- Bert RoBerta DistilBert ALBert 解读
目录 1 Transformer结构 1.1 self attention的理解 1.2 Multi head理解 1.3 transformer基本单元构成 2 Bert 2.1 bert的输入三部 ...
- 系统学习NLP(三十二)--BERT、XLNet、RoBERTa、ALBERT及知识蒸馏
参考:https://zhuanlan.zhihu.com/p/84559048 一.BERT BERT是一种基于Transformer Encoder来构建的一种模型,它整个的架构其实是基于DAE( ...
- 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 ...
- 自然语言处理从零到入门 BERT
BERT | Bidirectional Encoder Representation from Transformers 什么是 BERT? 参考 什么是 BERT? BERT的全称是Bidirec ...
- 蒸馏 (distill_Distill-BERT:使用BERT进行更智能的文本生成
蒸馏 (distill The field of natural language processing is now in the age of large scale pretrained mod ...
- 深度学习之 自然语言处理BERT
Natural Language Processing(NLP)包括自然语言理解和自然语言生成,自然语言理解的应用包括语义分析.机器客服.语音识别.机器翻译等. transformer这一深度网络架构 ...
- Dual-View Distilled BERT for Sentence Embedding
论文标题:Dual-View Distilled BERT for Sentence Embedding 论文链接:https://arxiv.org/pdf/2104.08675v1.pdf 来源: ...
最新文章
- android 服务器异步回调,android – 如何从异步任务返回结果
- oracle的正则表达式(regular expression)简单介绍
- 机器学习工作流程第一步:如何用Python做数据准备?
- C语言经典例75-反转整数
- js使用hover事件做一个“个人中心”的浮动层
- C++PrimerPlus学习——第七章编程练习
- java实现三级联动查询_jeefast和Mybatis实现三级联动的示例代码
- Chapter 2 Build Caffe
- RMAN-20201: datafile not found in the recovery catalog
- 第一次冲刺-个人工作总结06
- 数据集标签_数据分享 | LiDAR点云数据汇总
- 巫妖易语言post-js逆向教程
- js 动画函数库 GreenSock velocityjs
- php eot,PHP EOT定界符的使用详解
- 谈互联网产品运营(转载)
- 天才女博士事迹引发的感想
- Word2Vec 源码
- android拍照保存照片方向,Android:Camera2开发详解(上):实现预览、拍照、保存照片等功能...
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements的解决方法
- 面试必备SQL调优方案