RNN(递归神经网络)可以像普通神经网络一样训练吗?

Can RNN (Recurrent Neural Network) be trained as normal neural networks?

训练 RNN 和简单的神经网络有什么区别?可以使用前馈和后馈方法训练 RNN 吗?

提前致谢!

区别在于重复。因此,RNN 不能像您尝试计算梯度那样轻松训练 - 您很快就会发现,为了在第 n 步获得梯度 - 您实际上需要 "unroll" 您的网络历史 n-1 前一步.这种被称为 BPTT(通过时间反向传播)的技术正是这样——将反向传播直接应用于 RNN。不幸的是,这在计算上既昂贵又在数学上具有挑战性(由于 vanishing/exploding 梯度)。人们正在许多层面上创造解决方法,例如通过引入可以有效训练的特定类型的 RNN(LSTM、GRU),或通过修改训练程序(例如梯度钳位)。总而言之 - 理论上你可以在数学意义上做 "typical" 反向传播,从编程的角度来看 - 这需要更多的工作,因为你需要 "unroll" 你的网络历史。这在计算上是昂贵的,并且在数学意义上难以优化。