如何传播/发射递归神经网络(RNN)?

Fra*_*yed 8 artificial-intelligence machine-learning neural-network

我正在学习人工神经网络,并实施了一个带有几个隐藏层的标准前馈网络.现在,我试图理解递归神经网络(RNN)在实践中如何工作,并且在激活/传播如何流经网络时遇到问题.

在我的前馈中,激活是一个简单的逐层激发神经元.在循环网络中,神经元连接回先前的层,有时自身连接,因此传播网络的方式必须不同.麻烦的是,我似乎无法找到确切传播如何发生的解释.

怎么会发生这样的网络说:

Input1 --->Neuron A1 --------->  Neuron B1 ---------------------> Output
                ^                   ^     ^      |
                |                   |     --------
                |                   |
Input2 --->Neuron A2 --------->  Neuron B2
Run Code Online (Sandbox Code Playgroud)

我想象这将是一个滚动的激活,逐渐消失,因为神经元的阈值将神经元的发射减少到0,就像在生物学中一样,但似乎通过衍生物有更多计算有效的方法来做到这一点?

Fra*_*yed 5

我想我现在掌握了传播循环与前馈网络的基本原则:一个明确的时间步长。

在前馈中,传播逐层进行,因此第 1 层神经元首先触发,然后是第 2、3 层等,因此传播是一种神经元激活,刺激将其作为输入的神经元的激活。

或者,我们可以将传播视为在任何给定时间点输入处于活动状态的神经元是要激发的神经元。因此,如果我们有时间 t=0 时第 1 层神经元处于活动状态,则在下一个时间 t=1 下一层第 2 层将激活,因为第 2 层中的神经元将第 1 层中的神经元作为输入。

虽然思维上的差异可能看起来像语义,但对我来说,这对于弄清楚如何实现循环网络至关重要。在前馈中,时间步是隐式的,代码依次通过神经元层,像倒下的多米诺骨牌一样激活它们。在循环网络中,尝试每个神经元指定它接下来激活哪个神经元的下落多米诺激活方式对于大型复杂网络来说将是一场噩梦。相反,在给定时间 t 轮询网络中的每个神经元是有意义的,以查看它是否根据其输入激活。

当然有许多不同类型的循环神经网络,但我认为正是这个关键的显式时间步是循环网络传播的关键。

如果不是将 t 的离散时间步长设为 0、1、2 等,而是通过对非常小的时间增量上的传播进行建模来尝试获得更平滑、更连续的网络流,我想知道的微分方程部分就会发挥作用,例如 0.2、0.1、0.05 等。