一:前言

前面我们介绍了传统神经网络(NN)和卷积神经网络(CNN)(读者想要了解的话请看文章最下面链接)接下来我们要大体介绍的是循环神经网络(Recurrent Neural Networks)(RNN)。

二:RNN的优势

如下图所示RNN的优势在于它能够利用前面一时刻的embeddings,比如在

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络

时刻我的输入是

gru 循环神经网络 循环神经网络的架构_人工智能_02

过一层隐藏层得到embeddings

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_03

,在

gru 循环神经网络 循环神经网络的架构_神经网络_04

时刻的输入是

gru 循环神经网络 循环神经网络的架构_python_05

它可以利用原来的输出

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_03

一起输出

gru 循环神经网络 循环神经网络的架构_人工智能_07

就是因为有这样的特性所以我们说CNN通常用于计算机视觉领域(CV),RNN通常用于自然语言处理(NLP)。

gru 循环神经网络 循环神经网络的架构_神经网络_08

三:RNN的直观体现

如下图所示:

gru 循环神经网络 循环神经网络的架构_深度学习_09

前面我们举的例子是循环了一次后的结果,在这张图当中A表示hidden layer,x表示每一个时间段的输入,h表示每次输入得到的输出,这张图中还有一点需要注意的是在最后时刻之前的输出(如图中的

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_10

之前的所有h)我们只看做是一个中间变量,在最后面是不考虑它单独的作用,因为

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_10

结合了之前所有的embeddings。

四:长短期记忆网络(Long Short-Term Memory)(LSTM)

但我们会发现一个问题,就是RNN它考虑了前面所有的情况,但我们会发现,前面有些东西是不重要的对于我们的结果来说,我们有时候只想要保留一些重要的信息,而忽略一些次要信息,所以又提出了LSTM模型,如下图中对比:

gru 循环神经网络 循环神经网络的架构_人工智能_12

实际上LSTM模型比起RNN就多操作了一个遗忘的操作,如下图中的C就是控制遗忘的参数,它决定了什么信息会被保留什么信息会被遗忘.

gru 循环神经网络 循环神经网络的架构_人工智能_13

具体的c的计算如下图公式:

gru 循环神经网络 循环神经网络的架构_神经网络_14

gru 循环神经网络 循环神经网络的架构_python_15

和(t-1)层的 

gru 循环神经网络 循环神经网络的架构_人工智能_16

   共同决定计算所丢弃的信息 

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_17

:是一种激活函数,如sigmoid()

gru 循环神经网络 循环神经网络的架构_深度学习_18

:为这一层的权重参数矩阵

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_10

:第t时刻embeddings后的输出矩阵

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_20

: 第t时刻输入矩阵

gru 循环神经网络 循环神经网络的架构_gru 循环神经网络_21

:是一个偏置