5. BERT算法原理解析

1. 语言模型

2. Attention Is All You Need(Transformer)算法原理解析

3. ELMo算法原理解析

4. OpenAI GPT算法原理解析

5. BERT算法原理解析

6. 从Encoder-Decoder(Seq2Seq)理解Attention的本质

7. Transformer-XL原理介绍

1. 前言

在本文以前咱们已经介绍了ELMo和GPT的两个成功的模型,今天给你们介绍google新发布的BERT模型。BERT来头可不小,其性能超越许多使用任务特定架构的系统,刷新了11项NLP任务的当前最优性能记录。html

2. BERT原理

BERT模型的全称是Bidirectional Encoder Representations from Transformers,它是一种新型的语言模型。之因此说是一种新型的语言模型,是由于它经过联合调节全部层中的双向Transformer来训练预训练深度双向表示。算法

想深刻了解BERT模型,首先应该理解语言模型。预训练的语言模型对于众多天然语言处理问题起到了重要做用,好比SQuAD问答任务、命名实体识别以及情感识别。目前将预训练的语言模型应用到NLP任务主要有两种策略,一种是基于特征的语言模型,如ELMo模型;另一种是基于微调的语言模型,如OpenAI GPT。这两类语言模型各有其优缺点,而BERT的出现,彷佛融合了它们全部的优势,所以才能够在诸多后续特定任务上取得最优的效果。架构

2.1 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。google

2.2 BERT模型输入

输入表示能够在一个词序列中表示单个文本句或一对文本(例如,[问题,答案])。对于给定的词,其输入表示是能够经过三部分Embedding求和组成。Embedding的可视化表示以下图所示:编码

image

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

  • Segment Embeddings用来区别两种句子,由于预训练不仅作语言模型还要作以两个句子为输入的分类任务;orm

  • Position Embeddings是经过模型学习获得的。

2.3 BERT模型预训练任务

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

2.3.1 Masked LM

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

在训练的过程当中,随机地掩盖每一个序列中15%的token,并非像word2vec中的cbow那样去对每个词都进行预测。MLM从输入中随机地掩盖一些词,其目标是基于其上下文来预测被掩盖单词的原始词汇。与从左到右的语言模型预训练不一样,MLM目标容许表示融合左右两侧的上下文,这使得能够预训练深度双向Transformer。Transformer编码器不知道它将被要求预测哪些单词,或者哪些已经被随机单词替换,所以它必须对每一个输入词保持分布式的上下文表示。此外,因为随机替换在全部词中只发生1.5%,因此并不会影响模型对于语言的理解。

2.3.2 Next Sentence Prediction

不少句子级别的任务如自动问答(QA)和天然语言推理(NLI)都须要理解两个句子之间的关系,譬如上述Masked LM任务中,通过第一步的处理,15%的词汇被遮盖。那么在这一任务中咱们须要随机将数据划分为等大小的两部分,一部分数据中的两个语句对是上下文连续的,另外一部分数据中的两个语句对是上下文不连续的。而后让Transformer模型来识别这些语句对中,哪些语句对是连续的,哪些对子不连续。

2.4 模型比较

ELMo、GPT、BERT都是近几年提出的模型,在各自提出的时候都取得了不错的成绩。而且相互之间也是相辅相成的关系。

3个模型比较以下:

image

再往前看,在NLP中有着举足轻重地位的模型和思想还有Word2vec、LSTM等。

Word2vec做为里程碑式的进步,对NLP的发展产生了巨大的影响,但Word2vec自己是一种浅层结构,并且其训练的词向量所“学习”到的语义信息受制于窗口大小,所以后续有学者提出利用能够获取长距离依赖的LSTM语言模型预训练词向量,而此种语言模型也有自身的缺陷,由于此种模型是根据句子的上文信息来预测下文的,或者根据下文来预测上文,直观上来讲,咱们理解语言都要考虑到左右两侧的上下文信息,但传统的LSTM模型只学习到了单向的信息。

image

3. 总结

语言模型的每一次进步都推进着NLP的发展,从Word2vec到ELMo,从OpenAI GPT到BERT。经过这些发展咱们也能够洞悉到,将来表征学习(Deep learning is representation learning)将会愈来愈多的应用到NLP相关任务中,它们能够充分的利用目前海量的数据,而后结合各类任务场景,去训练出更为先进的模型,从而促进AI项目的落地。