BERT模型的深度解读
一、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任务:掩蔽语言模型
采样:
将采样后的句子送进去Bert encoder进行编码
输入:Bert encoder编码后的输出 + 告诉模型要预测的词元位置(张量形状[ Batch Size,词元位置数量])------一句话中可能要预测词元的数量有点多,要3个的话词元位置数量=3
中间:MLP结构
Dense:全连接层激活函数是ReLu
LN:用来规范化数据
全连接层:激活函数是Softmax(token的数量)Softmax函数是用于多类分类问题的激活函数,在多类分类问题中,超过两个类标签则需要类成员关系。对于长度为K KK的任意实向量,Softmax函数可以将其压缩为长度为K KK,值在[ 0 , 1 ] [0,1][0,1]范围内,并且向量中元素的总和为1的实向量。
输出:序列类别分布张量,形状:[ Batch Size , 词元位置数量 , 总Token数量]
2.3 NSP任务
采样:
采样时,50%的概率将第二句句子替换成段落中的任意一个句子将采样后的句子送进去Bert encoder进行编码
输入:经过bert encoder编码后输出< CLS >位置的张量,形状 [ Batch Size , Emd dim]
中间:MLP结构,输出维度为2,激活函数为Softmax
输出:类别分布张量。形状为[Batch Size , 2]
三、训练过程
- 先通过文本数据整理出:(没有考虑padding )
①索引化的Tokens(已经随机选取了MLM与NSP任务数据)
②索引化的Segments
③MLM任务要预测的位置
④MLM任务的真实标注
⑤NSP任务的真实标注 - 将①②输入Bert Encoder得到编码后的向量以下称为⑥
- 将⑥与③输入MLM网络得到预测值与④计算交叉嫡损失函数。
- 在⑥中取出对应位置的张量输入NSP网络得到值与⑤计算交叉嫡损失函数。
- 将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模型的深度解读相关推荐
- BERT模型系列大全解读
前言 本文讲解的BERT系列模型主要是自编码语言模型-AE LM(AutoEncoder Language Model):通过在输入X中随机掩码(mask)一部分单词,然后预训练的主要任务之一就是根据 ...
- 阿里技术人才能力模型(深度解读系列之一)
蓝色关注,回复"1"获取知名公司程序员和产品经理职级 这是我的第「104」篇原创文章 见字如面,我是军哥. 上周有一位读者朋友联系我,说他有阿里的技术人才能力模型,但是不能完全理解 ...
- 从源码到实战:BERT模型训练营
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 开课吧教育 方向:NLP 之 BERT实战 都说BERT模型开启了NLP的新时代,更有" ...
- 开启NLP新时代的BERT模型,真的好上手吗?
都说BERT模型开启了NLP的新时代,更有"BERT在手,天下我有"的传说,它解决了很多NLP的难题: 1.BERT让低成本地训练超大规模语料成为可能: 2.BERT能够联合神经网 ...
- NLP突破性成果 BERT 模型详细解读 bert参数微调
https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 关注她 82 人赞了该文章 Goo ...
- 【NLP】Transformer模型深度解读
" 本文对Transoformer模型进行了深度解读,包括整体架构,Attention结构的背景和细节,QKV的含义,Multi-head Attention的本质,FFN,Position ...
- Transformer模型深度解读
" 本文对Transoformer模型进行了深度解读,包括整体架构,Attention结构的背景和细节,QKV的含义,Multi-head Attention的本质,FFN,Position ...
- [深度学习] 自然语言处理 --- BERT模型原理
一 BERT简介 NLP:自然语言处理(NLP)是信息时代最重要的技术之一.理解复杂的语言也是人工智能的重要组成部分.Google AI 团队提出的预训练语言模型 BERT(Bidirectional ...
- [NLP自然语言处理]谷歌BERT模型深度解析
BERT模型代码已经发布,可以在我的github: NLP-BERT--Python3.6-pytorch 中下载,请记得start哦 目录 一.前言 二.如何理解BERT模型 三.BERT模型解析 ...
最新文章
- 一份职位信息的精准推荐之旅,从AI底层架构说起
- 总结:Apache架构师30条架构原则
- 关于Oracle Stream的安装、配置和使用
- 【风控体系】携程基于大数据分析的实时风控体系
- hadoop集群环境搭建
- 笔记-信息系统开发基础-软件测试-软件测试的类型
- matlab imread_matlab经典图片生成与去水印
- BZOJ 4811 树链剖分+线段树
- VC内存泄露检查工具:VisualLeakDetector
- oracle 删除表 索引也会删除吗,Oracle 删除当前用户下所有的表、索引、序列
- linux7.3ssh登陆不上,centos7.3升级openssh到7.7p1后root用户无法登陆的问题
- 【论文写作】SSM房屋租赁系统如何写设计总结
- new对象后的代码块(匿名类)
- 3月3日 单灭点、双灭点、单应矩阵求解相机姿态,世界坐标-相机坐标-图像坐标-像素坐标四个坐标系的变换关系,通过Vanishing Points计算焦距和像心
- java读取中文_java读写中文文件
- linux 触控板 不识别,关于Ubuntu下触摸板失灵的解决方法一例
- Docker实现ElasticSearch集群搭建
- 又有程序员跳楼了 我们是有多累?
- Python进阶【第一篇】socket
- LocalDate 和LocalDateTime
热门文章
- linux队列数据结构,网络设备发送队列相关数据结构及其创建函数 (linux网络子系统学习 第十节 )...
- lenet 5 代码 matlab,Lenet 和 Lenet5 结构简单粗暴详解(附完整代码)
- Java 实现图片压缩、裁剪
- 习题9 银行存款利息
- 对c语言后续课程的展望,20155324王鸣宇对C语言课程回顾及对Java的展望
- wp网站怎么搬家服务器,蓝色早晨-UED | WordPress搬家完整详细教程及换域名
- 【BIT2021程设】14.水晶球
- 1201 18岁生日
- 如何上好一堂乐高课?知乎上最多赞的回答。
- VBA 函数参数和结果输出的二三事