预训练模型BERT简单介绍

1.BERT模型

BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不能获要预测的信息的。模型的主要创新点都在pre-train方法上,即用了Masked LM和Next Sentence Prediction两种方法分别捕捉词语和句子级别的representation。

1.1 BERT的模型结构

预训练模型BERT简单介绍_第1张图片BERT模型进一步增加词向量模型泛化能力,充分描述字符级、词级、句子级甚至句间关系特征。

1.2 Embedding

bert中有三种embedding,即Token Embedding ,Segment Embedding,Position Embedding。

  • Token Embeddings是词向量,第一个单词是CLS标志,可以用于之后的分类任务
  • Segment Embeddings用来区别两种句子,因为预训练不光做LM还要做以两个句子为输入的分类任务
  • Position Embeddings,这里的位置词向量不是transfor中的三角函数,而是bert经过训练学到的。

因为transformer既没有RNN的recurrence也没有CNN的convolution,但序列顺序信息很重要。
transformer计算token的位置信息这里使用正弦波,类似模拟信号传播周期性变化。这样的循环函数可以一定程度上增加模型的泛化能力。
但BERT直接训练一个position embedding来保留位置信息,每个位置随机初始化一个向量,加入模型训练,最后就得到一个包含位置信息的embedding,最后这个position embedding和word embedding的结合方式上,BERT选择直接拼接。
预训练模型BERT简单介绍_第2张图片

1.3 BERT中的三个亮点

Masked LM、transformer、sentence-level

1.3.1 Masked Language Model

随机mask语料中15%的token,然后将masked token 位置输出的最终隐层向量送入softmax,来预测masked token。
而对于盖住词的特殊标记,在下游NLP任务中不存在。因此,为了和后续任务保持一致,作者按一定的比例在需要预测的词位置上输入原词或者输入某个随机的词。如:my dog is hairy

  • 有80%的概率用“[mask]”标记来替换——my dog is [MASK]
  • 有10%的概率用随机采样的一个单词来替换——my dog is apple
  • 有10%的概率不做替换——my dog is hairy
    这里就引出了使用mask的两个任务
    在训练过程中随机mask 15%的token,而不是把像cbow一样把每个词都预测一遍。最终的损失函数只计算被mask掉那个token。

Mask如何做也是有技巧的,如果一直用标记[MASK]代替(在实际预测时是碰不到这个标记的)会影响模型,所以随机mask的时候10%的单词会被替代成其他单词,10%的单词不替换,剩下80%才被替换为[MASK]。要注意的是Masked LM预训练阶段模型是不知道真正被mask的是哪个词,所以模型每个词都要关注。

Input = [CLS] the man went to [MASK] store [SEP]

              he brought a gallon [MASK] milk [SEP]

Label = IsNext

Input = [CLS] the man went to [MASK] store [SEP]

              penguin [MASK] are flight ##less birds [SEP]

Label = NotNext

1.3.2 Tramformer

下面左图是transformer模型一个结构,分成左边Nx框框的encoder和右边Nx框框的decoder,相较于RNN+attention常见的encoder-decoder之间的attention(上边的一个橙色框),还多出encoder和decoder内部的self-attention(下边的两个橙色框)。每个attention都有multi-head特征。最后,通过position encoding加入没考虑过的位置信息。

从multi-head attention,self-attention角度介绍。

预训练模型BERT简单介绍_第3张图片

  • multi-head attention
    将一个词的vector切分成h个维度,求attention相似度时每个h维度计算。由于单词映射在高维空间作为向量形式,每一维空间都可以学到不同的特征,相邻空间所学结果更相似,相较于全体空间放到一起对应更加合理。比如对于vector-size=512的词向量,取h=8,每64个空间做一个attention,学到结果更细化。

  • self-attention
    每个词位的词都可以无视方向和距离,有机会直接和句子中的每个词encoding。比如上面右图这个句子,每个单词和同句其他单词之间都有一条边作为联系,边的颜色越深表明联系越强,而一般意义模糊的词语所连的边都比较深。比如:law,application,missing,opinion。。。

1.3.3 sentence-level representation

许多重要的下游任务譬如QA、NLI需要语言模型理解两个句子之间的关系,而传统的语言模型在训练的过程没有考虑句对关系的学习。NSP,预测下一句模型,增加对句子A和B关系的预测任务,50%的时间里B是A的下一句,分类标签为IsNext,另外50%的时间里B是随机挑选的句子,并不是A的下一句,分类标签为NotNext。

1.4 Fine-tunning

预训练模型BERT简单介绍_第4张图片微调是将最后一层的第一个token[cls]的隐藏向量作为句子表示,然后输入到softmax层进行分类。

你可能感兴趣的:(天池-新闻文本分类)