自然语言预训练模型总结(PPT版)
这是我个人的总结,参考了张俊林这篇很好的文章,请感兴趣看以下链接~
一、简介
自然语言处理中的预训练技术发展历程——从Word Embedding到Bert
-
Neural language models
-
Word Embedding
-
Pretrained language models
什么是语言模型?
为了能够量化地衡量哪个句子更合理,可以通过如图所示的函数,核心函数P的思想是根据句子里面前面的一系列前导单词预测后面跟哪个单词的概率大小(理论上除了上文之外,也可以引入单词的下文联合起来预测单词出现概率)。
句子里面每个单词都有个根据上文预测自己的过程,把所有这些单词的产生概率乘起来,数值越大代表这句话越合理。
二、Neural language models
神经网络语言模型(NNLM):
最早的神经网络语言模型: 根据前n个单词,通过前馈神经网络预测下一个单词
-
前面的单词 W_i 用One-hot编码(比如:0001000)作为原始单词输入,之后乘以矩阵Q后获得向量 C(W_i ) ,每个单词的 C( W_i ) 拼接
-
上接隐层tanh,然后送入softmax去预测后面应该后续为哪个单词。
三、Word Embedding
经典的Word2Vec有两种训练方法:
-
CBOW: 从一个句子里面把一个词mask去,用这个词的上下文去预测被mask的这个词
-
Skip-gram: 输入某个单词,要求网络预测它的上下文单词
-
与one-hot(比如:0001000)作为原始单词编码,word embeddings 可以表达单词间的关系及相似度
Word Embedding 存在什么问题?
四、Pretrained language models
1. ELMO:基于上下⽂的Embedding
-
双层双向LSTM预训练
-
语⾔模型作为训练目标:根据前(后)几个单词预测下一个词
ELMO:训练好之后如何使⽤?
ELMO采用了两阶段过程:
-
利用语言模型进行预训练;
-
从预训练网络中在线抽取对应单词的特征送入至下游任务中
ELMO:解决了多义词问题
ELMO:效果如何?
在六个NLP任务上,提升5%~25%
ELMO:有什么缺陷?(与GPT、Bert相比较)
LSTM抽取文本特征的能力远弱于Transformer
-
在特征抽取器选择方面,ELMO使用了LSTM而不是Transformer(谷歌于17 年做机器翻译任务的“Attention is all you need”的论文中提出)
双向LSTM特征拼接的方式可能弱于一体化的双向Transformer结构
2. OpenAI GPT: Pretrain+Finetune两阶段过程
预训练的过程
OpenAI GPT: 训练好之后如何使用?
-
对于分类问题,不用怎么动,加上一个起始和终结符号即可;
-
对于句子关系判断问题,比如Entailment,两个句子中间再加个分隔符即可;
-
对文本相似性判断问题,把两个句子顺序颠倒下做出两个输入即可,这是为了告诉模型句子顺序不重要;
-
对于多项选择问题,则多路输入,每一路把文章和答案选项拼接作为输入即可。
1)文本蕴含 :将前提 p 和假设 h 序列拼接,中间用($)符号来分隔两个序列。 2)文本相似度:分别将两个序列输入,通过模型输出两个序列的特征向量,再逐元素相加输入线性层。 3)问答和常识推理:给定上下文文本 z ,问题 q ,一组可能的候选答案,将上下文文本、问题以及每个候选答案拼接起来,得到这样一个序列,再将该序列输入预训练模型,经softmax层得到候选答案的概率分布。
OpenAI GPT: 效果如何?
在12个NLP任务上,9个达到最佳效果
OpenAI GPT: 有什么缺点?
-
GPT采用了Transformer Encoder结构作为特征提取器,但区别在于OpenAI GPT为单向语言模型,仅通过上文单词来预测当前单词。(对比Bert)
3. Bert: NLP领域里程碑式的突破
-
Transformer特征抽取器
-
语言模型作为训练任务(双向)
Bert: 模型的输⼊如何处理?
输入为三个embedding的求和,分别是: 1)Token embedding:词向量 2)Segment Embedding:区分不同句子的标志(预训练中需要预测B句子是否为A句子的下一个句子) 3)Position Embedding :单词的位置编码
Bert: 如何构造双向语言模型?
-
Task #1: Masked LM
-
Task #2: Next Sentence Prediction