3. ELMo算法原理解析

1. 语言模型

2. Attention Is All You Need(Transformer)算法原理解析

3. ELMo算法原理解析

4. OpenAI GPT算法原理解析

5. BERT算法原理解析

6. 从Encoder-Decoder(Seq2Seq)理解Attention的本质

7. Transformer-XL原理介绍

1. 前言

今天给你们介绍一篇2018年提出的论文《Deep contextualized word representations》,在这篇论文中提出了一个很重要的思想ELMo。本人认为ELMo的提出对后面的的GPT和BRET有一个很好的引导和启发的做用。ELMo是一种是基于特征的语言模型,用预训练好的语言模型,生成更好的特征。html

2. ELMo模型介绍

ELMo是一种新型深度语境化词表征,可对词进行复杂特征(如句法和语义)和词在语言语境中的变化进行建模(即对多义词进行建模)。咱们的词向量是深度双向语言模型(biLM)内部状态的函数,在一个大型文本语料库中预训练而成。算法

说到词向量,咱们必定会联想到word2vec,由于在它提出的词向量概念给NLP的发展带来了巨大的提高。而ELMo的主要作法是先训练一个完整的语言模型,再用这个语言模型去处理须要训练的文本,生成相应的词向量,因此在文中一直强调ELMo的模型对同一个字在不一样句子中能生成不一样的词向量。函数

3. ELMo原理介绍

3.1 ELMo的预训练

前面也说过ELMo最重要的一点是就是训练语言模型,语言模型的结构以下:学习

image

他们使用的是一个双向的LSTM语言模型,由一个前向和一个后向语言模型构成,目标函数就是取这两个方向语言模型的最大似然。spa

前向LSTM结构:
\[ p(t_1,t_2,...,t_N) = \prod^N_{k=1}p(t_k|t_1,t_2,...,t_{k-1}) \]code

反向LSTM结构:
\[ p(t_1,t_2,...,t_N) = \prod^N_{k=1}p(t_k|t_{k+1},t_{k+2},...,t_{N}) \]orm

最大似然函数:htm

\[ \sum_{k=1}^N(logp(t_k|t_1,t_2,...,t_{k-1}) + logp(t_k|t_{k+1},t_{k+2},...,t_{N})) \]blog

3.2 使用语言模型

在预训练好这个语言模型以后,ELMo就是根据公式来用做词表示,其实就是把这个双向语言模型的每一中间层进行一个求和。最简单的也可使用最高层的表示来做为ELMo。而后在进行有监督的NLP任务时,能够将ELMo直接当作特征拼接到具体任务模型的词向量输入或者是模型的最高层表示上。get

4. 总结

你们有想过为何ELMo的效果会比word2vec的效果好?我我的认为有一下几点:

  1. ELMo的假设前提一个词的词向量不该该是固定的,因此在一词多意方面ELMo的效果必定比word2vec要好。
  2. word2vec的学习词向量的过程是经过中心词的上下窗口去学习,学习的范围过小了,而ELMo在学习语言模型的时候是从整个语料库去学习的,然后再经过语言模型生成的词向量就至关于基于整个语料库学习的词向量,更加准确表明一个词的意思。
  3. ELMo还有一个优点,就是它创建语言模型的时候,能够运用非任务的超大语料库去学习,一旦学习好了,能够平行的运用到类似问题。