深度学习与自然语言处理(8)_斯坦福cs224d RNN,MV-RNN与RNTN

原文作者:Richard Socher
翻译:@胥可 && @熊杰 && @杨帆 && @陈沛 && @Molly
校对调整:寒小阳 && 龙心尘
时间:2016年7月
出处:
http://blog.csdn.net/han_xiaoyang/article/details/52075160
http://blog.csdn.net/longxinchen_ml/article/details/52075519
说明:本文为斯坦福大学CS224d课程的中文版内容笔记,已得到斯坦福大学课程@Richard Socher教授的授权翻译与发表

这篇课堂笔记将介绍不同类型的RNN(递归神经网络),并介绍它在NLP领域的应用和优势。

1、递归神经网络

在这篇课笔记中,我们会一起学习一种新的模型,这种模型绝对是以前介绍的那种递归神经网络的加强版!递归神经网络(RNNs)十分适用于有层次的、本身就有递归结构的数据集。来,咱们一起看看一个句子,是不是就很符合上面的要求呢?比如这个句子,“三三两两的人静静地走进古老的教堂。”首先,咱们可以把这个句子分成名词短语部分和动词短语部分,“三三两两的人”和“静静地走进古老的教堂。”然后呢,在动词短语里面还包含名词短语部分和动词短语部分对不对?“静静地走进”和“古老的教堂”。也就是说,它是有明显的递归结构的。



语言的语法规则本身就有很强的递归性。所以,通过相应的模型,咱们可以把这种递归结构充分地利用起来。另外,使用RNNs对句子进行建模还有一个附加的好处,就是我们可以输入任意长度的句子了。这在NLP的神经网络中曾经是一个很令人头疼的事情,句子的长度是不同的,但我们必须得使用各种预处理技巧让句子对应的输入向量长度相等。(see Bengio et al., 2003; Henderson, 2003; Collobert & Weston, 2008)

我们现在假设当前任务是要把句子对应到一个向量,这个向量和单词本身对应的向量在同一个语义空间。也就是说,像“我昨天去了商场。”,“我们上周去购物了”,“他们去了商店”这样的句子对应的向量,互相之间的距离应该是很近的。我们之前已经训练过一元语言模型的词向量,我们也可以用同样的方法进行二元、三元等模型的训练。这种思路是行得通的,但是还有两点需要注意:(1)理论上讲,词汇可能的组合是无穷多的。存储和训练这样无穷多的数据显然是办不到的。(2)有一些词汇的组合,在语言中是有意义的,但是它们并不在我们的训练/提升语料库中。所以模型可能从来就没有学习到这些词组。

我们需要一个办法,在句子和句子中包含的词对应的词向量上,推出句子对应的(嵌入)向量的形式。首先我们来探讨一个颇有争议的问题。在我们已有的词向量空间里,用这些词向量来表示任意长度的句子是否可行和合理?尽管这个问题我们无法给出确切的答案,但从模型得出的结果来看,这好像是一个行之有效的方法。

首先,我们先谈一下从语义角度和语法角度理解一个句子的区别和不同。语义分析的目的是理解一个句子所表达的实际意义,通过将短语表示成结构化语义空间里的向量,使空间里相似含义的句子的距离会比较近,而不相关意思的的句子离得会非常远。与之相比,从语法角度来说,我们需要找到句子相对应的语法结构,弄清楚各个语句各部分间的依赖关系,词语间的相互作用,等等。语法分析的结果常常被表示为一棵解析树,如下图所示。



另外一个更为有价值的问题是,在语义分析的过程中,从语法角度的理解时候会有所帮助,或者说是必不可少的?好吧,尽管有各种反对的理由,目前我们还是按照如下流程来进行的语义分析:首先,我们需要先理解各个词;其次,我们需要知道各个词是如何组织在一起;最后,我们可以通过前两步的分析结果来理解一个短语或句子的实际意义。

现在让我们一起来学习下基于以上原则所设计出来的一个模型。假如我们有一个句子和与这个句子相关的解析树,就比如上面那个图,我们如何将这个句子编码,并且通过词向量来得出句子的情绪分值?其实,仅仅一个简单的递归神经网络模型就可以得到我们想要的结果。(练习题3就是一个相关题目)

1.1 一个简单的单层递归神经网络

下面我们来学习下图中的模型。我们首先来看下这个句子的解析树和词向量,由下而上的来逐步分析这棵树。结点3(node 3)是图中最底层的结点,所以我们将 L29 L430 连接组合成一个2d维的向量,并将这个向量输入到网络中按如下公式计算:

h(1)=tanh(W(1)[L29L400]+b(1))

由于 W(1)R

你可能感兴趣的:(DL+NLP,自然语言处理,深度学习,RNN,斯坦福大学)