摘要:
多层反馈RNN(Recurrent neural Network、循环神经网络)神经网络是一种节点定向连接成环的人工神经网络。这种网络的内部状态可以展示动态时序行为。不同于前馈神经网络的是,RNN可以利用它内部的记忆来处理任意时序的输入序列,这让它可以更容易处理如不分段的手写识别、语音识别等。
引言:
循环神经网络的目的使用来处理序列数据。在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。RNN之所以称为循环神经网路,即一个序列当前的输出与前面的输出也有关。具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出还包括上一时刻隐藏层的输出。理论上,RNNs能够对任何长度的序列数据进行处理。但是在实践中,为了降低复杂性往往假设当前的状态只与前面的几个状态相关。
预备知识:
人工神经网络
一、状态和模型
IID数据:分类问题、回归问题、特征表达。
大部分数据都不满足IID:序列分析、序列生成、内容提取。
1、序列样本
序列样本多种多样,可以一对一、一对多和多对多等。
RNN不仅仅能够处理序列输出,同时也能够得到序列输出,因此我们可以说RNN学习出来的是程序而不是函数。
2、序列预测:
输入:时间变化向量序列:
在t时刻通过模型来估计:
序列预测存在的问题:
A. 对内部状态难以建模和观察
B. 对长时间范围的场景(context)难以建模和观察
解决方案:引入内部隐含状态变量
3、序列预测模型:
输入离散列序列:
在时间t的更新计算:
预测计算:
整个计算过程中,W保持不变,在0时刻初始化
二、RNN训练
前向计算,相同W矩阵需要乘以多次;多步之前的输入x会影响当前的输出;在后向计算的时候,同样相同的矩阵也会乘以多次。
1、BPTT算法(BackProp Through Time)
RNN前向计算
计算W的偏导,把所有的Time Step加起来
应用链式规则
2、LSTM(Long Short Term Memory)Cell
是一种应用最为广泛、成功的RNN方案。
可以长期保持某个状态,cell state值通过forget gate控制实现保留多少“老”的状态
Layer把输入维度x变成输出维度h。
参考文献 http://blog.csdn.net/heyongluoyao8/article/details/48636251