暑期学习 RNN 笔记
暑期学习 RNN 笔记
- 前言:
- 递归神经网络:(recurrent neural network,RNN)。
- 是在传统的神经网络上做的另外一层改变。RNN 相较于 CNN 变化小一些。
一、RNN 的思想
问题:在一个全连接的传统神经网络中;假设有三个与时间相关的数据:1号数据代表早上、2号数据代表中午、3号数据代表晚上;传入传统网络,我们会发现三个数据各传各的互不相干。
实际上,三个数据因为“早上、中午、晚上”时间上事件发生的前后,数据之间存在内在的关联关系。
如何将时间前后关联的数据联系起来?这是 RNN 要解决的问题。
- RNN 的结构特点:
- 层与层之间的连接结构相对于 NN 来说没有变化。
- 在隐层出现了一个指向自己的 环。
- 下图中,神经网络的模块A,正在读取一个输入
xt ,并输出一个值ht 。- 隐层的循环可以使得信息可以从当前一步传递到下一步。
RNN 可以看作是同一个神经网络的多次赋值利用,当前一步 的神经网络模块会把信息传递给下一步 的网络。因此上图可等价为将循环展开的下图:
这种前后相连的结构表明了 RNN 本质上是它可以用来连接先前的信息到当前的任务上,(如利用前面几个词来预测下一个词)。
二、RNN 的结构
1、 NN 到 RNN
简单的 MLP 的三层神经网络模型:
- 这是最简单的浅层网络模型了:
x 为输入,s 为隐藏层神经元,o 为输出层神经元。U 、V 就是我们要学习的参数了。图很简单,每层神经元的个数就只有一个,如下所示:
- (1) 隐层神经元的**值为:
- (2) 输出层的**值为:
RNN 结构,仅仅是在 MLP 的模型上的隐层位置加了一个环,RNN 结构图:
- RNN 结构,也是只有1个输入层、1个隐藏层、1个输出层。似乎和传统浅层 NN 差不多,仅仅多了一个环:循环递归,同时多了一个环上参数
W 。x 为输入,s 为隐藏层神经元,o 为输出层神经元。U 、V 、W 是参数。如下所示:
参考网址:http://lib.****.net/article/deeplearning/45649
2、 RNN 展开计算
RNN 展开结构图:
Ot 的结果取决于隐藏层神经元St ;又注意到St 的输入包含了两个来源:xt 的输入、来自St−1 的输入。
- (1)
t 时刻,隐藏层神经元的**值为:
- (2)
t 时刻,输出层的**值为:
- 和 MLP 相比,公式上在函数
f 变量计算的时候,多个一个(w∗St−1) ,之前输入经过隐层得到的**值得到保留,等待传递给下一时刻的输入隐层使用;这是因为循环递归的存在,考虑到前面时刻的影响。- 排列前后的序列(都可以看作是时间序列)。
- 反向传播比较特殊,不仅仅只是传到当前时刻自身的输入,会一直往前按照存在的连接传播。
三、RNN 的优劣
1、 RNN优点
即把前面的事情都考虑上,根据上下文推测;
如:I love chinese, I love __ ;
RNN 根据前面的 Chinese 可知后面的词为 China 。
2、 RNN缺点(从缺点引出LSTM)
- 如上图,当语句非常长的时候,预测晚上做的事情,跟前面两大段话关系不大;因此,预测晚上的事情只需要考虑后面临近的语境即可。但是RNN 会把前面所有的冗余信息全部考虑上。
- RNN 存在的这些问题就是记忆的东西太多;怎么样有选择的保留部分信息,有选择的忘掉部分信息?因此,RNN 进化到 LSTM。
结语
- 下一篇博客将介绍从RNN 进化到的 LSTM。