Bert算法的前因后果

1.基本概念:

“Bert(Bidirectional Encoder Representations from Transformers),是基于Transformer算法的双向编码表征算法,Transformer算法基于多头注意力(Multi-Head attention)”
论文:BERT: Pre-training of Deep Bidirectional Transformers forLanguage Understanding

2.Bert能够用来解决的问题:

BERT的“里程碑”意义在于:证明了一个非常深的模型可以显著提高NLP任务的准确率,而这个模型可以从无标记数据集中预训练得到。

Bert能够用来做的任务:
一、文本分类 :文本分类/情感计算
二、序列标注任务,比如分词 实体识别 词性标注
三、句子关系判断 比如Entailment/QA/自然语言推理
(不能完成的NLP任务:4. 生成式任务:机器翻译/文本摘要)
bert刷新的11个记录:

刷新的11个NLP的任务,分为四大类下游任务
1.句子对分类任务
2.单句子分类任务
3.问答任务
4.单句子标注任务

3.Bert模型原理

在了解BERT算法原理需要了解两个概念:
Attention Is All You Need(Transformer)算法原理解析
Transformer模型详解

Bert原理参考链接:

BERT算法原理解析
NLP_BERT模型的介绍
BERT模型
Bert模型原文翻译

Bert的子结构

BERT是一种基于微调的多层双向Transformer编码器,其中的Transformer与原始的Transformer是相同的,并且实现了两个版本的BERT模型,在两个版本中前馈大小都设置为4层:
lBERTBASE:L=12,H=768,A=12,Total Parameters=110M
lBERTLARGE:L=24,H=1024,A=16,Total Parameters=340M
其中层数(即Transformer blocks块)表示为L,隐藏大小表示为H,自注意力的数量为A。

attention的结构:

谷歌在2017年提出了基于attention的结构来处理序列模型:
Encoder顾名思义就是对输入句子Source进行编码,将输入句子通过非线性变换转化为中间语义表示C:
C=f(x1,x2,…,xm)
解码器Decoder来说,其任务是根据句子Source的中间语义表示C和之前已经生成的历史信息
yi=g(C,y1,y2,…,yi−1)

在Encoder 与Decoder之间加入了不同的语义编码Ci来增加模型的注意力,语义编码Ci是由句子Source的每个单词经过Encoder编码产生的,这意味着生成的不同的单词,y1,y2或者y3,其实句子Source中的单词对生成某个目标单词yi来说影响力是不相同的,即Encoder对于每个source中的单词加权不同,即体现出模型的注意力。在这里插入图片描述
Encoder的加权是由Encoder和Decoder所用到的hi,si(每个单词对应的语义编码,解码)的综合函数完成的。
在这里插入图片描述在这里插入图片描述
Bahdanau Attention结构
在这里插入图片描述
Luong Attention结构
在这里插入图片描述

在这里插入图片描述
Attention机制的本质思想
可以将Query看作为yi之前的 y1,y2,…,yi−1, 通过与Source中不同的Key的相似度与Value相乘, Key与Value即上述公式中的hi.
在这里插入图片描述
上文所举的Encoder-Decoder框架中,因为在计算Attention的过程中,Source中的Key和Value合二为一成,指向的是同一个东西,也即输入句子中每个单词对应的语义编码hi,
在这里插入图片描述

Transformer

主体结构:在这里插入图片描述模型分为编码器和解码器两个部分。

输入层/输出层
编码器和解码器的输入就是利用学习好的embeddings将tokens(一般应该是词或者字符)转化为d维向量。对解码器来说,利用线性变换以及softmax函数将解码的输出转化为一个预测下一个token的概率。
编码器由6个相同的层堆叠在一起,每一层又有两个支层。第一个支层是一个多头的自注意机制,第二个支层是一个简单的全连接前馈网络。在两个支层外面都添加了一个residual的连接,然后进行了layer nomalization的操作。模型所有的支层以及embedding层的输出维度都是dmodel。
解码器也是堆叠了六个相同的层。不过每层除了编码器中那两个支层,解码器还加入了第三个支层,如图中所示同样也用了residual以及layer normalization。具体的细节后面再讲。
位置向量
由于模型没有任何循环或者卷积,为了使用序列的顺序信息,需要将tokens的相对以及绝对位置信息注入到模型中去。论文在输入embeddings的基础上加了一个“位置编码”。位置编码和embeddings由同样的维度都是dmodel
所以两者可以直接相加。有很多位置编码的选择,既有学习到的也有固定不变的。

Bert结构

在这里插入图片描述在这里插入图片描述在这里插入图片描述

token Embeddings表示的是词向量,第一个单词是CLS标志,可以用于之后的分类任务,对于非分类任务,可以忽略词向量;

Segment Embeddings用来区别两种句子,因为预训练不只做语言模型还要做以两个句子为输入的分类任务;

Position Embeddings是通过模型学习得到的。

在这里插入图片描述

BERT模型预训练任务

BERT模型使用两个新的无监督预测任务对BERT进行预训练,分别是Masked LM和Next
Sentence Prediction:

MLM:
为了训练深度双向Transformer表示,采用了一种简单的方法:随机掩盖部分输入词,然后对那些被掩盖的词进行预测,此方法被称为“Masked LM”(MLM)。预训练的目标是构建语言模型,BERT模型采用的是bidirectional Transformer。那么为什么采用“bidirectional”的方式呢?因为在预训练语言模型来处理下游任务时,我们需要的不仅仅是某个词左侧的语言信息,还需要右侧的语言信息。

在训练的过程中,随机地掩盖每个序列中15%的token,并不是像word2vec中的cbow那样去对每一个词都进行预测。MLM从输入中随机地掩盖一些词,其目标是基于其上下文来预测被掩盖单词的原始词汇。与从左到右的语言模型预训练不同,MLM目标允许表示融合左右两侧的上下文,这使得可以预训练深度双向Transformer。

Transformer编码器不知道它将被要求预测哪些单词,或者哪些已经被随机单词替换,因此它必须对每个输入词保持分布式的上下文表示。此外,由于随机替换在所有词中只发生1.5%,所以并不会影响模型对于语言的理解。
在这里插入图片描述

Next Sentence Prediction
很多句子级别的任务如自动问答(QA)和自然语言推理(NLI)都需要理解两个句子之间的关系,譬如上述Masked LM任务中,经过第一步的处理,15%的词汇被遮盖。那么在这一任务中我们需要随机将数据划分为等大小的两部分,一部分数据中的两个语句对是上下文连续的,另一部分数据中的两个语句对是上下文不连续的。然后让Transformer模型来识别这些语句对中,哪些语句对是连续的,哪些对子不连续。
在这里插入图片描述 预训练过程

4. BERT、ELMo 与GPT模型比较

3个模型比较如下:在这里插入图片描述在这里插入图片描述

5. BERT 应用到的11个NLP 项目

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值