Machine learning 什么是递归神经网络,什么是长短时记忆(LSTM)网络,它总是更好吗?

Machine learning 什么是递归神经网络,什么是长短时记忆(LSTM)网络,它总是更好吗?,machine-learning,neural-network,sequence,lstm,Machine Learning,Neural Network,Sequence,Lstm,首先,让我为在标题中塞进三个问题而道歉。我不知道还有什么更好的办法 我马上就去。我想我很了解前馈神经网络 但LSTM真的让我不知所措,我觉得这可能是因为我没有很好地掌握一般的递归神经网络。我在Coursera上学习了Hinton和Andrew Ng的课程。很多对我来说仍然没有意义 据我所知,递归神经网络不同于前馈神经网络,因为过去的值会影响下一个预测。递归神经网络通常用于序列分析 我看到的递归神经网络的例子是二进制加法 010 + 011 递归神经网络首先取最右边的0和1,输出1。

首先,让我为在标题中塞进三个问题而道歉。我不知道还有什么更好的办法

我马上就去。我想我很了解前馈神经网络

但LSTM真的让我不知所措,我觉得这可能是因为我没有很好地掌握一般的递归神经网络。我在Coursera上学习了Hinton和Andrew Ng的课程。很多对我来说仍然没有意义

据我所知,递归神经网络不同于前馈神经网络,因为过去的值会影响下一个预测。递归神经网络通常用于序列分析

我看到的递归神经网络的例子是二进制加法

    010
+   011
递归神经网络首先取最右边的0和1,输出1。然后取下一个1,1,输出一个零,并携带1。取下一个0,0并输出1,因为它携带了上次计算的1。它把这个1存放在哪里?在前馈网络中,结果基本上是:

    y = a(w*x + b)
where w = weights of connections to previous layer
and x = activation values of previous layer or inputs
如何计算递归神经网络?我可能错了,但据我所知,递归神经网络是一种前馈神经网络,它有T个隐藏层,T是时间步数。每个隐藏层在时间步长T处接受X输入,然后将其输出添加到下一个相应隐藏层的输入中

    a(l) = a(w*x + b + pa)
where l = current timestep
and x = value at current timestep
and w = weights of connections to input layer
and pa = past activation values of hidden layer 
    such that neuron i in layer l uses the output value of neuron i in layer l-1

    y = o(w*a(l-1) + b)
where w = weights of connections to last hidden layer
但是,即使我正确理解了这一点,我也不认为这样做比简单地使用过去的值作为正常前馈网络(滑动窗口或任何它的名称)的输入有什么好处

例如,使用递归神经网络进行二进制加法比训练具有两个输出神经元的前馈网络有什么优势。一个用于二进制结果,另一个用于进位?然后将进位输出插回前馈网络

然而,我不确定这与在前馈模型中将过去的值作为输入有什么不同


在我看来,时间步长越长,递归神经网络与前馈网络相比只是一个缺点,因为梯度消失。这就引出了我的第二个问题,根据我的理解,LSTM是消失梯度问题的解决方案。但我对它们的工作原理没有实际的了解。此外,它们只是比递归神经网络好,还是使用LSTM会有牺牲?

前馈神经网络具有从n层到n+1层的连接

递归神经网络允许从n层连接到n层

这些循环允许网络对来自先前循环的数据执行计算,从而创建网络内存。这种记忆的长度取决于许多因素,是一个活跃的研究领域,但可以是数十到数百个时间步

为了让它更清楚一点,你的例子中携带的1以与输入相同的方式存储:以神经层激活的模式存储。正是重复的(同一层)连接允许1在一段时间内持续存在

显然,在过去的几个时间步内复制每个输入流是不可行的,选择哪些历史流是重要的将非常困难(并导致灵活性降低)


LSTM是一个非常不同的模型,我只通过与PBWM模型的比较来熟悉它,但在那篇综述中,LSTM能够无限期地积极维护神经表征,因此我相信它更适合于显式存储。RNN更适合于非线性时间序列学习,而不是存储。我不知道使用LSTM而不是RNN是否有缺点。

RNN和LSTM都可以是顺序学习器。RNN存在消失梯度点问题。此问题导致RNN在大约超过10个时间步后难以记住过去输入的值。(RNN只能记住以前看到的输入的几个时间步)

LSTM用于解决RNN中的消失梯度点问题。LSTM具有桥接输入之间长时间滞后的能力。换句话说,它能够记住过去多达1000个时间步的输入(一些论文甚至声称它可以做到更多)。这种能力使LSTM成为学习长时间滞后的长序列的优势。参考Alex Graves博士。论文中有一些细节。如果您是LSTM新手,我建议您提供超级简单易懂的解释


然而,RNN的最新进展也表明,通过仔细初始化,RNN还可以学习与LSTM性能相当的长序列

什么是递归神经网络?

其基本思想是循环网络具有循环。这些循环允许网络使用以前传递的信息,这些信息充当内存。这种记忆的长度取决于许多因素,但重要的是要注意,它不是无限的。您可以认为内存正在退化,旧信息的可用性越来越低

例如,假设我们只想让网络做一件事:记住之前的输入是1还是0。不难想象,一个网络只是在一个循环中不断地传递1。但是,每次您发送0时,进入循环的输出都会降低一点(这是一种简化,但显示了想法)。经过一定次数的传递后,回路输入将任意低,使网络输出为0。正如您所知,消失梯度问题本质上是相同的,但相反

为什么不使用时间窗口输入?

您提供了另一种选择:将过去输入的滑动窗口作为当前输入提供。这不是一个坏主意,但是考虑一下:RNN可能有E