经典词嵌入与神经网络语言模型的对比研究

 


转自地址:http://blog.csdn.net/qq_31456593/article/details/77542071

摘要:本文将对NNLM,C&M,RNNLM,CBOW,Skip-gram等经典神经网络语言模型进行介绍,对比分析这些模型的结构和特点,并对神经网络语言模型的构造方法进行讨论。

1.相关背景

自然语言处理是实现人工智能的重要途径,从计算机被创造开始,自然语言处理就是计算机学家们的研究重点。语言模型是为了使计算机理解自然语言所构建的模型,常见的自然语言模型有N-gram等。Bengio成功地将神经网络引入到自然语言模型的构造中。Bengio在构建神经网络的同时得到了一个副产物-词嵌入,一种词语在向量空间的分布表示。后来,Collobert 和 Weston 将神经网络语言模型较好的运用到了词性标注、短语识别、命名实体识别、语义角色识别的任务中,为了减少运算复杂度,他将本来要预测的单词作为输入的一部分,输出层缩小到一个神经元,对输入的序列是否符合语言规则进行打分。与此同时Tomas Mikolov把RNN运用到了语言模型中,以代替原本的上下窗口,把历史上下文信息直接通过隐藏层传给下一个单词。后来,Tomas Mikolov提出了CBOM和Skip-gram模型,直接以训练词嵌入为目的,去掉了隐藏层,大大缩短了训练时间,获得了不错的训练效果,并发现了“king”-“man”+“women”=“queen”的语义规律,而其随后开源的word2vec包也使词嵌入这个概念为更多人所熟知。

2. 模型介绍

2.1. NNLM

该模型由Bengio在2001年提出,这是最经典的神经网络语言模型,后面的模型都是基于此进行改造的,该模型网络结构如下图所示:

整个网络分为两部分,第一部分是利用词特征矩阵C获得词的分布式表示(即词嵌入)。第二部分是将表示context的n个词的词嵌入拼接起来,通过一个隐藏层和一个输出层,最后通过softmax输出当前的p(wt|context)(当前上下文语义的概率分布,最大化要预测的那个词的概率,就可以训练此模型)。 
第一部分词嵌入的获取如下图所示:

其中第i行对应的是one-hot表示中第i项为1的词向量的词嵌入。词向量与矩阵相乘后就可以得到自己的词嵌入了。由于C是神经网络的参数,所以词的词嵌入会随着模型的训练不断得到优化。

在网络的第二部分中,表示context的n个词嵌入通过隐藏层进行语义组合,最后经过输出层使用softmax输出预测的词向量,因为本模型是基于n-gram模型,所以只要最大化正确预测当前词即可。最后不但训练了一个用神经网络表示的语言模型,而且还获得了词语的词嵌入(存在矩阵C中)

从第二部分的输入到输出层有一个直连边,一般情况下该直连边的权重矩阵可以设为0,在最后的实验中,Bengio 发现直连边虽然不能提升模型效果,但是可以少一半的迭代次数。同时他也猜想如果没有直连边,可能可以生成更好的词向量。

该模型最终要最大化如下式子:

2.2. C&W模型

该模型设计了2个网络来完成词性标注 (POS)、短语识别(CHUNK)、命名实体识别(NER) 和语义角色标注 (SRL)这些nlp任务。其中一个模型叫window approach,另一个叫sentence approach。其中词嵌入的预训练用的是window approach,只是把输出层的神经原个数改成了1个,window approach网络结构见下图

其中,窗口大小为n,中心的那个词为中心词,上下文各(n-1)/2个词。作者利用该模型以无监督的方法预训练词嵌入来提高在具体工作上的效果,最后的输出层只有一个神经元,表示该中心词与上下文语义关联程度的得分。得分高则说明该中心词在当前位置是符合上下文语义的,得分低则说明该中心词在当前位置不符合上下文语义。

训练时的正例就是中心词为原语料的中心词,负例就是把语料的中心词以其他词语代替。作者这么做的主要原因就是为了减少神经网络语言模型在大规模数据集上的训练时间。

如果用f(x)表示输入通过神经网络到输出的变化,那么基于打分机制构造的神经网络语言模型的优化目标是最大化下面的函数:

其中fθ(x)是正例的打分,fθ(x(w))fθ(x)是正例的打分,fθ(x(w))是负例的打分,这函数的目的就是增加两者之间打分的差距,使其至少在1以上。

2.3. RNNLM

RNNLM模型将RNN引入到了神经网络语言模型的构造中,其网络结构只是在NNLM的基础上将上一次的隐藏层与当前单词的词嵌入叠加作为输入。由于使用了RNN,不需要再使用大小为n的上下文窗口。网络结构如下:

神经网络各层计算公式如下:

其中f()为sigmoil函数,g()为softmax函数 
最后训练目标是最小化softmax函数输出和预测单词向量的交叉熵。 
在论文中作者以下列方式对低频词进行处理

2.4. CBOW和Skip-gram 模型

这两个模型是Tomas Mikolov在论文《Efficient Estimation of Word Representations in Vector Space》中一起提出来的,两个模型的结构如下图所示 

其中CBOW是周围的词预测中间的词,最大化对w(t)的预测。Skip-gram是中间的词预测周围的词,最大化对w(t-2),w(t-1),w(t+1),w(t+2)的预测之和。由于没有隐藏层,所以2个网络都是线性模型。正因为如此,模型的训练时间比较短,只花了一天就训练了16亿单词的语料。且获得的词嵌入质量很好,还具有“king”-“man”+“women”=“queen”的语义规律。

论文中使用了两种训练方法,一种是哈夫曼树结构的Hierarchical Softmax,另一种是Negative Sampling,它们的使用都是为了缩短训练时间。由于这两个技术这是加快训练的技术,不是网络结构,我们现在主要探讨网络结构,因此就不详细展开,不过正是这2个技术的运用缩短了训练时间(另外一个缩短时间的原因是删掉隐藏层),使其更快地生成了质量好的词嵌入,值得大家重视。

以Skip-gram模型为例,其采用了用哈夫曼树结构构建的Hierarchical Softmax,最终要优化的概率密度函数如下:

用Negative Sampling的方法,它以一个正样本和几个随机采取的负样本作为优化目标:

3. 网络对比研究

对比上面介绍的模型我们发现,后面的模型都是以NNLM为基础进行修改的。其中主要修改有3个部分:输入层,隐藏层,输出层。其中输入层是存储词嵌入的层,隐藏层是做语义重组的层,输出层是根据目标构造输出语义的层。 
以NNLM作为对比对象。后面几个模型的修改情况如下:

C&W:修改了输入和输出层 
RNNML:修改了输入和隐藏层 
CBOW :去除了隐藏层,输出层优化 
skip-gram:去除了隐藏层,修改了输入层,输出层优化

根据上面的对比,有一些东西值得思考:

  • 对与每个模型来说,输入是上下文,输出是预测,这些模型的核心是用上下文做预测。
  • C&W只是为了具体任务来做词嵌入的预训练,所以它把要预测的和上下文放在一起,以得分的形式进行判断,最大化正例和反例的得分差。
  • RNN的隐藏层输出的不单单是语义重组的信息,也作为了下次训练的上下文,所以在一次预测中,上下文信息包括当前输入的词和隐藏层输出。
  • CBOW没有隐藏层,直接叠加构造语义输出,或许正是如此所以训练的词嵌入具有线性语义特征。其当前的预测是作为上下文语义的词嵌入的线性叠加。
  • Skip-gram以一个单词作为上下文,多次预测周围的词。它的成功是否表明预测是可逆的,即A可预测B,则B可预测A,而其根本原因是A与B具有相似语义。而这种相似的产生是因为模型没有隐藏层,只有线性变换?
  • -

上面的一些思考有的可能需要进行实验加以验证,不过根据对这些模型的思考我们可以做出如下推测:一个好的神经网络语言模型就是尽可能构造好的上下文,选择好语义重组方式,并使用可以实现高效训练的预测方法。

4. 总结

我们介绍了几种神经网络语言模型,所有的网络基本上都是基于NNML改造的,它们思路基本上都是用上下文预测下面一个单词。不同之处在于对输入,隐藏层,输出层中的一个或多个做了改造,改造的目的是生成更好语言模型、生成更好词嵌入或缩短训练时间完成特定任务。而要基于该网络结构进行改进的话,就是要根据自己的目标构造合适的上下文或语义重组方式,并以适当的预测方法实现高效的训练。


本文是在阅读了几篇经典神经网络语言模型和词嵌入的论文的基础上写的,由于刚开始接触,所读文献较少,可能有些理解不到位的地方,欢迎大家交流指正。下面是这些论文的阅读笔记: 
读论文《A Neural Probabilistic Language Model》 
读论文《Natural Language Processing (Almost) from Scratch》 
读论文《Recurrent neural network based language model 》 
读论文《Efficient Estimation of Word Representations in Vector Space》 
读论文《Distributed Representations of Words and Phrases and their Compositionality》

参考文献: 
《A Neural Probabilistic Language Model》 
《Natural Language Processing (Almost) from Scratch》 
《Recurrent neural network based language model 》 
《Efficient Estimation of Word Representations in Vector Space》 
《Distributed Representations of Words and Phrases and their Compositionality》

猜你喜欢

转载自blog.csdn.net/orangefly0214/article/details/82558330