前馈神经网络中,信息传递是单向的,可以看作是一个复杂的函数,网络的输出只依赖于当前的输入。因此无法处理时序数据。

然而循环神经网络是一类具有短期记忆能力的神经网络。在循环神经网络中,神经元不但可以接受其他神经元的其他神经元的信息,也可以接受自身的信息,形成具有环路的网络结构。循环神经网络的参数学习可以通过随时间反向传播算法来学习。随时间反向传播算法即可以按照时间逆序将错误信息一步步往前传递。不过输入序列较长时,可能会有梯度爆炸和梯度消失的问题。梯度爆炸可以用梯度裁剪方法,但梯度消失就需要引入长短时神经网络(门控机制)。

给网络增加记忆能力我们通常有三种方式

* 延时神经网络,即在前馈网络中的非输出层都增加延时器,记录最近几次神经元的输出。这样延时神经网咯在时间维度上共享权值,可降低参数数量。
* 由外部输入的非线性自回归模型,在每个时刻t都有一个外部输入产生一个输出,并通过延时器记录最近几次的外部输入和输出。
*
循环神经网络通过使用带自反馈的神经元,能够处理任意长度的时序数据。给定一个输入序列,循环神经网络通过输入前一时刻的活性值和这时刻的输入序列来更新带反馈边的隐藏层的活性值。

循环神经网络中的隐藏层的状态不仅与当前时刻输入序列有关,还和上一时刻的隐藏层状态有关。并且要用sigimod激活函数激活。如果我们把每个时刻的状态都看作是前馈神经网络的一层,循环神经网络可以看作是在时间维度上权值共享的神经网络。即循环神经网络在时间维度上三套权值共享。

由于循环神经网络具有短期记忆能力,相当于存储装置,因此其计算能力十分强大。前馈神经网咯可以模拟任何连续函数,而循环神经网络可以模拟任何程序。

根据通用近似定理,两层的前馈神经网络可以近似任意有界闭集上任意连续函数。因此,动力系统的两个函数可以用两层的前馈神经网络近似。

所有的图灵机都 可以被一个由使用Sigmoid型激活函数的神经元构成的全连接循环网络来进行模拟。一个完全连接的循环神经网络可以近似解决所有的可计算问题。

循环神经网络分为:序列到类别模式、同步的序列到序列模式、异步的 序列到序列模式。

循环神经网络参数可以通过梯度下降法学习。主要有两种计算梯度的方式:随 时间反向传播(BPTT)算法和实时循环学习(RTRL)算法。

随时间反向传播算法主要思想是通过类似前馈神经网络的错误反向传播算法来计算梯度。就是将循环神经网络看作是一个展开的多层前馈网络,其中“每一层”对应循环网络中的“每个时刻”。这样,循环神经网络就可按照反向传播算法计算梯度。并且由于参数是共享的,所有是各个层参数梯度之和。

实时循环学习(Real-Time Recurrent Learning,RTRL)是通过前向传播的方式来计算梯度

RTRL算法和BPTT算法都是基于梯度下降的算法,分别通过前 向模式和反向模式应用链式法则来计算梯度。在循环神经网络中,一般网络输出
维度远低于输入维度,因此BPTT算法的计算量会更小,但是BPTT算法需要保 存所有时刻的中间梯度,空间复杂度较高。RTRL算法不需要梯度回传,因此非
常适合用于需要在线学习或无限序列的任务中。

技术
©2019-2020 Toolsou All rights reserved,
Vue常用特性(一)百度、阿里、腾讯内部岗位级别和薪资结构,附带求职建议!【虚拟机踩坑记】此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。苹果与日产对话暂停,Apple Car进展如何?一文揭秘阿里、腾讯、百度的薪资职级Java基础(冒泡排序)TP6验证器的使用示例及正确验证数据一年半JAVA工作经验的总结谷歌称居家办公影响工作效率!2021 年将回归线下办公这些歌,程序员千万万万万别听!