目录

  • 《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、摘要

  1. 论文提粗了一种新的语言表征模型bert,不同于其他的语言表征模型吧,bert可以同时学习向左和向右的上下文信息;
  2. 预训练的bert可以直接fine-tuning,只需要加相应的输出层,无需太多模型结构的改动;
  3. 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}BERTLARGEBERTBASE(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]

为了保证预训练和微调时的一致性,采用以下措施:

  1. 80%的机会采用mask:mydogishairy−>mydogis[mask]my\space dog\space is \space hairy -> my\space dog\space is \space [mask]mydogishairy>mydogis[mask]
  2. 10%的机会随机选取一个词代替mask:mydogishairy−>mydogisapplemy\space dog\space is \space hairy -> my\space dog\space is \space applemydogishairy>mydogisapple
  3. 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、模型蒸馏

  1. 首先训练一个大的模型,这个大模型也称为teacher模型;
  2. 利用teacher模型输出的概率分布训练小模型,小模型称为student模型;
  3. 训练student模型时,包含两种label,soft label对应了teacher模型输出的概率分布,而hard label是原来的one-hot label;
  4. 模型蒸馏训练的小模型会学习到大模型的表现以及泛化能力: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(pq)=Ep(log(p/q))=ipilog(pi)ipilog(qi)公式中的i表示当前的token,p代表teacher模型的分布,q代表student模型的分布,采用KL散度作为损失函数;

《BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding》相关推荐

  1. 预训练模型:BERT深度解析《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》

    目录 1. 背景 2. 什么是 Bert 及原理? 3. 论文内容<BERT: Pre-training of Deep Bidirectional Transformers for Langu ...

  2. 《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 ...

  3. Paper:《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双向Tr

    Paper:<BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双 ...

  4. BERT(一)--论文翻译:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    转载请注明出处:https://blog.csdn.net/nocml/article/details/124860490 传送门: BERT(一)–论文翻译:BERT: Pre-training o ...

  5. bert论文解析——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 前言 bert是google在NLP方 ...

  6. 【文本分类】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    ·阅读摘要:   Bert是继Transformer之后的又一杰出的模型.Bert是一种预训练语言模型,是在GPT.Elmo.Transformer的基础上提出的.基于Bert的多个NLP领域任务都取 ...

  7. 【论文阅读笔记】BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT的出现使我们终于可以在一个大数据集上训练号一个深的神经网络,应用在很多NLP应用上面. BERT: Pre-training of Deep Bidirectional Transformer ...

  8. 论文阅读——BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding Abstract 作者引入了一种新的语 ...

  9. 论文阅读笔记:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

    提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 介绍 背景知识 相关工作 具体实现结构 Pre-training BERT Fine-tun ...

最新文章

  1. (android硬件应用实战)摄像头拍照实现和总结
  2. php记录邮件发送,有关php邮件发送一点记录
  3. 电商搜索推荐业务词汇表
  4. mysql中case when then 的使用
  5. 模型稳定后放在服务器上,把工程放在服务器上
  6. android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
  7. H264视频压缩编码标准简介(一)
  8. 【Vegas改编】Winform最小化,系统托盘出现图标,并气泡显示tip
  9. MongoDB 3.0+访问数据库的方法
  10. 如何在Xcode 4中“添加现有框架”?
  11. 网络操作系统具有哪些特征?
  12. OsmocomBB编译及GSM嗅探问题(转)
  13. Reza Zafarani经典教材-《社交媒体挖掘》PDF+随书课件打包分享
  14. MP3标题重命名以及文本去掉模板尾巴
  15. 服务器500错误 后台接口调试没问题
  16. QOne、QData开关机操作
  17. Matlab实现指纹去噪增强
  18. 【解决方案】SkeyeVSS煤矿安全生产监管视频监控系统,夯实煤矿生产安全防线
  19. 为什么要去考阿里云计算ACP认证?
  20. jhead修改exif的CMD

热门文章

  1. [JavaScript]使用document.createDocumentFragment优化性能
  2. 如何将xml的String字符串转化标准格式的String字符串
  3. 面试官:怎么改进哈希算法实现负载均衡的扩展性和容错性?我:...
  4. 容器编排技术 -- 在Azure上使用CoreOS和Weave的 Kubernetes
  5. SpringBoot之项目运行常见报错
  6. Linux——更改文件及目录权限(d rwx r-x r-x字段详解+更改代码指令)
  7. Java中gatSum方法是什么_Oracle中的SUM用法讲解
  8. js简单动画:匀速动画、缓动动画、多物体动画以及透明度动画
  9. 【服务端渲染】之 Vue SSR
  10. 浅谈 TypeScript【上】-- Flow 静态类型检查工具