BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

本文是一篇关于“BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding”论文阅读报告。

BERT在模型方面其实没有太大的创新,像神经网络语言模型(NNLM)其网络结构如下,CBOW模型都是已经发展很多年的很有用NLP语言模型,更多的BERT是一个集百家之长的一个产物,其主要的创新在于使用MLM(Masked Language Model)和Next Sentence Prediction. BERT之所以这么火爆,主要在于它把NLP的很多任务的当前最佳性能刷爆了。

图像领域的预训练

语言模型的预训练的思想最初是来自于图像领域预训练,在深度学习火起来以后,预训练过程就是做图像领域和视频领域一种比较常规的做法,为什么都想着用预训练,主要还是其很有效。

图像领域做预训练的过程如上图所示

我们设计好网络结构以后,对于图像来说一般是CNN的多层叠加网络结构,可以先用某个训练集合比如训练集合A或者训练集合B对这个网络进行预先训练,在A任务上或者B任务上学会网络参数,然后存起来以备后用。

假设我们面临第三个任务C,网络结构采用相同的网络结构,在比较浅的几层CNN结构,网络参数初始化的时候可以加载A任务或者B任务学习好的参数,其它的CNN高层参数仍然随机初始化,之后我们用任务C的训练数据来训练网络,此时有两种做法,一种是浅层加载的参数在训练C任务的过程中不动,这种方法称为Frozen,即是静态的;另外一种是底层网络参数尽管被初始化了,在C任务训练的过程中仍然随着训练的进程不断改变,这种方法一般叫“Fine-Tuning”,即是动态的。动态的有一个好处,即是在基础任务A,B任务上学得的底层网络参数并不一定适应C任务,或者说是更适应于A,B任务,那么应用动态的方法将使得C任务数据训练以后,会对底层网络参数进行微调,使之更加适应于C任务。

那么为什么预训练的思路是可行的?

对于CNN结构来说,不同层级的神经元学习到了不同类别的图像特征,由底向上特征形成层级结构,图示1,最底层神经元学习到的是线段等特征,图示2,第二个隐层学到的是人脸五官的轮廓,第三层学到的是人脸的轮廓,通过三步形成了特征的层级结构,越是底层的特征越是所有不论什么领域的图像都会具备的比如边角线弧线等底层基础特征,越往上抽取的特征越与手头的任务相关。

正因为此,所有预训练好的网络参数,尤其是底层网络参数抽取出的特征跟具体任务越无关,越具备任务的通用性,所以这也是为什么一般用底层预训练好的参数初始化新任务网络参数的原因。而高层特征跟具体任务的关联较大,实际可以不用使用,或者采用Fine-tuning用新数据集清洗掉高层无关的特征提取器。

研究人员也就是受到了图像领域预训练的启发,将预训练引用到自然语言处理。比如Word embedding,即词向量,就是早期NLP的预训练技术。Word embedding有两种比较常用的训练方式,一种是CBOW,一种是Skip-gram,CBOW的结构如下:

BERT在训练方式上借鉴了CBOW,即MLM,使用mask随机mask掉一些词,然后利用上下文预测[mask],这样,预测部分词和上下文就有了关联。

下游NLP任务在使用Word Embedding的时候类似于图像有两种做法:

一种是Frozen,就是Word Embedding这一层网络参数固定不动;

另外一种是Fine-Tuning,就是Word Embedding这层参数使用新的训练集合训练也需要跟着训练过程跟新Word Embedding。

但是Word Embedding也有改进的地方,那就是多义词:

这一问题在ELMO模型(Embedding from Language Models)中得到解决。

ELMO的思想是:用语言模型训练好的WE无法辨别多义词,实际使用时会根据上下文对WE进行相应调整,类似于“Fine-Tuning”,这样WE就可以识别多义词了,即采用动态的方法,而不是静态的方法,因为静态的方法无法解决多义词的问题。

ELMO的缺点:

1、LSTM抽取特征的能力远弱于Transformer

2、拼接方式双向融合特征融合能力偏弱

在特征抽取器方面,ELMO选择LSTM,而不是Transformer;ELMO采用双向拼接这种融合特征的能力比BERT一体化的融合特征方式弱。

从WE到GPT(Generative Pre-Training 生成式的预训练)

GPT采用两阶段过程,第一阶段时利用语言模型进行预训练,第二阶段通过Fine-tuning的模式解决下游任务。

GPT和ELMO的区别在于:

1、特征提取器不是使用RNN,而是使用Transformer

2、GPT的预训练虽然仍然是以语言模型作为目标任务,但是GPT采用的是单向的语言模型,即预测单词Wi时有两种做法,一个是同时利用上文(context-before)和下文(context-after),ELMO在做语言模型预训练的时候,同时使用上下文,而GPT只是用上文。

显然,被预测的词只包含了上文的信息,不包含下文的信息,这限制了其应用场景。比如做阅读理解这种NLP任务时其效果肯定不好。训练WE时也无法将下文的信息包含到WE中。

Transformer是一个叠加的“自注意力机制(Self Attention)”构成的深度网络,是目前NLP里最强的特征提取器。Transformer同时具备并行性好,又适合捕获长距离特征,整体性能比RNN和CNN都是要好的。

在做下游任务的时候,就可以利用第一步预训练好的参数初始化GPT的网络结构,这样通过训练学到的语言学知识就被引入到下游任务中,第二步就是利用下游任务训练网络,对网络参数进行Fine-tuning,使得这个网络更适合处理下游任务,也就是说预训练学到的是只是一些语言学的基础特征而已,比如语法结构,词法结构等基础特征,即所有NLP任务的基础特征。

GPT的缺点:

1、语言模型是单向的,不是双向的。

这也是GPT和BERT的区别,BERT是双向的语言模型

把ELMO、GPT、WE的缺点和优点整合起来,就产生了BERT。

BERT采用和GPT完全相同的两阶段模型,首先是语言模型预训练;其次是使用Fine-Tuning模式解决下游任务。和GPT不同的点在于,BERT采用类似于ELMO的双向语言模型,之所以说类似于,原因在于ELMO的双向语言模型是双向拼接的语言模型,而BERT采用的是一体化双向融合语言模型,其融合能力比ELMO更强;另外,BERT的语言模型的数据规模要比GPT大。

在BERT之前的工作中有两种将预训练的语言特征使用到下游任务中的策略。但是这些方法的缺陷是只使用了单向的语言模型来学习特征,对于比如问答这样的需要整句理解的任务是非常不好的。       

一种是feature-based,比如ELMO,使用任务导向的模型结构并加入预训练特征作为额外特征来建模;另一种是fine-tuning型的,比如Open AI的GPT,并通过fine-tuning所有参数来应用于下游任务。

本文提出的BERT通过MLM(masked language model) 预训练目标函数来处理之前模型面临的单向限制。MLM随机的mask一些输入,并通过上下文来预测这些被mask的输入,从而允许特征中同时混入上文和下文的信息。

BERT的预训练过程和GPT差不多,在预训练阶段,模型利用无标注的数据进行训练。

Pre-training BERT Task #1:MLM

前面提到的CBOW的核心思想是:在做语言模型任务的时候,把要预测的单词抠掉,然后根据它的上文和下文去预测单词,BERT在预训练阶段使用到的MLM(Masked Language Model)其本质思想就是CBOW。

Masked双向语言模型随机选择15%的单词,用[Mask]掩码代替原始单词,然后要求模型去正确预测被[Mask]替代的单词。但是在训练过程中,会出现大量的[Mask]标记,为了避免这个问题,15%被[Mask]替代的单词中:(1)80%真正被替换成[Mask]标记;(2)10%情况下被随机替换成另外一个单词;(3)10%情况下这个单词保持不变。

Pre-training BERT Task #2:NSP

对于Next Sentence Prediction,指的是做语言模型预训练的时候,分两种情况选择两个句子:(1)选择语料中真正顺序相连的两个句子;(2)从语料库中随机抛色子,随机选择一个拼到第一个句子的后面。我们要求模型除了做上述的Masked语言模型任务外,附带再做两个句子的关系预测,判断第二个句子是不是第一个句子的后续句子。考虑到很多NLP任务是句子关系判断任务,单词预测粒度到不了句子关系这个层级,所以增加NSP有助于下游句子关系判断任务。

BERT最关键的两点就是:(1)采用Transformer特征提取器;(2)预训练时采用一体化双向融合语言模型。而且此处的双向是一体化双向融合语言融合,而不是双向拼接的语言拼接。这两种模型的区别在于前者同时考虑上下文,而后者是先考虑上文,再考虑下文,然后把上下文拼接在一起。

BERT的第二阶段就是Fine-Tuning阶段,BERT先利用预训练的参数进行初始化,然后利用下游任务的有标注数据对参数进行微调。

BERT的输入

BERT的输入是一个线性序列,两个句子通过分隔符分割,最前面和最后面增加两个标识符号,每个单词有三个embedding:

(1)位置信息embedding,因为NLP中单词顺序是很重要的特征,需要对位置信息进行编码

(2)单词embedding,这个就是我们一直提到的词向量。

(3)句子embedding,因为前面提到训练数据都是由两个句子构成的,那么每个句子有个句子整体的embedding,把单词对应的三个embedding叠加,就形成了BERT的输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值