NLP预训练模型

早期NLP预训练模型

1. 神经网络语言模型(NNLM)
  • NNLM由Begio在2003年提出发表在JMLR上。神经网络语言模型的训练目标是给定 的上文个词,预测 出现的概率 ;每个词输入到模型中首先经过One-hot编码,然后查询Look up Table(C),得到每个词的Word embedding:;经过隐藏层,之后再经过softmax层得到词生成的条件概率;

  • 上式中,为偏置,为输入层到输出层参数,加入输入到输出层的连接能够使得模型快速收敛。为输入层到隐藏层的参数,为隐藏层到输出层的参数。
  • 对神经网络语言模型而言,词向量word embedding只是副产物;Look up table(C)存储着每个词的词向量,它是一个矩阵,矩阵的每一行代表一个单词的词向量,行数等于词汇表大小;矩阵的列数等于词向量维数。
NLP预训练模型_第1张图片
神经网络语言模型.png
2. Word2vec,Glove模型
  • Wor2vec模型 :跟NNLM模型结构类似,去除了中间的隐藏层减少了计算量,并且其目标主要是用来训练词向量。word2vec模型包含两种结构CBow和Skip-Gram,CBow模型利用单词的上下文预测当前词生成的条件概率,Skip-Gram模型利用当前词预测上下文词生成的条件概率。
  • 最后在输出层为了减小softmax的计算,使用层次Softmax和负采样(Negative Sampling)方法减小输出层计算量。层次softmax实现采用的是哈夫曼树,将计算复杂度从 减小到 。具体原理参考:word2vec 中的数学原理详解
NLP预训练模型_第2张图片
word2vec模型.png
  • Glove模型:基于全局信息统计词与词之间的共现,构建共现矩阵。构建词向量() 与共现矩阵之间的近似关系,由此构建目标函数 。优化目标函数得到词向量。具体原理参考:GloVe详解

  1. 早期的预训练模型,训练出的词向量是 静态固定不变 的。即相同的单词,在不同的上下文情况下,其词向量是一样的。
  2. 对于一词多意的问题很难解决。比如下面的例子,bank在不同的上下文下对应不同的意思:银行,河堤;
  3. 因此考虑如何解决,在不同的上下文情况下,单词得到不同的词向量?即获取 动态词向量
NLP预训练模型_第3张图片
一词多意问题.png

ELMo模型

  • ELMo模型发表在2018 NAACL会议上,并获得最佳论文奖。ELMo模型使用双层双向LSTM网络,对句子进行建模。其训练目标还是给定单词上下文词,预测当前词出现的条件概率,模型结构如下。左边是一个前向双层LSTM网络,用于编码单词的上文信息;右边是一个后向双层LSTM网络,用于编码单词的下文信息。

前向语言模型:p(t_1, t_2, ..., t_N) = \prod_{k=1}^{N} p(t_k|t_1, t_2, ..., t_{k-1}) \\ 后向语言模型:p(t_1, t_2, ..., t_N) = \prod_{k=1}^{N} p(t_k|t_{k+1}, t_{k+2}, ..., t_N) \\ 目标函数:L(\theta) = \sum_{k=1}^N \left( logp(t_k|t_1, t_2, ..., t_{k-1}, \theta_x, \overrightarrow{\theta}_{LSTM}, \theta_S) + logp(t_k|t_{k+1}, t_{k+2}, ..., t_N, \theta_x, \overleftarrow{\theta}_{LSTM}, \theta_S) \right)

  • 上式中,表示单词向量,表示softmax层的参数;
NLP预训练模型_第4张图片
ELMo模型.png
  • ELMo词向量的应用:对于每一个token而言,假设LSTM网络层数为,则token可由个向量表示;通过对token的每个向量 进行加权输出,将加权后的向量利用到下游任务中。其中三种向量的权值,根据具体任务训练得到。

BERT模型

  • BERT模型2018年由谷歌提出,使用Transformer的Encoder作为BERT基础结构。BERT与ELMo模型不同,它的训练使用了两个任务:Masked LM 和 Next Sentence Prediction (NSP)
NLP预训练模型_第5张图片
BERT模型.png
1. Masked LM任务
  • Masked LM任务与Word2vec中的CBow模型有点类似,通过Mask一些输入的词,利用上下文的信息预测这个词。
  • 具体的Mask策略: 对于输入的句子,随机的masked句子中15%的词;为了防止fine-tuning的时候[MASK]标记没有出现的问题,预训练阶段并不是将词都替换成[MASK],具体策略如下:
    (1)80%的概率,将词替换成特殊标记[MASK]
    (2)10%的概率,随机将词替换成词表中任意一个词;
    (3)10%的概率,维持当前词不变;
NLP预训练模型_第6张图片
Masked LM.png
2. NSP任务
  • NSP任务是一个二分类任务;NSP任务,对于fine-tuning阶段QA和NLI效果提升起着重要作用。
NLP预训练模型_第7张图片
NSP.png

如何使用BERT?

1. 单文档分类任务
  • 例如常见的情感分析,就是单文档分类任务;将学习到的[CLS]向量输入到一个线性分类器中,预测得到每个类别的概率。
NLP预训练模型_第8张图片
单文档分类.png
2. 序列标注任务
  • 输入一个句子,输出每个词的label。比如对话系统领域的槽位填充任务就是一个序列标注问题。
NLP预训练模型_第9张图片
序列标注任务.png
3. 多文档分类任务
  • 输入两个句子,输出一个label。比如自然语言推理(Natural Language Inference )任务。
NLP预训练模型_第10张图片
多文档分类任务.png
4. 问答系统
  • Extraction-based Question Answering这种类型的问答,其答案出现在文档中,只需要确定start(s),end(e)的位置。
NLP预训练模型_第11张图片
问答系统.png
  • 如何计算得到start, end?start和end分别学习两个向量,计算最终的softmax输出概率。
NLP预训练模型_第12张图片
计算start.png
NLP预训练模型_第13张图片
计算end.png

GPT模型

  • GPT模型使用的是Transformer的Decoder,所以其没有考虑下文信息。BERT模型认为这是它主要的缺点。如下图所示,在计算 生成的条件概率时,其只考虑了, 潮水, 退了
NLP预训练模型_第14张图片
Transformer Decoder self Attention.png

模型参数数量对比

NLP预训练模型_第15张图片
image.png

参考论文

  • NNLM论文:A Neural Probabilistic Language Model http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
  • Word2vec论文:
    (1)Efficient Estimation of Word Representations in Vector Space https://arxiv.org/pdf/1301.3781.pdf
    (2)Distributed Representations of Words and Phrases
    and their Compositionality https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
  • Glove论文:GloVe: Global Vectors for Word Representation https://nlp.stanford.edu/pubs/glove.pdf
  • ELMo论文:Deep contextualized word representations https://arxiv.org/abs/1802.05365
  • BERT论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/abs/1810.04805
  • GPT论文:Improving Language Understanding by Generative Pre-Training https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
  • GPT2论文:Language Models are Unsupervised Multitask Learners https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

参考资料

  • word2vec 中的数学原理详解
  • GloVe详解
  • ELMo, BERT, GPT - 台湾大学,李宏毅
    https://www.youtube.com/watch?v=UYPa347-DdE&list=PLJV_el3uVTsOK_ZK5L0Iv_EQoL1JefRL4&index=61
  • 从Word Embedding到Bert模型—自然语言处理中的预训练技术发展史 【张俊林】
    https://zhuanlan.zhihu.com/p/49271699
  • 搞懂 NLP 中的词向量,看这一篇就足够
    https://www.infoq.cn/article/PFvZxgGDm27453BbS24W

你可能感兴趣的:(NLP预训练模型)