《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
目录
- 《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
- 1、Bert研究意义
- 2、摘要
- 3、Bert衍生模型以及Elmo、GPT、Bert对比
- 3.1 RoBERTa
- 3.2 ALBERT
- 3.3 其它
- 3.4 ELMO、GPT、BERT比较
- 4、Model Architecture
- 5、Pre-training BERT
- 5.1 BERT、GPT、ELMP比较图
- 5.2 MLM —— Mask Language Model
- 6、Fine-tuning BERT
- 6.1 问答任务(阅读理解)详解
- 7、模型蒸馏
《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》
- 预训练的深度双向trandformer用于语义理解;
- 作者:Jacob Devlin;
- 单位:Google;
- 发表会议及时间:2018;
1、Bert研究意义
- 获得了left-to-right和right-to-left的上下文信息;
- nlp领域正式开始pretraining+fine-tuning的模型训练方式;
2、摘要
- 论文提粗了一种新的语言表征模型bert,不同于其他的语言表征模型吧,bert可以同时学习向左和向右的上下文信息;
- 预训练的bert可以直接fine-tuning,只需要加相应的输出层,无需太多模型结构的改动;
- bert模型在各项nlp下游任务中都表现得良好;
3、Bert衍生模型以及Elmo、GPT、Bert对比
3.1 RoBERTa
RoBERTa在原有BERT的基础上用了更多的数据,模型更大,参数更多,把BERT的静态mask变为动态mask。静态mask就是指在每一个epoch中mask的位置是一样的,动态mask中每一个epoch中mask的位置是不同的,使用动态mask可以式模型获得更多的随机信息;
3.2 ALBERT
ALBERT属于轻量级的BERT,BERT是一种参数量比较大的模型,为了能减少模型的参数,有两种方法,一种方法是蒸馏方法,还有一种方法是调整模型结果,这也是ALBERT使用的方法。
ALBERT使用跨层的参数共享,在原始BERT中transformer中不同layer层之间的参数是不共享的,这样导致模型的参数量非常大,在ALBERT中进行跨层的参数共享,使参数量减少,论文指出,改论文使用的参数共享方法,不仅模型性能没有降低,反而模型结果优于BERT的结果;
3.3 其它
BERT-WWM、ERINE、SpanBERT、TinyBERT、Sentence-BERT、k-Bert等;
3.4 ELMO、GPT、BERT比较
模型 | 模型采用结构 | 预训练形式 | 优点 | 缺点 | 在Glue上表现 |
---|---|---|---|---|---|
ELMO | Bilstm+LM | feature-based | 动态的词向量表征 | 双向只是单纯的concat两个lstm,并没有真正的双向 | 最差 |
GPT | Transformer Decoder部分(含有sequence mask,去掉中间的Encoder-Decoder的attention) | fine-tuning | 在文本生成任务上表现出色,同时采用辅助目标函数和LM(language model)模型 | 单向的transformer结构,无法利用全局上下文信息 | 较差 |
BERT | Transformer Encoder部分 | fine-tuning | 在各项下游任务中表现出色,采用MLM(masked language model)的实现形式完成真正意义上的双向,增加了句子级别预测的任务 | 在文本生成任务上表现不好 | 最好 |
4、Model Architecture
以上图大致描述了BERT的结构,假定模型的输入为[w1,w2,w3,w4,w5][w_1,w_2,w_3,w_4,w_5][w1,w2,w3,w4,w5],输入的词为one-hot形式向量,图中的Embedding层包含三部分,其形式如下所示:
BERT的输入由两个句子组成时,在第一个句子的开头添加[CLS],在两个句子间和第二个句子结尾分别添加[SEP],通过添加分隔符分割两个句子;
因为输入是两个句子,因此需要一种标志提示哪一部分属于句子A,哪一部分属于句子B,因此引入了Segment Embeddings,以此区分句子A和句子B。当使用BERT进行文本分类时,BERT模型的输入为一个句子,这样在Segment Embeddings中只有一种信息,不用区分句子A和句子B;
因为BERT模型没办法提取到词与词之间的位置信息,因此BERT引入了位置信息嵌入矩阵Position Embeddings,用于添加词的位置信息;
输入的单词经过Embedding之后输入到Transformer的Encoder部分,论文中提供的预训练模型有两个版本,一个是BERTBASEBERT_{BASE}BERTBASE,一个是BERTLARGEBERT_{LARGE}BERTLARGE:BERTBASE(L=12,H=768,A=12,TotalParameters=110M)BERT_{BASE}(L=12,H=768,A=12,TotalParameters=110M)BERTBASE(L=12,H=768,A=12,TotalParameters=110M)BERTLARGE(L=24,H=1024,A=16,TotalParameters=340M)BERT_{LARGE}(L=24,H=1024,A=16,TotalParameters=340M)BERTLARGE(L=24,H=1024,A=16,TotalParameters=340M)
上述表述中L表示Transformer的层数,H表示hidden size,A表示head的数量;
经过Encoder层之后接一个全连接层,使用GELU激活函数和Norm数据处理,其输出对mask的词进行预测,整个过程就是模型预训练的一个过程;
5、Pre-training BERT
5.1 BERT、GPT、ELMP比较图
5.2 MLM —— Mask Language Model
为了使模型学习到句子left-to-right和right-to-left的全局信息,BERT采用了两种策略:
策略1:Mask LM。随机mask一个酒醉中15%的词,用其上下文做预测:mydogishairy−>mydogis[mask]my\space dog\space is \space hairy -> my\space dog\space is \space [mask]mydogishairy−>mydogis[mask]
为了保证预训练和微调时的一致性,采用以下措施:
- 80%的机会采用mask:mydogishairy−>mydogis[mask]my\space dog\space is \space hairy -> my\space dog\space is \space [mask]mydogishairy−>mydogis[mask]
- 10%的机会随机选取一个词代替mask:mydogishairy−>mydogisapplemy\space dog\space is \space hairy -> my\space dog\space is \space applemydogishairy−>mydogisapple
- 10%的机会保持原始词不变:mydogishairy−>mydogishairymy\space dog\space is \space hairy -> my\space dog\space is \space hairymydogishairy−>mydogishairy
上面的图片简单描述了BERT的MLM预训练过程,这个过程与word2vec的连续词袋模型大致一样,但是word2vec中通过背景窗口大小的上下文预测其中心词,而Bert的MLM模型是通过上下文句子预测mask的词。
策略2:Next Sentence Prediction
选择一些句子对A和B,其中50%的数据中B是A的下一个句子,50%的数据中B是从语料库中随机获取的,并不是A的下一个句子;这样做是针对句子间的任务,例如SNLI;
在预训练BERT的时候,模型同时使用两种策略进行训练。
6、Fine-tuning BERT
在句子分类任务中,就是在句子开始的[CLS]对应的token输出端接一个相应的线性层,BERT结构的参数时fine-tuning,但是线性层的参数时从头到尾训练的;
NER任务中每个token后面都会有对应的输出;
如上图所示,给定问题输入Q={q1,...,qn}Q=\{q_1,...,q_n\}Q={q1,...,qn},给定查询文档输入D={d1,...,dm}D=\{d_1,...,d_m\}D={d1,...,dm},D部分的输出为上图对应的黄色部分,为了寻找Answer的起始位置s和结束位置e,需要在Encoder的输出端添加一个橙色部分的向量和蓝色部分的向量,橙色部分的向量维度和Encoder的输出维度一样,使用黄色部分向量和橙色部分向量进行点积(dot product)再拼接一个softmax寻找Answer的起始位置s,同时,使用蓝色部分向量和黄色部分向量进行点乘再拼接一个softmax寻找Answer的结束位置e,这样就找到了Answer的范围[d_s,…,d_e]。
6.1 问答任务(阅读理解)详解
如上图所示,给定Document和Query,Document是模型进行阅读的,给定D和Q,模型会给出Answer在D中的起始位置s和结束位置e,得到最后的Answer:A={ds,...,de}A=\{d_{s},...,d_{e}\}A={ds,...,de};
7、模型蒸馏
- 首先训练一个大的模型,这个大模型也称为teacher模型;
- 利用teacher模型输出的概率分布训练小模型,小模型称为student模型;
- 训练student模型时,包含两种label,soft label对应了teacher模型输出的概率分布,而hard label是原来的one-hot label;
- 模型蒸馏训练的小模型会学习到大模型的表现以及泛化能力:KL(p∥q)=Ep(log(p/q))=∑ipilog(pi)−∑ipilog(qi)K L(p \| q)=E_{p}(\log (p / q))=\sum_{i} p_{i} \log \left(p_{i}\right)-\sum_{i} p_{i} \log \left(q_{i}\right)KL(p∥q)=Ep(log(p/q))=i∑pilog(pi)−i∑pilog(qi)公式中的i表示当前的token,p代表teacher模型的分布,q代表student模型的分布,采用KL散度作为损失函数;
《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》相关推荐
- 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》
目录 1. 背景 2. 什么是 Bert 及原理? 3. 论文内容<BERT: Pre-training of Deep Bidirectional Transformers for Langu ...
- 《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》论文翻译--中英对照
文章目录 1 Introduction(简介) 2 Related Work(相关工作) 2.1 Feature-based Approaches(基于特征的方法) 2.2 Fine-tuning A ...
- Paper:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双向Tr
Paper:<BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双 ...
- BERT(一)--论文翻译:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
转载请注明出处:https://blog.csdn.net/nocml/article/details/124860490 传送门: BERT(一)–论文翻译:BERT: Pre-training o ...
- bert论文解析——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 前言 bert是google在NLP方 ...
- 【文本分类】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
·阅读摘要: Bert是继Transformer之后的又一杰出的模型.Bert是一种预训练语言模型,是在GPT.Elmo.Transformer的基础上提出的.基于Bert的多个NLP领域任务都取 ...
- 【论文阅读笔记】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT的出现使我们终于可以在一个大数据集上训练号一个深的神经网络,应用在很多NLP应用上面. BERT: Pre-training of Deep Bidirectional Transformer ...
- 论文阅读——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Abstract 作者引入了一种新的语 ...
- 论文阅读笔记:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 介绍 背景知识 相关工作 具体实现结构 Pre-training BERT Fine-tun ...
最新文章
- (android硬件应用实战)摄像头拍照实现和总结
- php记录邮件发送,有关php邮件发送一点记录
- 电商搜索推荐业务词汇表
- mysql中case when then 的使用
- 模型稳定后放在服务器上,把工程放在服务器上
- android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
- H264视频压缩编码标准简介(一)
- 【Vegas改编】Winform最小化,系统托盘出现图标,并气泡显示tip
- MongoDB 3.0+访问数据库的方法
- 如何在Xcode 4中“添加现有框架”?
- 网络操作系统具有哪些特征?
- OsmocomBB编译及GSM嗅探问题(转)
- Reza Zafarani经典教材-《社交媒体挖掘》PDF+随书课件打包分享
- MP3标题重命名以及文本去掉模板尾巴
- 服务器500错误 后台接口调试没问题
- QOne、QData开关机操作
- Matlab实现指纹去噪增强
- 【解决方案】SkeyeVSS煤矿安全生产监管视频监控系统,夯实煤矿生产安全防线
- 为什么要去考阿里云计算ACP认证?
- jhead修改exif的CMD
热门文章
- [JavaScript]使用document.createDocumentFragment优化性能
- 如何将xml的String字符串转化标准格式的String字符串
- 面试官:怎么改进哈希算法实现负载均衡的扩展性和容错性?我:...
- 容器编排技术 -- 在Azure上使用CoreOS和Weave的 Kubernetes
- SpringBoot之项目运行常见报错
- Linux——更改文件及目录权限(d rwx r-x r-x字段详解+更改代码指令)
- Java中gatSum方法是什么_Oracle中的SUM用法讲解
- js简单动画:匀速动画、缓动动画、多物体动画以及透明度动画
- 【服务端渲染】之 Vue SSR
- 浅谈 TypeScript【上】-- Flow 静态类型检查工具