深度学习笔记(三)循环神经网络RNN

前情回顾:

  • 深度学习笔记(一)感知器、梯度下降、反向传播
  • 深度学习笔记(二)卷积神经网络

RNN和LSTM

之前我们知道图片有空间性的特征,于是就有了对应的解决方案:CNN。而像文本、语音、视频,他们都有前后关联的特征,即一段文字,前面的文字和后面的文字有可能存在某种关系,我们把像文本、语音和视频等前有数据之间存在某种关系的数据叫做序列。而RNN就是处理序列的神经网络解决方案。

RNN
深度学习笔记(三)循环神经网络RNN_第1张图片
RNN

上图左侧就是RNN的基本结构,它的关键在于W,我们一步一步来分析这个图。

x是一个向量,它表示输入层的值;s是一个向量,它表示隐藏层的值;U是输入层到隐藏层的权重矩阵;o也是一个向量,它表示输出层的值;V是隐藏层到输出层的权重矩阵。那么,现在我们来看看W是什么。
循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

通过W的传递,前面数据的信息就能向后传递,从而解决序列前后数据可能存在某种关系的问题。

LSTM

在W传递过程中,由于不断进行乘法的运算,W的数值容易变得极大或者极小,也就是我们说的梯度爆炸或者梯度消失,而LSTM就是为了解决这两个问题而出现的。

深度学习笔记(三)循环神经网络RNN_第2张图片
LSTM

LSTM比较复杂,但是整体的思路就是通过三个门gate和一个cell state,控制参数的传递,控制每个cell里面哪些参数需要被遗弃,哪些参数需要新加入,哪些参数需要传递出去,从而解决梯度爆炸或梯度消失的问题。

实践:用RNN和LSTM实现写小说的人工智能程序

下面我们来实现一个简单的RNN模型,用一本网络小说作为训练数据,通过输入一个字,来预测后面的字,从而实现生产新的小说的功能。

深度学习笔记(三)循环神经网络RNN_第3张图片
模型架构

此项目来源是优达学城深度学习项目循环神经网络部分intro-to-rnn,在完成了练习后,我将数据改成了斗罗大陆,最后生成的效果如下:

深度学习笔记(三)循环神经网络RNN_第4张图片
rnn自动生成小说

具体的代码以及详细说明,请查看https://github.com/freeman93/rnn-douluodalu

你可能感兴趣的:(深度学习笔记(三)循环神经网络RNN)