[我们是这样理解语言的-3]神经网络语言模型(续)

8 Eric Huang’s Model

在Bengio的神经网络结构的基础上,Eric Huang提出了引入文档的全局信息引神经网络语言模型,结构类似于Bengio的网络结构。

8.1 模型结构

相比Bengio的模型,Eric Huang引入了词的全局信息,在原本的网络结构中加入了子网络,形成如下图所示结构。

图5 Eric Huang的网络结构图

其中, score=scorel+scoreg scorel 代表局部的得分, scoreg 代表全局的得分。 scorel 的计算公式为,
scorel=W2a1+b2(31)
a1=f(W1[x1;x2;...;xm]+b1)(32)
[x1;x2;...;xm] 为当前词的Context中 m 个词向量的拼接, f 为激活函数(逐个元素使用),比如 tanh,W1,W2 为对网络中的参数。
相应的, scorel 的计算公式,
scoreg=W(g)2ag1+bg1(33)

ag1=f(Wg1[c;xm]+bg1)(34)

c=ki=1w(ti)diki=1w(ti)(35)
其中, c 为文章中包含的词向量的加权平均,权值公式可以有多种形式,Eric Huang采用IDF加权的方式。

8.2 参数求解

Eric Huang采用[C&W, 2007]中的求解方法,从词表中随机采样一个替换当前词,构造如下损失函数(类似于Ranking问题)
Cs,d=wVmax(0,1g(s,d)+g(sw,d))(36)
求解过程采用了min-batch L-BFGS。

9 word2vec

word2vec是word embedding中最为人知的模型,其原因(能想到的)有,(1)模型简单,训练速度快;(2)代码和数据开源,容易复现;(3)Google出品(作者在Google实习期间工作,但代码很难读)。
word2vec由Tim Mikolov的三篇论文引出(虽然有一篇是讲Recurrent NN),项目开源(https://code.google.com/p/word2vec/),训练速度快(单机跑缺省数据集,仅20+min)。word2vec代码中包含了两个模型CBOW(Continue BOW)和Skip-Gram。

9.1 CBOW

CBOW模型见下图,

图6 CBOW模型结构

类似于[Bengio, 2003]中的模型,CBOW的优化目标是:给定词序列 w1,w2,w3,,wT ,最大化下式,
t=1TlogP(wt|wtc,wt1.wt+1,,wt+c)(37)
其中, P(wt|wtc,wt1.wt+1,,wt+c) 采用log-linear(Softmax)模型用于正确分类当前词。在求解上式梯度时,每步的计算量与词表 V 大小成正比,十分耗时,需要借助其他方法近似求解。

9.2 Skip-Gram

Skip-Gram结构图见下图

图7 Skip-Gram模型结构

Skip-Gram中优化的目标:给定词序列 w1,w2,w3,,wT ,最大化下式,
1Tt=1Tcjc,j0logP(wt+j|wt)(38)
其中,c是上下文的大小, P(wt+j|wt) 采用softmax方程,
P(wO|wI)=exp(vTwOvwI)Vw=1exp(vTwOvwI)(39)
vw vTw 为对应的输入和输出词向量,上式中梯度( logP(wO|wI )的计算复杂度正比于词表 V 的大小,处理方法同CBOW。

9.3 参数求解

(1)Hierarchical Softmax
同Section 4中Hierarchical NNLM[Bengio, 2006],基于tf-idf构建Huffman树,简单快速。

(2)Noise Constractive Estimation
在section 4中提到了如何快速近似求解partition function的问题,Gutmann在AISTAT(理论的会议,如无基础误入,坑!)和ICANN上介绍一种新的近似求解方法-NCE,最终在JMLR上发表一篇长文来详细阐述其思想。此方法思想后续,本博客会撰文专门解释。

10 Glove

Glove(Global Vectors for word representation)由Jeffrey和Socher提出,并在word analogies,word similarity,NER任务中取得不错的效果。Glove融合了Globall Matrix Factorization和Local Context Window(见Section 11),提出了Log Bi-Linear的回归模型。从Glove的模型结构看,与神经网络结构存在不同,但是将其中 F 函数设置为神经网络结构,即二者等价。

10.1 模型结构

所有非监督的word representation学习算法均需要基于词的共现矩阵,然后经过复杂变换和分解得到对应的word representation。Glove直接构造一个词共现矩阵的近似矩阵(Context为固定长度),尽可能保存词之间的共现信息,如下图所示,

表1 共现矩阵举例

词表中三个词 i,j,k Pik 表示词 k 出现在词 i 的context中的概率,同理, Pjk 。以i=ice, j=steam, k=solid(solid语义上更靠近ice而不是steam),Glove的目标是极大比率 PikPjk ,参照Logistic Regression,其一般形式为,
F(wi,wj,w˜k)=PikPjk(40)
其中, wRd 是对应的词向量, w˜kRd 是context中词对应的向量。

由于 F 属于一个非常大的泛函空间,所以需要对 F 形式进行限制:
(1) F 需要编码比率 PikPjk 中包含的信息,由于向量空间和线性结构的一致性,所以最直接的方法是F建模的是两个目标词向量的差值。
F(wiwj,w˜k)=PikPjk(41)
(2)上式中,等式右边是一个标量。如果F拥有复杂的结构,这样和需要得到线性结构的冲突,故F变为如下形式,
F((wiwj)Tw˜k)=PikPjk(42)
(3)Context的词 k 和目标词( i,j )可以任意交换,所以模型需要能适应如此变形。在F满足对称性下,其形式为
F((wiwj)Tw˜k)=F(wTiw˜k)FTjw˜k(43)

结合,上述两式可以解得 F=exp ,即
wTiw˜k=log(Pik)=log(Xik)log(Xi)(44)
对上式进行变形—将 log(xi 吸收到 wi 的偏置 bi 中,引入 w˜k 的偏置 b˜k
wTiw˜k+bi+b˜k=log(Xik)(45)
由于logx函数性质,需要对 log(Xik) 进行平滑, log(Xik)log(1+Xik)

10.2 模型求解

依据上式,我们可以构造出对应的损失函数,由于词与词之间的共现关系不均衡,有部分共现关系不合理的(噪声)词会赋上极小的权重,不利于模型学习参数。所以,在构造函数时考虑引入一个权重方程 f(Xij)
J=i,j=1Vf(Xij)(wTiw˜j+bi+b˜jlogXij)2(46)
其中, f(x) 需要满足如下特性,
(1) f(0)=0 ,如果 f(x) 是一个连续函数,当 x−→0 时, limx0f(x)log2x 是有限的。
(2) f(x) 需要满足非递减的特性,如此,较少的出现的共现组合不会赋较大值。
(3) f(x) 的函数值需要比较小,这样常见的共现组合也不会赋较大值

Glove中使用的权值方程,
f(x)=⎧⎩⎨(xxmax)α1ifx<xmaxotherwise(47)
通常 xmax=100,α=3/4

11 Recurrent Neural Network Language Model

在前馈神经网络语言模型建模过程中取得STOA(the STate Of Art)的效果后,Thomas Mikolov将Recurrent Neural Network引入,同样取得很好的效果。相比前馈神经网络,RNN能讲更多的上下文考虑到模型中来(FFNN仅能考虑窗口内的上下文),RRN的隐藏层能够囊括当前词的所有前序词(all previous words)。在序列数据中,RNN能够发现更多的词与词之间的pattern(与模型能够囊括更多的前序词有关)。

11.1 模型结构

在进行语言模型建模,一般采用简化版本的网络结构,此为时延神经网络(TDNN,Time Delay Neural Network),RNN的结构参照下图[Mikolov, 2013]

图8 简化版RNN结构

其中,输入层包括一个 |V| 维的向量 w(t) 和一个 |H| 维的向量 s(t1) |H| 为隐藏层大小。网络训练结束后,输出层 y(t) 表示 P(wt+1|wt,s(t1))
上述网络结构中,各个链接可以表示为
sj(t)=f(iwi(t)uji+jsl(t1)wjl)(48)
yk(t)=g(jsj(t)vkj)(49)
其中, f(x) g(x) 为sigmoid和softmax激活函数。网络每步训练复杂度为 O(H×(H+V))

11.2 模型求解

由于RNN网络结构比较复杂,Backpropagation无法得到很好的训练结果,所以需要对传统Backpropagation进行改进,Mozer,Rumelhart,Robinson,Werbos等分别独立提出了BPTT(BackPropagation Through Time)用于训练RNN[Mozer, 1995][Rumelhart, 1986][Robinson, 1987][Werbos,1988]。
单隐藏层的RNN可以展开成一个多层的深度FFNN,隐藏层被使用N次,则可以展开为一个包含N个隐藏层的深度FFNN(见下图),深度的FFNN可以使用梯度下降方法学习得到参数。

图9 展开的RNN

按照上述结构,输出层的误差可以递归的往下传递,误差表达式为:
eh(tτ1)=dh(eh(tτ)TW,tτ1)(50)
其中, d(.) 对向量中元素逐个使用,
dhj(x,t)=xsj(t)(1sj(t))(51)
如此,RNN中参数更新表达式为,
对于 uij
uij(t+1)=wij(t)+z=0Twi(tz)ehj(tz)αuij(t)β(52)

对于 wlj
wlj(t+1)=wlj(t)+z=0Tsl(tz1)ehj(tz)αwlj(t)β(53)
其中,T为网络中被展开的步数(见上图)。
RNN用于Word Embedding学习的相关项目见:http://www.fit.vutbr.cz/~imikolov/rnnlm/

12 The Expressive Power of Word Embedding

这里列举两篇关于评测词向量的论文:Word Representation: Word representations :A simple and general method for semi-supervised learning[Turian et al., 2010],The Expressive Power of Word Embeddings[Yanqing Chen et al., 2013]。
在Word Representation一文中,将Word Representation分为三类,(1)Distributional Representation;(2)Clustering-based word representation;(3)Distributed Representation。
Distributional Representation是基于共现矩阵 FW×C ,其中 W 为词表大小, C 为Context大小,矩阵中每行为一个词的表示向量,每一列为某些Context内容。构造矩阵 F 有许多的方案和技巧,比如context的构建(左边 or 右边的Context窗口内容,Context窗口大小等)。同时,基于现有的共现矩阵,可以采用一些降维方法压缩词的表示,比如LSA中的SVD + Low Rank Approximation等。
Clustering-based word Representation是进行Distributional Representation中的共现矩阵“变换”成一个个聚类。常见的模型有:brown clustering,HMM-LDA based POS and word segmentation等。
Distributed Representation在Section 3.1中已经讲到,现有的词向量表示都可以归到此类中,这类模型到现在已经提出了好几十种,主要是Feed Forward Neural Network based和Recurrent Neural Network based两大类。
在评测中包含有监督的评测任务:Chunking和NER,主要针对Brown Clustering和C&W,实验结果如下图:

表2 各类模型的在Chunking任务下F1得分,其中C&W的word embedding维度为50
表3 各类模型在NER任务下的F1得分,其中C&W的word embedding维度为50

从上图中可以看出,Brown Clustering比C&W要优,但是Brown Clustering的训练耗时要比SENNA和其他词向量要高得多。
以上实验,读者可以自行复现,参考网址:http://metaoptimize.com/ projects/wordreprs/

Yanqing Chen在ICML-13上发表一篇评测现有Word Embedding的表达能力的论文,文中提到了四种公开发布的Word Embedding(HLBL,SENNA, Turian’s, Eric Huang’s)。文中基于的评测任务有(1)Sentiment:情感分析(两类情感);(2)Noun Gender:人名性别识别(Noun Gender);(3)Plurality:复数(英文)形式判定;(3)Synonyms and Antonyms:同义词反义词判定;(4)Regional Spellings:不同语种形式判定(UK vs. U.S.A.)

表4 评价任务示例

从上表中可以看出,每个任务可以描述为一个二分类问题,现在需要考虑的是如何构建分类的特征。

词向量数据集:SENNA(130,000 words  ×  50 dimension)、Turian’s(268,810 words  ×  25or50or100 dimension)、HLBL(246,122 words  ×  50 or 100 dimensions)、Huang‘s(100,232 words  ×  50 dimensions)

评测中采用了线性和非线性两类分类器,分别为Logistic Regression和SVM with RBF kernel。

图10 基于Term的任务评测结果,阴影区域为使用SVM with kernel得到的提升

图11  Regional Spellings(UK vs. US)
图12 基于词对分类的结果

从上述几个任务的结果图中,可以明显看出Eric Huang’s和SENNA有明显的优势。从总体来看,对比原有Baseline均有提升,可见词向量一定程度上符合语言的表述,但此文中没有将word2vec、Glove等后起之秀考虑在内,无法客观的评价词向量技术哪家强。

13 Conclusion

自然语言处理与神经网络结合的研究数见不鲜。现有的word embedding还只是词的浅层的表示,还需要通过组合的方式表达句子、篇章等,这些高级部分可以参考Oxford的一篇PHD thesis:Distributed Representations forCompositional Semantics。显然从这几年的会议发表论文(ACL COLING EMNLP),发展趋势越来越靠近Machine Learning,尤其Deep Learning(Neural Network)观点的论文特别多。简单的基于论文titile查询统计embedding出现次数,ACL(8), Coling(5), EMNLP(10)。从论文质量上看,含金量高的paper越来越少。
当然,自然语言处理中还需要很多基础、耗时的工作来建立形式化方法,比如knowledge base(Yago,NELL等)。当这些基础设施构建基本完成,我们可以做推理(Reasoning)等,更进步一步促进人工智能的发展。

本文内容包含了部分个人理解和诠释,如各位读者发现文中错误或者与您理解不一致的情况,欢迎留言讨论或者私信我微博 @Copper_PKU,谢谢~

Reference & Comments

book

1. 宗成庆. 统计自然语言处理. 清华大学出版社. 2008. 此书为统计观点,适合CS背景做NLP的人读。

2.Manning, C. D Foundations of Statistical Natural Language Processing. MIT Press. 1999.

3. 冯志伟. 自然语言处理的形式模型. 中国科技大学出版社. 2010. 此书讲涵盖句法、语义各个层面 ps:作者是从Linguistic角度去分析自然语言处理

Model:

1. Yoshua Bengio. A Neural Probabilistic Language Model. JMLR(2003). 2003. 神经网络语言模型的开山之作,MileStone论文,引用率634(Google Scholar)。

2. Frederic Morin, Yoshua Bengio. Hierarchical Probabilistic Neural Network Language Model. Innovations in Machine Learning(2006). 2006.提出了Hierarchical NPLM

3. Andriy Mnih, Geoffrey Hinton. Three New Graphical Models for Statistical Language Modelling. ICML(2007). 2007. 提出了三个Model,其中提的较多的是A Log-Bilinear Language Model,后续论文多引用此模型

4. Andriy Mnih, Geoffrey Hinton. A Scalable Hierarchical Distributed Language Model. NIPS(2008). 2008. 提出HLBL

5. Ronan Collobert, Jason Weston. A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning. ICML(2008). 2008. 旧瓶新酒-TDNN + Multitask Learning

6.Ronan Collobert Jason Weston et al.Natural Language Processing (Almost) from Scratch. JMLR(2011). 2011. 对SENNA进行解释的论文,注意SENNA要区别[5]中的C&W embedding.

7. Eric H. Huang, Richard Socher, etc. ImprovingWord Representations via Global Context and MultipleWord Prototypes. ACL(2012). 2012. 此篇paper把全局信息加入模型,模型求解用了[5]中的方法

8. word2vec系列paper:

  • Distributed Representations ofWords and Phrases and their Compositionality
  • Efficient Estimation of Word Representations in Vector Space
  • word2vec Explained: Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method 解释性的paper 发布arxiv上的,和有道那个可以一起看

9. Nitish Srivastava, Ruslan Salakhutdinov,Geoffrey Hinton. Modeling Documents with a Deep Boltzmann Machine. UAI(2013). 类似于LDA的一种topic model

10. RNN系列, Recurrent NN能model long term dependency, 训练出的结果比Feed Forward NN结果更好 但训练复杂度更大 这个系列word2vec作者Mikolov研究较多,比如其博士论文

  • Linguistic Regularities in Continuous SpaceWord Representations
  • Recurrent neural network based language model
  • STATISTICAL LANGUAGE MODELS BASED ON NEURAL NETWORKS [PHD THESIS IN BRNO UNIVERSITY OF TECHNOLOGY]

11. Recursive NN这个主要用在句法分析上,model自然语言存在的递归结构 这个主要是Richard Socher的paper

  • Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank
  • Parsing Natural Scenes and Natural Language with Recursive Neural Networks

12. Joseph Turian, Lev Ratinov, Yoshua Bengio. Word representations: A simple and general method for semi-supervised learning. ACL(2010) 对现有的word Representation做了对比 提供一个新的word embedding 读者可以自行复现(见Section 13)。

13. Jeffrey Pennington,Richard Socher, Chris Manning. GloVe: Global Vectors for Word Representation. EMNLP(2014)
GloVe与word2vec对比的效果曾经被质疑过 其实word2vec效果差不多

14. Omer Levy, Yoav Goldberg.Neural Word Embedding as Implicit Matrix Factorization. NIPS. 2014.
将SGNS(Skip Gram with Negative Sampling)和矩阵分解等价分析,SGNS等价于分解PMI矩阵。文中作者基于谱方法(SVD)分解shifted PPMI的矩阵,得到了不错的效果(word sim上和word2vec类似)。作者还在arxiv提交了一个分析SGNS的note,结合看更加。

15.Q.V. Le, T. Mikolov.Distributed Representations of Sentences and Documents.ICML(2014). 2014. 文中各个实验都体现了好的效果,但是可复现性一直遭到质疑,最近在word2vec的google group上公布了复现方法,已经有人复现出92.6%的结果。

Tutorial:

1. Tomas Mikolov. Statistical Language Models Based on Neural Networks

2. Richard Socher. Recursive Deep Learning for Modeling Semantic Compositionality

3. Ruchard Socher, Christpher Manning. Deep Learning for Natural Language Processing (without Magic)

Evaluation:

1. Yanqing Chen, etc. The Expressive Power of Word Embeddings. ICML(2013). 实验评价了四个model–HLBL[4],SENNA[11],Turian’s[12], Huang’s[6].

本文链接:[我们是这样理解语言的-3]神经网络语言模型
本站文章若无特别说明,皆为原创,转载请注明来源:火光摇曳,谢谢!^^


你可能感兴趣的:(大数据,计算广告学)