BERT模型:Bidirectional Encoder Representations from Transformer

在这里插入图片描述

What
BERT预训练Transformer的encoder网络,提高准确率
How

  • 随机遮挡一个或两个单词,让encoder网络根据上下文来预测遮挡单词
  • 将两个句子放在一起,判断是否是同一文中的相邻句子。

BERT通过以上两个任务来预训练transformer网络中的encoder网络。

Task1:Predict Masked Words

BERT模型:Bidirectional Encoder Representations from Transformer_第1张图片

预测被遮挡的单词流程

transformer的encoder网络不是一对一映射,而是多对一。在模型中,输入数据会被随机遮挡15%的单词,当被遮挡的单词进入embedding layer生成词向量 X M X_M XM。在经过transformer的encoder网络后的输出 u M u_M uM中不仅包含被遮挡单词信息,还包含整句输入的信息 X 1 , X M , . . . X_1,X_M,... X1,XM,...,同样包含了原始句子的信息以及被遮挡单词的信息。最终, u M u_M uM作为特征向量,进入softmax分类器计算概率分布 p p p,字典里每一个单词都有一个概率值,通过对比概率值就可以知道被遮挡的单词是什么,选择最接近被遮挡单词的one-hot向量的结果作为预测结果。
BERT模型:Bidirectional Encoder Representations from Transformer_第2张图片
BERT不需要人为标注数据集
把被遮挡单词cat的one-hot向量记作e,是真实值;p是分类器得到的概率分布。预测目标是希望p能接近e,因此损失函数设置为cross entropy(e,p),用反向传播算出梯度,通过梯度下降优化模型参数。BERT模型:Bidirectional Encoder Representations from Transformer_第3张图片

Task2:Predict the Next Sentence

BERT模型:Bidirectional Encoder Representations from Transformer_第4张图片
在这里插入图片描述
训练数据的预处理
将两句话拼接起来,两句话中间用符号[SEP]分开,句首用[CLS]占位,意思是分类。

BERT模型:Bidirectional Encoder Representations from Transformer_第5张图片
生成训练数据时,有50%是原文里真实相邻的两句话,另外50%的第二句话是从训练数据中随机抽取的句子。真实相邻两句话标签target是True,随机抽取组成的两句话target是False。
一条训练数据有两句话,两句话分割成很多的符号,数据头部是符号[CLS]占位,这位子上的输出记作向量c,但c并不只依赖于CLS。这里的c包含了输入的所有信息,因此仅靠c就可以对两个句子是否相邻进行判断。将c作为特征向量输入分类器,分类器的输出 f f f介于0,1之间,0表示False,1表示True。利用cross entropy作为损失函数来衡量预测结果和真实值之间的区别。此外,有了损失函数就可以计算梯度,然后通过梯度下降来更新模型参数。
BERT模型:Bidirectional Encoder Representations from Transformer_第6张图片

这样做预训练的作用

相邻两句话通常有关联,这样的预训练可以强化这种关联性,让embedding layer输出的词向量包含这种关联。比如微积分和牛顿的词向量就存在一种关联。在Transformer的encoder网络中有self-attention层,其作用就是找相关性。这种训练任务就可以训练self-attention找到正确的相关性。

Combining the two method

BERT将上述两个任务结合起来,用以预训练transformer。
如果输入是两句真实相邻的句子,那么生成标签是true和被遮挡的正确单词;如果输入是两句随机不相邻的句子,那么生成的标签是false和被遮挡的正确单词。

BERT模型:Bidirectional Encoder Representations from Transformer_第7张图片
BERT模型:Bidirectional Encoder Representations from Transformer_第8张图片
假如有两个单词被遮挡,那么这里就用三个任务,需要定义三个损失函数。第一个是二分类,定义损失函数是binary entropy;第二个任务和第三个任务是预测单词,是多分类任务,定义损失函数是cross entropy;目标函数是三个损失函数的加和,对目标函数关于模型参数求梯度,再做梯度下降来更新参数。
BERT模型:Bidirectional Encoder Representations from Transformer_第9张图片
BERT模型的优势是不需要人工标注数据;BERT两种任务的标签都是自动生成的,可以用任何文本来做预训练;

回顾

BERT有两个任务,1/单词预测,随机遮挡15%的单词;2/判断两句话是否真实相邻,50%的句子贴上true标签,另外50%是随机选择的,标签设置False
BERT模型想法简单,非常有效,但计算代价很大,如果想用transformer直接下载BERT预训练模型和参数。

你可能感兴趣的:(transformer,bert,深度学习)