暑期学习 RNN 笔记

暑期学习 RNN 笔记

  • 前言:
    • 递归神经网络:(recurrent neural network,RNN)。
    • 是在传统的神经网络上做的另外一层改变。RNN 相较于 CNN 变化小一些。

一、RNN 的思想

问题:在一个全连接的传统神经网络中;假设有三个与时间相关的数据:1号数据代表早上、2号数据代表中午、3号数据代表晚上;传入传统网络,我们会发现三个数据各传各的互不相干

实际上,三个数据因为“早上、中午、晚上”时间上事件发生的前后,数据之间存在内在的关联关系

如何将时间前后关联的数据联系起来?这是 RNN 要解决的问题。


暑期学习 RNN 笔记


  • RNN 的结构特点:
    • 层与层之间的连接结构相对于 NN 来说没有变化。
    • 在隐层出现了一个指向自己的 环


暑期学习 RNN 笔记

  • 下图中,神经网络的模块A,正在读取一个输入 xt,并输出一个值 ht
  • 隐层的循环可以使得信息可以从当前一步传递到下一步


暑期学习 RNN 笔记

  • RNN 可以看作是同一个神经网络的多次赋值利用当前一步 的神经网络模块会把信息传递给下一步 的网络。因此上图可等价为将循环展开的下图:

  • 这种前后相连的结构表明了 RNN 本质上是它可以用来连接先前的信息到当前的任务上,(如利用前面几个词来预测下一个词)。


暑期学习 RNN 笔记

二、RNN 的结构

1、 NN 到 RNN

  • 简单的 MLP 的三层神经网络模型:

    • 这是最简单的浅层网络模型了:
    • x 为输入,s 为隐藏层神经元,o 为输出层神经元。UV 就是我们要学习的参数了。图很简单,每层神经元的个数就只有一个,如下所示:


暑期学习 RNN 笔记

  • (1) 隐层神经元的**值为:

s=f(ux+b1)

  • (2) 输出层的**值为:

o=f(vs+b2)


  • RNN 结构,仅仅是在 MLP 的模型上的隐层位置加了一个,RNN 结构图:

    • RNN 结构,也是只有1个输入层、1个隐藏层、1个输出层。似乎和传统浅层 NN 差不多,仅仅多了一个环:循环递归,同时多了一个环上参数 W
    • x 为输入,s 为隐藏层神经元,o 为输出层神经元。UVW 是参数。如下所示:


暑期学习 RNN 笔记

参考网址:http://lib.csdn.net/article/deeplearning/45649


2、 RNN 展开计算

  • RNN 展开结构图:

    • Ot 的结果取决于隐藏层神经元 St;又注意到 St 的输入包含了两个来源:xt 的输入、来自 St1 的输入。


暑期学习 RNN 笔记

  • (1) t 时刻,隐藏层神经元的**值为:

St=f(uxt+wSt1+b1)

  • (2) t 时刻,输出层的**值为:

Ot=f(vSt+b2)

  • 和 MLP 相比,公式上在函数 f 变量计算的时候,多个一个 (wSt1)之前输入经过隐层得到的**值得到保留,等待传递给下一时刻的输入隐层使用;这是因为循环递归的存在,考虑到前面时刻的影响
  • 排列前后的序列(都可以看作是时间序列)。
  • 反向传播比较特殊,不仅仅只是传到当前时刻自身的输入,会一直往前按照存在的连接传播。


暑期学习 RNN 笔记


三、RNN 的优劣

1、 RNN优点

即把前面的事情都考虑上,根据上下文推测;

如:I love chinese, I love __ ;

RNN 根据前面的 Chinese 可知后面的词为 China 。


2、 RNN缺点(从缺点引出LSTM)

暑期学习 RNN 笔记

  • 如上图,当语句非常长的时候,预测晚上做的事情,跟前面两大段话关系不大;因此,预测晚上的事情只需要考虑后面临近的语境即可。但是RNN 会把前面所有的冗余信息全部考虑上。
  • RNN 存在的这些问题就是记忆的东西太多;怎么样有选择的保留部分信息,有选择的忘掉部分信息?因此,RNN 进化到 LSTM

结语

  • 下一篇博客将介绍从RNN 进化到的 LSTM