Embeddings from Language Models(ELMo)

Posted zhiyong_will

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Embeddings from Language Models(ELMo)相关的知识,希望对你有一定的参考价值。

1. 概述

随着深度学习在NLP领域的发展,产生很多深度网络模型用于求解各类的NLP问题,在这众多的网络模型中,无疑都会使用到词向量的概念,这就不得不提及word2vec[1]词向量生成工具。从word2vec词向量工具的提出后,预训练的词向量成了众多NLP深度模型中的重要组成部分。然而传统的word2vec生成的词向量都是上下文无关的,其生成的词向量式固定,不会随着上下文的改变而改变,这种固定的词向量无法解决一词多义的问题。比如“bank”这个词,既可以表示“河岸”,也可以表示“银行”。Embeddings from Language Models(ELMo)[2]是2018年提出的一种基于上下文的预训练模型,研究人员认为一个好的预训练语言模型应该能够包含丰富的句法和语义信息, 并且能够对多义词进行建模。

ELMo的本质思想通过大量语料学习到每个词的一般性embedding形式,此时是与上下文无关的;当在具体的NLP任务中时,此时每个词都具有了上下文的含义,通过上下文调整学习好的词向量。

2. 算法原理

2.1. ELMo的基本原理

在ELMo的本质思想中包含了两阶段的过程,第一个阶段利用大量预料训练出与上下文无关的词向量的表达,如上述的“bank”,此时并不能知道代表的是“银行”还是“河岸”;第二阶段是在具体的下游任务中,将每个词向量放入到具体的上下文的语言环境中,对每个词向量微调,以适应具体的任务,如根据具体的上下文语境,微调得到“bank”一词的与上下文相关的向量。

2.2. 第一阶段——ELMo预训练

2.2.1. ELMo模型的结构

对于ELMo模型的网络结构如下图所示:

在ELMo的结构图中可以看到,ELMo主要分为三个部分,第一,最下方的黄色部分,词的Embedding部分,用于将离散的词映射成稠密的连续向量;第二,中间的蓝色部分,这部分是两个双层的LSTM模块,用于对词进行序列学习;第三,最上方的绿色部分,词向量的最终表征。从论文[2]中可知,这三个部分的输出代表了三个层级的含义,分别是:

  • 第一部分代表了词法特征
  • 第二部分代表了句法特征
  • 第三部分代表了语义特征

其中,在ELMo的网络结构中,用于语言模型学习的是双层的双向LSTM。

2.2.2. ELMo模型的训练

ELMo模型的预训练是在大量预料上,通过无监督的方式,其目标函数是神经语言模型[3]。假设给定的 N N N个词的序列为 ( t 1 , t 2 , ⋯   , t N ) \\left ( t_1,t_2,\\cdots ,t_N \\right ) (t1,t2,,tN),先看正向的语言模型,其目标通过给定的前 k − 1 k-1 k1个词的序列 ( t 1 , t 2 , ⋯   , t k − 1 ) \\left ( t_1,t_2,\\cdots ,t_k-1 \\right ) (t1,t2,,tk1)预测第 k k k个词 t k t_k tk的概率:

p ( t 1 , t 2 , ⋯   , t N ) = ∏ k = 1 N p ( t k ∣ t 1 , t 2 , ⋯   , t k − 1 ) p\\left ( t_1,t_2,\\cdots ,t_N \\right )=\\prod_k=1^Np\\left ( t_k\\mid t_1,t_2,\\cdots ,t_k-1 \\right ) p(t1,t2,,tN)=k=1Np(tkt1,t2,,tk1)

再看反向的语言模型,其目标是通过第 k k k个词 t k t_k tk后面的词的序列 ( t k ∣ t k + 1 , t k + 2 , ⋯   , t N ) \\left ( t_k\\mid t_k+1,t_k+2,\\cdots ,t_N \\right ) (tktk+1,tk+2,,tN)来预测 t k t_k tk的概率:

p ( t 1 , t 2 , ⋯   , t N ) = ∏ k = 1 N p ( t k ∣ t k + 1 , t k + 2 , ⋯   , t N ) p\\left ( t_1,t_2,\\cdots ,t_N \\right )=\\prod_k=1^Np\\left ( t_k\\mid t_k+1,t_k+2,\\cdots ,t_N \\right ) p(t1,t2,,tN)=k=1Np(tktk+1,tk+2,,tN)

对于双向的LSTM模型,通过语言模型得到双向LSTM的目标函数为:

∑ k = 1 N ( l o g    p ( t k ∣ t 1 , ⋯   , t k − 1 ; Θ x , Θ → L S T M , Θ s ) + l o g    p ( t k ∣ t k + 1 , ⋯   , t N ; Θ x , Θ ← L S T M , Θ s ) ) \\sum_k=1^N\\left ( log\\; p\\left ( t_k\\mid t_1,\\cdots ,t_k-1;\\Theta _x,\\overrightarrow\\Theta _LSTM,\\Theta _s \\right )+log\\; p\\left ( t_k\\mid t_k+1,\\cdots ,t_N;\\Theta _x,\\overleftarrow\\Theta _LSTM,\\Theta _s \\right ) \\right ) k=1N(logp(tkt1,,tk1;Θx,Θ LSTM,Θs)+logp(tktk+1,,tN;Θx,Θ LSTM,Θs))

此时需要求解上述目标函数的最大值,其中 Θ x \\Theta _x Θx表示的是词的上下文无关向量, Θ → L S T M \\overrightarrow\\Theta _LSTM Θ LSTM Θ ← L S T M \\overleftarrow\\Theta _LSTM Θ LSTM分别为正向和反向的LSTM模型的参数, Θ s \\Theta _s Θs为softmax层的参数。

通过上述模型的训练,最终得到了多个向量,可以表示为:

R k = x k L M , h → k , j L M , h ← k , j L M ∣ j = 1 , ⋯   , L = h k , j L M ∣ j = 1 , ⋯   , L R_k=\\left \\ \\mathbfx_k^LM,\\overrightarrow\\mathbfh_k,j^LM,\\overleftarrow\\mathbfh_k,j^LM\\mid j=1,\\cdots ,L \\right \\=\\left \\ \\mathbfh_k,j^LM\\mid j=1,\\cdots ,L \\right \\ 以上是关于Embeddings from Language Models(ELMo)的主要内容,如果未能解决你的问题,请参考以下文章

Embeddings from Language Models(ELMo)

Coursera, Deep Learning 5, Sequence Models, week2, Natural Language Processing & Word Embeddings

RNN神经网络- 吴恩达Andrew Ng 循环神经网络 NLP Natural Language processing and word Embeddings Week2 知识总结

论文阅读|深读VERSE: Versatile Graph Embeddings from Similarity Measures

论文阅读From Word Embeddings To Document Distances

论文阅读From Word Embeddings To Document Distances