目录

Bert模型理解~


Bert模型理解~

1.Pre-training在NLP中的应用

Word Embedding:将word看作文本的最小单元,将Word Embedding看作是一种映射。也就是将文本空间中的某个word,映射或嵌入到另一个向量空间中去。

Word Embedding称之为词嵌入,可以理解成降维的意思。

输入:是一组原始文本中不重叠的词汇构成的class,当语料库非常庞大时,其中会涉及到许多不常见的稀疏词汇,此时通常会选取出现次数最频繁的那些词组成class。

输出:是上述class中每个词汇的向量表示。将当前任务中每个单词输入网络,乘以提前训练好的Word Embedding矩阵,即可生成当前任务中每个单词的Word Embedding。

将所有词汇的向量表示拼在一起,形成该网络的Word Embedding矩阵。

优点:可以通过上下文得到目标词汇含义。

  • 若两个词w1和w2常在同一篇文章中出现,且两词的上下文非常相似,说明两者的相似度很高。

词语相似度:计算V(w1)·V(w2)=K,以及w1和w2在同一篇文章中出现的次数N。N和K越接近,说明其相似度越高。

缺点:Word Embedding只能初始化第一层网络参数,高层参数无法初始化。另外利用Word Embedding无法区分多义词。因为同一个词使用的是相同的参数空间,经过word2vec,会预测相同的词汇,这样同一个词汇在不同的上下文空间都会映射到相同的Word Embedding中去。

2.ELMO for Word Embedding(采用特征提取Pre-training)

ELMO:Embedding from Language Models。含义:此前训练好的Word Embedding的表达是固定的,不会随着上下文的改变而变化。而ELMO中,在使用训练好Word Embedding时,可以根据上下文的语义去动态调整单词的embedding表示。

原理:采用典型的两阶段过程。第一个阶段是使用语言模型进行预训练。第二阶段是在做下游任务时,从预训练网络中提取对应单词的网络各层的embedding作为新特征补充到下游任务中。预训练网络结构:采用双层双向LSTM。

图片中左端的前向双层LSTM表示正方向编码器,输入的是正向的预测单词的上下文。图片右端的逆向双层LSTM表示逆方向编码器,输入的是逆向的预测单词的上下文。每个编码器都是两层LSTM叠加,每一层的正向和逆向单词会拼接到一起。

利用大规模语料库可以训练出该网络,在具体任务中,就可以得到每个单词的三个Embedding,分别为最底层单词的embedding,第一层双向LSTM中对应单词位置的Embedding,包含句法信息。第二层LSTM中对应单词位置的Embedding,包含语义特征。在ELMO中会会同时学习单词的embedding和双向LSTM。

(通过使用大规模数据集进行预训练,训练出三层网络参数后,将测试集作为输入,经过三层参数的运算,得到三个对应层级的Embedding。)

具体实现过程:①预训练过程:句子中的每个单词在ELMO网络中获得三个对应的embedding,给每一个embedding分配一个权重(之前学习好的),将其累加求和,整合为一个结果。将该结果作为下游任务网络中的对应单词的输入。

ELMO缺点:特征提取器使用LSTM,而非Transformer。LSTM提取特征能力相比较差。

3.GPT for Word Embedding(微调+预训练)

GPT:Generative Pre-Training。训练过程包含两个阶段,第一阶段利用语言模型进行预训练,第二阶段通过微调解决下游任务。预训练特征提取使用Transformer,使用单向语言模型,也就是只利用预测单词的上文预测,没有利用下文。这样做可能会丢失很多关键信息。在第二阶段中,首先,必须要将下游任务的网络结构构造成和GPT网络结构是相同的。然后先利用第一阶段预训练模型中的数据对下游任务模型参数初始化,之后,可以利用当前任务的数据对下游任务模型微调。

如何改造下游任务:论文已给出

4.BERT

BERT:两阶段模型。类似于GPT。第一阶段使用Transformer双向语言模型进行预训练。第二阶段模型也使用第一阶段使用的ELMO模型,利用预训练模型初始化,再用下游任务进行微调。

如何改造下游任务

句子关系类:输入加上起始和终止符号,句子之间加上分隔符。输出是将第一个起始符号对应的Transformer最后一层位置上面串接一个softmax分类层。

句子分类型:输入加起始和终止符。输出类似句子关系类。

序列标注类:输入加起始终止符,输出部分对单句中每个单词的输出再进行分类。

模型关键:①采用Transformer;②采用双向语言模型。

如何对BERT采用双向的Transformer(Masked LM)

随机选语料中15%的单词,会将其隐藏,即使用[Masked]代替表示该单词。在这15%的单词中,80%会真正使用[Masked]代替,10%会被随机替换成另外一个单词,10%的单词并不会改变,仍然使用原单词。

Next Sentence Prediction

在预训练过程中,分两种情况选择两个句子:①选择语料中真正前后衔接的两个句子。②从语料库中随机选择一个句子作为第一个句子的后续句子。

BERT的输入部分:是一个线性序列,两个句子之间通过分隔符分隔开,另外添加起始和终止标识符。每个单词有三个embedding:位置信息(单词顺序,需要对其进行编码)、单词本身embedding、句子embedding(训练数据的输入为两个句子,句子的embedding会赋给该句中的每个词)。

总结

bert预训练重点:①MASKED掩码模式;②句子关系预测。考虑到NLP当中许多任务是句子关系判断任务,单词粒度的预测无法涉及到句子关系的层级,增加该训练任务有助于下游的句子关系判断任务。BERT的预训练模型是个多任务模型。

使用两阶段模型。①利用双向语言模型(双向LSTM、双向CBOW、Transformer等特征提取结构)进行预训练。②在下游任务中进行微调或者特征集成。③特征提取使用Transformer。