Ess*_*uri 7 machine-learning sequence neural-network lstm
首先,让我为在该标题中填写三个问题而道歉.我不确定有什么更好的方法.
我会正确的.我想我很了解前馈神经网络.
但LSTM真的让我感到厌烦,我觉得这可能是因为我对一般的递归神经网络没有很好的把握.我在Coursera上经历了Hinton和Andrew Ng的课程.其中很多对我来说仍然没有意义.
根据我的理解,递归神经网络与前馈神经网络的不同之处在于过去的值会影响下一个预测.递归神经网络通常用于序列.
我看到的递归神经网络的例子是二进制加法.
010
+ 011
Run Code Online (Sandbox Code Playgroud)
一个递归神经网络将最右边的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
Run Code Online (Sandbox Code Playgroud)
如何计算递归神经网络?我可能错了,但根据我的理解,递归神经网络是具有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
Run Code Online (Sandbox Code Playgroud)
但即使我理解正确,我也没有看到这样做的好处,而不仅仅是使用过去的值作为普通前馈网络的输入(滑动窗口或其他任何调用的窗口).
例如,使用递归神经网络进行二进制加法而不是训练具有两个输出神经元的前馈网络的优点是什么.一个用于二进制结果而另一个用于进位?然后取出进位输出并将其重新插入前馈网络.
但是,我不确定这与仅仅将过去的值作为前馈模型中的输入有何不同.
在我看来,由于梯度消失,反复出现的神经网络仅比前馈网络更具优势.这让我想到了第二个问题,根据我的理解,LSTM是消除梯度问题的解决方案.但我并没有真正掌握它们的运作方式.此外,它们是否比复现神经网络更好,还是有使用LSTM的牺牲?
什么是递归神经网络?
基本思想是循环网络有循环.这些循环允许网络使用来自先前传递的信息,这些信息充当存储器.这种记忆的长度取决于许多因素,但重要的是要注意它不是无限期的.您可以将内存视为降级,旧信息的可用性越来越低.
例如,假设我们只是希望网络做一件事:记住前面的输入是1还是0.不难想象一个网络只是在一个循环中不断传递1.但是每次发送0时,进入循环的输出会稍微降低(这是一种简化,但显示了这个想法).经过一些次数后,循环输入将任意低,使网络0的输出.正如您所知,消失的梯度问题基本相同,但相反.
为什么不只使用时间窗口输入?
您提供了另一种选择:过去输入的滑动窗口作为当前输入提供.这不是一个坏主意,但请考虑一下:虽然RNN可能会随着时间的推移而受到侵蚀,但在窗口结束后,您将始终丢失整个时间信息.虽然您可以消除消失的梯度问题,但您必须将网络的权重数量增加几倍.必须训练所有这些额外的重量会伤害你,就像消失梯度一样糟糕(如果不是更糟).
什么是LSTM网络?
您可以将LSTM视为一种特殊类型的RNN.不同之处在于LSTM能够主动维护自连接循环而不会降低它们的性能.这是通过稍微花哨的激活来实现的,其涉及用于自循环连接的附加"存储器"输出.然后必须训练网络以选择将哪些数据放入该总线.通过训练网络以明确选择要记住的内容,我们不必担心破坏重要信息的新输入,消失的梯度不会影响我们决定保留的信息.
有两个主要缺点:
它总是更好吗?
哪种结构更好取决于许多因素,例如您需要的节点数量,可用数据量以及您希望网络内存达到的距离.然而,如果你只想要理论答案,我会说,鉴于无限的数据和计算速度,LSTM是更好的选择,但不应该把它作为实用的建议.
前馈神经网络具有从层n到层n + 1的连接.
递归神经网络也允许从层n到层n的连接.
这些循环允许网络对来自先前周期的数据执行计算,从而创建网络存储器.这种记忆的长度取决于许多因素,并且是一个活跃的研究领域,但可能是几十到几百个时间步.
为了使它更清楚,示例中的携带1以与输入相同的方式存储:以激活神经层的模式.它只是循环(同一层)连接,允许1持续时间.
显然,将每个输入流复制超过几个过去的时间步骤是不可行的,并且选择哪个历史流是重要的将是非常困难的(并且导致灵活性降低).
LSTM是一个非常不同的模型,我只是通过与PBWM模型比较而熟悉,但在该评论中,LSTM能够无限期地主动维护神经表示,因此我认为它更适用于显式存储.RNN更适合非线性时间序列学习,而不是存储.我不知道使用LSTM而不是RNN是否存在缺陷.
| 归档时间: |
|
| 查看次数: |
9807 次 |
| 最近记录: |