我正在学习人工神经网络,并且已经实现了一个具有几个隐藏层的标准前馈网络。现在,我正在尝试了解递归神经网络(RNN)在实践中是如何工作的,并且在激活/传播如何在网络中流动方面遇到了问题。
在我的前馈中,激活是简单的一层一层地激活神经元。在递归网络中,神经元连接回以前的层,有时连接到自己,因此传播网络的方式必须不同。问题是,我似乎找不到一个确切的解释来解释传播是如何发生的。
例如,对于这样的网络,它是如何发生的:
Input1 --->Neuron A1 ---------> Neuron B1 ---------------------> Output
^ ^ ^ |
| | --------
| |
Input2 --->Neuron A2 ---------> Neuron B2我想象这将是一个滚动激活,随着神经元的阈值将神经元放电降低到0,逐渐消退,就像生物学中的情况一样,但似乎有一种更有效的计算方法可以通过导数来做到这一点?
发布于 2012-10-17 00:41:36
我想我现在已经掌握了传播递归网络与前馈网络的基本原则:一个明确的时间步长。
在前馈中,传播是逐层进行的,所以第一层神经元首先激发,然后是第二层,第三层等等,所以传播是一个神经元激活,刺激将其作为输入的神经元的激活。
或者,我们可以将传播视为在任何给定时间点输入活跃的神经元是要触发的神经元。因此,如果我们有一个时间t=0是第一层神经元是活跃的,在下一次t=1时,下一层第二层将被激活,因为第二层中的神经元将第一层中的神经元作为输入。
虽然思维上的差异可能看起来像语义,但对我来说,它在弄清楚如何实现递归网络方面至关重要。在前馈中,时间步长是隐含的,代码依次通过神经元层,像倒下的多米诺骨牌一样激活它们。在循环网络中,尝试倒下多米诺骨牌激活方式,即每个神经元指定下一个激活的神经元,对于大型复杂网络来说,这将是一场噩梦。相反,在给定的时间t轮询网络中的每个神经元,看看它是否根据输入激活是有意义的。
当然,有许多不同类型的递归神经网络,但我认为这是关键的显式时间步长,是递归网络传播的关键。
我想知道的微分方程部分开始发挥作用,而不是离散的时间步长t是0,1,2等,试图通过在非常小的时间增量上模拟传播,如0.2,0.1,0.05等,来获得更平滑,更连续的网络流。
发布于 2012-10-17 00:59:14
对于不同的时间步长t=t0、t1、t2...tN给出输入信号s(t)。在递归层中,输入来自输入信号以及网络的状态,这是来自前一个时间步的激励水平。因此,您必须根据输入信号和之前的内部状态(递归神经元的兴奋水平)更新内部状态。
https://stackoverflow.com/questions/12878089
复制相似问题