预训练
先在某个任务(训练集A或者B)进行预先训练,即先在这个任务(训练集A或者B)学习网络参数,然后存起来以备后用。当我们在面临第三个任务时,网络可以采取相同的结构,在较浅的几层,网络参数可以直接加载训练集A或者B训练好的参数,其他高层仍然随机初始化。底层参数有两种方式:frozen,即预训练的参数固定不变,fine-tuning,即根据现在的任务调整预训练的参数。
优势:
1、当前任务数据量少,难以训练更多的网络参数,可以加载预训练的模型,然后根据当前的任务对参数进行fine-tuning,以适合当前的任务。
2、即使当前任务的数据量不少,使用预训练模型可以加快模型的收敛。
原理:
1、在底层抽出来的特征与任务无关,越具备任务的通用型,所以可以使用底层预训练好的参数初始化新的任务。
2、高层任务与具体的任务关联性较大,所以在高层不使用预训练参数或者采用fine-tuning方式在当前数据集上清洗掉高层无关的特征提取器。
Word2vec
word2vec就是nlp中预训练的一种方式。但是word2vec有一个缺点就是无法解决多义词,因为每一个词只有用一个向量表示。
ELMO
ELMO是“Embedding from Language Models"简称。在此之前word embedding本质是个静态方式,静态的意思就是说单词训练好之后就固定了,在以后使用时,单词不会跟着上下文场景变化而变化。
ELMO的本质思想是:事先用一个语言模型去学习单词的word embedding, 当我在使用时,单词已经具备了特定的上下文,这时候可以根据上下文的语义去调整单词的word embedding, 这样经过调整的word embedding更能表达这个上下文中具体的含义,也就解决了一词多义问题,故ELMO本质就是根据当前上下文对Word Embedding进行动态调整的过程。
Elmo采用典型的两阶段过程:第一阶段使用预训练语言模型进行训练,第二阶段当做具体的下游任务时,从预训练的网络中提取对应的词的Word Embedding作为特征补充到下游任务中。
第一阶段,预训练:采用双层双向LSTM对上下文进行编码,上下文使用静态的word embedding, 对每层LSTM,将上文向量与下文向量进行拼接作为当前向量,利用大量的预料训练这个网络。对于一个新的句子,可以有三种表示,最底层的word embedding, 第一层的双向LSTM层的输出,这一层能学习到更多句法特征,第二层的双向LSTM的输出,这一层能学习到更多词义特征。经过elmo训练,不仅能够得到word embedding, 又能学习到一个双层双向的神经网络。
第二阶段,下游任务使用:将一个新的句子作为elmo预训练网络的输入,这样该句子在elmo网络中能获得三个embedding, 可以将三个embedding加权作为word embedding, 并将此作为下游任务的输入,这被称为“Feature-based Pre-Training"。
GPT
GPT是Generative Pre-Training的简称。与ELMO相似,采用两阶段的模式:利用语言模型进行预训练,通过fine-tuning模式应用到下游任务。
利用语言模型进行预训练:与elmo不同的是,GPT使用transformer进行提取特征,并且是单向的transformer,只是根据上文来预测某个词。
fine-tuning: 想GPT网络看起,根据GPT网络来更改自己任务结构。这样就可以使用手头数据对当前任务进行fine-tunining.
BERT
BERT是“Bidirectional Encoder Representations from Transformers"的简称。
同GPT采用两阶段模式:利用双向语言模型进行预训练,通过fine-tuning模式解决下游任务。
BERT创新: Masked语言模型和Next Sentence Prediction。
Masked语言模型, 即随机选择一部分单词进行mask,然后预测这些单词,其方式和CBOW类似,为了解决fine-tuning阶段不需要mask,所以bert中只选择15%作为mask的候选,在这15%中80%不做处理,10%进行mask,10%进行替换【不太理解为什么成立】
next sentence prediction:之所以这么做,是考虑到很多NLP任务是句子关系判断任务,单词预测粒度的训练到不了句子关系这个层级,增加这个任务有助于下游句子关系判断任务。
BERT的输入: 输入的部分是个线性序列,两个句子之间使用sep进行分割,在开头和结尾分别加一个特殊字符。对于每一个字符都是由三种embedding组成,位置信息embedding, 单词embedding和句子embdding,三种embedding叠加便是bert的输入。
总结
word2vec: nlp中最早的预训练模型,缺点是无法解决一词多义问题.
ELMO:
优点: 根据上下文动态调整word embedding,因为可以解决一词多义问题;
缺点:1、使用LSTM特征抽取方式而不是transformer,2、使用向量拼接方式融合上下文特征融合能力较弱。
GPT:.
优点:使用transformer提取特征
缺点:使用单项的语言模型,即单向transformer.
BERT: 优点:使用双向语言模型,即使用双向transformer;使用预测目标词和下一句这中多任务学习方式进行训练。
参考:
[1] 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史