1.简介
嘘!BERT来了,就是那个同时刷新了11个NLP任务记录的模型。从本质上来bert属于一个预训练模型,模型可以理解上下文和单词之间的关系,也可以理解句子和句子之间的关系。针对不同的任务,可以利用BERT进行不同的迁移学习。模型结构上来讲,其相当于是对Transformer中Encoder层的堆积(Bidirectional Encoder Representations from Transformers)。就这么一个本质上朴实无华的模型,是如何一时激起千层浪,将平静的NLP世界搞的天翻地覆的。下面让我们一起来领略一下其迷人之处,如果还不了解Transfomer的同学强烈建议先去学习Transformer。
2.BERT理论
1.网络结构
我们首先了解一下bert执行的整体流程,从图中看出预训练和微调时候使用的主体结构是不变的。首先每次的输入是两个句子组成的句子对,会随机的对一些词进行mask,使用CLS作为起始标志,SEP作为句子间分隔标志。然后这些词会经过图二中的嵌入层,有三层嵌入信息:词嵌入信息、句子嵌入信息、位置嵌入信息。之后接多个Transfomer中的encoder层。最后的输出去预测mask的单词,以及句子B是否为句子A的下一句子。
2.多任务学习
从上面的介绍中我们知道,bert是一个多任务学习的模型。
1.Masked Language Model:首先在每一个句子中会随机的mask掉一部分的单词,有点类似于Transfomer中的decoder部分的mask。在实际训练时,会随机的mask每个句子15%的词。80%的时间使用mask,10%的时间使用另外一个词代替mask,10%的时间使用全部句子信息。
为什么要是使用mask,我们前面说过bert相当于是将transfomer中encoder进行堆叠。encoder中的第一层self-attention会进行单词之间两两计算ÿ