循环神经网络(RNN)

参考了:

Tensorflow 实践RNN(一)

TensorFlow RNN Cell源码解析

RNN循环神经网络的直观理解:基于TensorFlow的简单RNN例子


1.循环神经网络(Recurrent neural network)或RNN是一类用于处理序列数据的神经网络。

人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。

传统神经网络(MLP)并不能做到这点。为了处理这种时序性较强的问题,出现了RNN
RNN解决了时序问题RNN包含循环网络,允许信息的持久化。
RNN结构:

循环神经网络(RNN)

在上图结构中,对于矩形框A部分,通过输入xt(t时刻的特征向量),它会输出一个结构ht(t时刻的状态或者输出)。网络中的循环结构使得某个时刻的状态能够传到下一时刻。

循环神经网络(RNN)

w代表权重,b代表偏置,先求和,再用**函数。

RNN按照时序展开,可理解为:


循环神经网络(RNN)

链式的特征揭示了RNN 本质上是与序列和列表相关的
他们对于时序链式数据的最自然的神经网络架构。
所以最基本的 RNN Cell 输入就是 xt,它还会输出一个隐含内容传递到下一个 Cell,同时还会生成一个结果 ht,其最基本的结构如如下:

循环神经网络(RNN)

仅仅是输入的 xt 和隐藏状态进行 concat,然后经过线性变换后经过一个 tanh **函数便输出了,另外隐含内容和输出结果是相同的内容。

2.循环神经网络 RNN的应用及问题

过去几年中RNN在语音识别、语言建模、翻译、图片描述等问题上已经取得一定成功。
RNN 的关键点之一就是他们可以用来连接先前的信息到当前的任务上,例如:
Ø使用过去的文本来推测下一个单词。(短距离)

循环神经网络(RNN)

3.循环神经网络 RNN的问题

例如: Igrew up in France... I speak fluent French

循环神经网络(RNN)

表现:序列信息的长期依赖(Long-TermDependencies问题
原因:梯度消失、梯度爆炸

4.RNN长期依赖问题的解释

在理论上,RNN绝对可以处理长期依赖问题。(合理的参数调节),但实际不可行。

原因:梯度消失、梯度爆炸
解决方法: LSTMLongShort-Term Memory

RNN循环神经网络的直观理解:基于TensorFlow的简单RNN例子