一、BERT整体概要

Bert由两部分组成:

  • 预训练(Pre-training):通过两个联合训练任务得到Bert模型
  • 微调(Fine-tune):在预训练得到bert模型的基础上进行各种各样的NLP

二、预训练

输入经过bert encoder层编码后,进行MLM任务和NSP任务,产生联合训练的损失函数从而迭代更新整个模型中的参数。

Bert Encoder:采用默认的12层transformer encoder layer对输入进行编码
MLM任务:掩蔽语言模型,遮盖句子中若干词,用周围词去预测遮盖的词
NSP任务:下个句子预测,判断句子B在文章中是否属于句子A的下一句

2.1 BERT Encoder

如何对输入进行编码

句首+ < CLS > ,句尾和两个句子之间+ < SEP >
句子级别的编码:用来区分每个句子,一个句子的编码是相同的
位置编码:其实就是数字编码123456789

经过编码器编码后输出张量的形状:[ Batch Size , Seq lens , Emb dim]

2.2 MLM任务:掩蔽语言模型

  1. 采样

  2. 将采样后的句子送进去Bert encoder进行编码

  3. 输入:Bert encoder编码后的输出 + 告诉模型要预测的词元位置(张量形状[ Batch Size,词元位置数量])------一句话中可能要预测词元的数量有点多,要3个的话词元位置数量=3

  4. 中间:MLP结构

    Dense:全连接层激活函数是ReLu
    LN:用来规范化数据
    全连接层:激活函数是Softmax(token的数量)

    Softmax函数是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为K KK的任意实向量,Softmax函数可以将其压缩为长度为K KK,值在[ 0 , 1 ] [0,1][0,1]范围内,并且向量中元素的总和为1的实向量。

  5. 输出:序列类别分布张量,形状:[ Batch Size , 词元位置数量 , 总Token数量]

2.3 NSP任务

  1. 采样
    采样时,50%的概率将第二句句子替换成段落中的任意一个句子

  2. 将采样后的句子送进去Bert encoder进行编码

  3. 输入:经过bert encoder编码后输出< CLS >位置的张量,形状 [ Batch Size , Emd dim]

  4. 中间:MLP结构,输出维度为2,激活函数为Softmax

  5. 输出:类别分布张量。形状为[Batch Size , 2]

三、训练过程

  1. 先通过文本数据整理出:(没有考虑padding )
    ①索引化的Tokens(已经随机选取了MLM与NSP任务数据)
    ②索引化的Segments
    ③MLM任务要预测的位置
    ④MLM任务的真实标注
    ⑤NSP任务的真实标注
  2. 将①②输入Bert Encoder得到编码后的向量以下称为⑥
  3. 将⑥与③输入MLM网络得到预测值与④计算交叉嫡损失函数。
  4. 在⑥中取出对应位置的张量输入NSP网络得到值与⑤计算交叉嫡损失函数。
  5. 将MLM的loss与NSP的loss相加得到总的loss,并反向传播更新所有模型参数。

考虑padding时,用< pad >进行填充。并且使用valid_lens记录实际长度

四、微调

通过预训练得到的bert encoder网络接上各种各样的下游网络进行不同的任务

a) 句子对分类,将经过Encoder层编码后的< CLS>对应位置的向量输入进一个多分类的MLP网络中即可。
b) 单句分类,同上。
c) 根据问题得到答案,输入是一个问题与一段描述组成的句子对。将经过Encoder层编码后的每个词元对应位置的向量输入进3分类的MLP网络,而类别分别是Start(答案的首位),End(答案的末尾),Span(其他位置)。
d) 命名实体识别,将经过Encoder层编码后每个词元对应位置的向量输入进一个多分类的MLP网络中即可。
(就是12层的编码把每个词都编码后,通过编码已经提取出了一些信息,再看你怎么利用而已)


五、问题与总结

5.1bert的双向体现在什么地方

体现在mlm任务 :

预测 “mask” 时,要看前后 “my” 与 “is” 的信息

5.2bert与transformer在位置编码上的不同


位置编码信息,在多层注意力层后就没有了-----简化:bert就直接用1234567

5.3 为什么bert中的word embedding具有一词多义的

bert最后输出的我认得 embedding

BERT模型的深度解读相关推荐

  1. BERT模型系列大全解读

    前言 本文讲解的BERT系列模型主要是自编码语言模型-AE LM(AutoEncoder Language Model):通过在输入X中随机掩码(mask)一部分单词,然后预训练的主要任务之一就是根据 ...

  2. 阿里技术人才能力模型(深度解读系列之一)

    蓝色关注,回复"1"获取知名公司程序员和产品经理职级 这是我的第「104」篇原创文章 见字如面,我是军哥. 上周有一位读者朋友联系我,说他有阿里的技术人才能力模型,但是不能完全理解 ...

  3. 从源码到实战:BERT模型训练营

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 开课吧教育 方向:NLP 之 BERT实战 都说BERT模型开启了NLP的新时代,更有" ...

  4. 开启NLP新时代的BERT模型,真的好上手吗?

    都说BERT模型开启了NLP的新时代,更有"BERT在手,天下我有"的传说,它解决了很多NLP的难题: 1.BERT让低成本地训练超大规模语料成为可能: 2.BERT能够联合神经网 ...

  5. NLP突破性成果 BERT 模型详细解读 bert参数微调

    https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 ​关注她 82 人赞了该文章 Goo ...

  6. 【NLP】Transformer模型深度解读

    " 本文对Transoformer模型进行了深度解读,包括整体架构,Attention结构的背景和细节,QKV的含义,Multi-head Attention的本质,FFN,Position ...

  7. Transformer模型深度解读

    " 本文对Transoformer模型进行了深度解读,包括整体架构,Attention结构的背景和细节,QKV的含义,Multi-head Attention的本质,FFN,Position ...

  8. [深度学习] 自然语言处理 --- BERT模型原理

    一 BERT简介 NLP:自然语言处理(NLP)是信息时代最重要的技术之一.理解复杂的语言也是人工智能的重要组成部分.Google AI 团队提出的预训练语言模型 BERT(Bidirectional ...

  9. [NLP自然语言处理]谷歌BERT模型深度解析

    BERT模型代码已经发布,可以在我的github: NLP-BERT--Python3.6-pytorch 中下载,请记得start哦 目录 一.前言 二.如何理解BERT模型 三.BERT模型解析 ...

最新文章

  1. 一份职位信息的精准推荐之旅,从AI底层架构说起
  2. 总结:Apache架构师30条架构原则
  3. 关于Oracle Stream的安装、配置和使用
  4. 【风控体系】携程基于大数据分析的实时风控体系
  5. hadoop集群环境搭建
  6. 笔记-信息系统开发基础-软件测试-软件测试的类型
  7. matlab imread_matlab经典图片生成与去水印
  8. BZOJ 4811 树链剖分+线段树
  9. VC内存泄露检查工具:VisualLeakDetector
  10. oracle 删除表 索引也会删除吗,Oracle 删除当前用户下所有的表、索引、序列
  11. linux7.3ssh登陆不上,centos7.3升级openssh到7.7p1后root用户无法登陆的问题
  12. 【论文写作】SSM房屋租赁系统如何写设计总结
  13. new对象后的代码块(匿名类)
  14. 3月3日 单灭点、双灭点、单应矩阵求解相机姿态,世界坐标-相机坐标-图像坐标-像素坐标四个坐标系的变换关系,通过Vanishing Points计算焦距和像心
  15. java读取中文_java读写中文文件
  16. linux 触控板 不识别,关于Ubuntu下触摸板失灵的解决方法一例
  17. Docker实现ElasticSearch集群搭建
  18. 又有程序员跳楼了 我们是有多累?
  19. Python进阶【第一篇】socket
  20. LocalDate 和LocalDateTime

热门文章

  1. linux队列数据结构,网络设备发送队列相关数据结构及其创建函数 (linux网络子系统学习 第十节 )...
  2. lenet 5 代码 matlab,Lenet 和 Lenet5 结构简单粗暴详解(附完整代码)
  3. Java 实现图片压缩、裁剪
  4. 习题9 银行存款利息
  5. 对c语言后续课程的展望,20155324王鸣宇对C语言课程回顾及对Java的展望
  6. wp网站怎么搬家服务器,蓝色早晨-UED | WordPress搬家完整详细教程及换域名
  7. 【BIT2021程设】14.水晶球
  8. 1201 18岁生日
  9. 如何上好一堂乐高课?知乎上最多赞的回答。
  10. VBA 函数参数和结果输出的二三事