赞
踩
循环神经网络(Recurrent Neural Network, RNN)一般是指时间递归神经网络而非结构递归神经网络 (Recursive Neural Network),其主要用于对序列数据进行建模。
RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNN能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关。
传统神经网络(包括CNN),输入和输出都是互相独立的。如图像上的猫和狗是分隔开的,但有些任务,后续的输出和之前的内容是相关的。例如:我是中国人,我的母语是____。这是一道填空题,需要依赖之前的输入。
RNN引入“记忆”的概念,也就是输出需要依赖之前的输入序列,并把关键输入记住。循环2字来源于其每个元素都执行相同的任务。它并⾮刚性地记忆所有固定长度的序列,而是通过隐藏状态来存储之前时间步的信息。
RNN跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。如下图所示:
RNN运行原理
基本循环神经网络结构:一个输入层、一个隐藏层和一个输出层。
循环网络结构图
x是输入层的值。s表示隐藏层的值,U是输入层到隐藏层的权重矩阵,O是输出层的值。V是隐藏层到输出层的权重矩阵。循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵W就是隐藏层上一次的值作为这一次的输入的权重。
RNN有五种结构。
RNN的五种结构
(1)one to one:
最基本的单层网络,输入是x,经过变换Wx+b和激活函数f得到输出y。
(2)one to n:
(3)n to n:
(4)n to one:
(5)n to m:
RNN常见应用有:
(1)RNN是一种死板的逻辑,越晚的输入影响越大,越早的输入影响越小,且无法改变这个逻辑。短期的记忆影响较大,但是长期的记忆影响就很小,这就是RNN存在的短期记忆问题,无法处理很长的输入序列。
(2)训练RNN需要投入极大的成本。
由于RNN的短期记忆问题,后来又出现了基于RNN的优化算法—LSTM。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。