递归与递归神经网络:哪个对NLP更好?


48

有递归神经网络和递归神经网络。两者通常用相同的缩写词表示:RNN。根据Wikipedia的说法,递归NN实际上是递归NN,但我并不真正理解这种解释。

而且,我似乎没有发现哪个(对于示例而言)对自然语言处理更好。事实是,尽管Socher在其教程中将递归NN用于NLP ,但我找不到递归神经网络的良好实现,并且当我在Google中进行搜索时,大多数答案都与递归NN有关。

除此之外,还有其他DNN更适合NLP还是取决于NLP任务?信仰网还是堆叠式自动编码器?(我似乎没有在NLP中为ConvNets找到任何特定的util,并且大多数实现都考虑到了机器视觉)。

最后,我真的更喜欢C ++(如果支持GPU,则更好)或Scala(如果支持Spark,则更好)的DNN实现,而不是Python或Matlab / Octave。

我已经尝试过Deeplearning4j,但是它正在不断开发中,文档有些过时了,我似乎无法使其正常工作。太糟糕了,因为它具有类似于“黑匣子”的处理方式,非常类似于scikit-learn或Weka,这正是我真正想要的。

Answers:


42

递归神经网络随着时间的推移而不断重复。例如,如果您有一个序列

x = ['h','e','l','l']

该序列被馈送到与其自身具有单一连接的单个神经元。

在时间步骤0,输入字母'h'。在时间步骤1,输入'e'。随着时间的流逝,网络将看起来像这样。

神经网络

递归网络只是递归网络的概括。在递归网络中,权重沿序列的长度共享(维数保持不变),因为当您在测试时遇到与训练时看到的长度不同的序列时,如何处理与位置相关的权重。在递归网络中,出于相同的原因,权重在每个节点上共享(维数保持不变)。

这意味着所有W_xh权重将相等(共享),因此W_hh权重也将相等。这仅仅是因为它是单个神经元,并且已经及时展开。

这就是递归神经网络的样子。 递归神经网络

很简单地知道为什么将其称为递归神经网络。每个父节点的子节点只是一个与该节点相似的节点。

您要使用的神经网络取决于您的使用情况。在Karpathy的博客中,他一次生成一个字符,因此循环神经网络很好。

但是,如果要生成解析树,则使用递归神经网络会更好,因为它有助于创建更好的层次表示形式。

如果要使用c ++进行深度学习,请使用CUDA。它具有良好的用户基础,并且速度很快。我对此一无所知,因此无法发表更多评论。

在python中,Theano是最好的选择,因为它提供了自动区分功能,这意味着当您形成大型笨拙的NN时,无需手动查找渐变。Theano会自动为您完成。Torch7缺少此功能。

Theano速度非常快,因为它为Python代码提供了C包装器,并且可以在GPU上实现。它还有一个很棒的用户群,这对于学习新东西非常重要。


11

大型递归神经网络可能被认为是NLP最强大的模型。可在http://karpathy.github.io/2015/05/21/rnn-efficiency/上找到A. Karpathy撰写的有关递归神经网络和字符级建模的精彩文章。

尝试了许多用于深度学习的库(theano,caffe等)。我强烈建议您使用Torch7,它被认为是用于NN的最先进的工具,并且得到了纽约大学,Facebook AI和Google DeepMind的支持。Torch7基于lua,您可以轻松了解很多示例。可以在github上找到很多代码,一个好的开始是https://github.com/wojzaremba/lstm

最后,lua的美丽之处在于LuaJIT可以很容易地用Java,Python,Matlab等注入。


2
建议阅读Karpathy的博客。在理解RNN方面真是一大堆。
SolessChong 2015年

1

递归神经网络(RNN)随时间逐渐发展。它用于顺序输入,其中时间因子是序列元素之间的主要区别因子。例如,这是一个用于语言建模的递归神经网络,它已经随着时间的流逝而展开。在每个时间步骤中,除了该时间步骤中的用户输入外,它还接受在前一个时间步骤中计算出的隐藏层的输出。

神经网络


递归神经网络更像是分层网络,其中输入序列实际上没有时间方面,但是输入必须以树的形式进行分层处理。这是递归神经网络外观的一个示例。它显示了通过递归地获取对文本的较小块执行的操作的输出来学习句子的分析树的方法。

递归神经网络


[ 注意 ]:

LSTM和GRU是带有“遗忘门”的两种扩展RNN类型,在NLP中非常常见。

LSTM

LSTM和GRU


LSTM单元格公式:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.