RNN的变形GRU用于处理序列信息。通常应用于自然语言处理、时间序列预测、文本情感分类等。RNN具有这种能力的原因是,它的神经元能够记住之前的输入的信息,在一定程度上实现了输入序列的信息融合,并予以计算推测。
目录
1.RNN神经网络的连接方式
2.LSTM的核心思想
1.RNN神经网络的连接方式
RNN神经网络的在某一时间步的连接方式与一般的神经网络连接方式相同。这个连接可大致分为三个部分:输入层,隐藏层,输出层。如下图所示:
与一般的神经网络不同的是:RNN带有时间维度。如何理解呢?如果将其想象成图形,它是什么样子的呢?如果我们将不同的时刻对应的网络拆开来看,它将变成一个三维的图。如图所示:
粉红色的球代表输入层,某一时刻(如t=1)小球的数量(3)就代表输入向量的长度为3;蓝色的代表RNN的隐藏层神经元,数量就代表神经元的数量;绿色的代表输出层,数量就代表输出向量的长度 。
但是这并不代表有几个时刻的输入,RNN的网络就有几个。这张图的意思是,在不同时刻只是输入改变了,而神经元是不同时刻之间所共用的,分开画只是为了便于说明不同时刻之间神经元是如何变化的。
神经元是怎么记住信息的呢?原来,RNN神经元在两次相邻的时间步输入之间有信息传递,即在t-1时刻的神经元状态有一部分传递到了t时刻。直观图解:
上图橙色的线条就是两相邻时间步的信息传递。我们把它给抽象一下,把同一时间步的同一颜色的小球融合,就变成了这个样子:
把这张图逆时针旋转90°,再把神经元的内部结构画出来,就是我们见到的一般版本:
LSTM的连接与RNN又有不同,它加入了神经元的记忆状态ct,这样神经元之间的信息传递除了直接传递以外,又增加了一个渠道ct,这样它就能记住更长的时间序列的信息了。ct通常被看作神经元的内部结构的一部分。除此之外,LSTM还在RNN神经元内部增加了三个门控:遗忘门、输入门、输出门。
别担心中间到底发生了什么。我们接下来会一步一步的理解这个LSTM图。首先,我们要首先适应一下我们将会使用的符号表示方法。
在上图中,每条线表示一个向量,从一个输出节点到其他节点的输入节点。这个粉红色圆圈表示逐点式操作,就像向量加法。黄色的盒子是学习好的神经网络的层。线条合表示联结,相反,线条分叉表示内容被复制到不同位置。
2.LSTM的核心思想
LSTMs的核心之处就是它的神经元状态,如下图中所示,上面那条贯穿整个结构的水平线。
神经元状态就像是一个传送带。它的线性作用很小,贯穿整个链式结构。信息很容易在传送带上传播,状态却并不会改变。
LSTM有能力删除或者增加神经元状态中的信息,这一机制是由被称为门限的结构精心管理的。
门限是一种让信息选择性通过的方式,它们是由Sigmoid神经网络层和逐点相乘器做成的。
Sigmod层输出0~1之间的数字,描述了一个神经元有多少信息应该被通过。输出“0”意味着“全都不能通过”,输出“1”意味着“让所有都通过”。
一个LSTM有三个这样的门限,去保护和控制神经元状态。
LSTM的第一步就是决定什么信息应该被神经元遗忘。这是一个被称为“遗忘门”的Sigmod层组成的。它输入 ht−1和xt,然后在Ct−1 的每个神经元状态输出0~1之间的数字。“1”表示“完全保留这个”,“0”表示“完全遗忘这个”。
下一步就是决定我们要在神经元细胞中保存什么信息,这包括两个部分。首先,一个被称为“输入门”的Sigmod层决定我们要更新的数值。然后,一个tanh层生成一个新的候选数值,Ct˜,它会被增加到神经元状态中。在下一步中,我们会组合这两步去生成一个更新状态值。
是时候去更新旧的神经元状态Ct−1到新的神经元状态Ct了。我们给旧的状态乘以一个ft,遗忘掉我们之前决定要遗忘的信息,然后我们增加it∗Ct˜。这是新的候选值,是由我们想多大程度上更新每个状态的值来度量的。如下图:
最后,我们要决定要输出什么。这个输出是建立在我们的神经元状态的基础上的,但是有一个滤波器。首先,我们使用Sigmod层决定哪一部分的神经元状态需要被输出;然后我们让神经元状态经过tanh(让输出值变为-1~1之间)层并且乘上Sigmod门限的输出,我们只输出我们想要输出的。