循环神经网络

1.rnn结构

循环神经网络
其中x为输入层节点,s为隐藏层节点,o为输出层节点,u是输入层到隐藏层的权重,v为s到o的权重。w是上一层隐藏层的输出到下一个影藏层的权重。
那么我们可以看看这个图的展开图循环神经网络
从这个图可以看出
循环神经网络

梯度爆炸原因
因为神经网络用到的sigmoid的特点,它会将+∞~-∞之间的输入压缩到0~1之间。当input的值更新时,output会有很小的更新。

又因为上一层的输出将作为后一层的输入,而输出经过sigmoid后更新速率会逐步衰减,直到输出层只会有微乎其微的更新。

从数学的角度出发。知sigmoid导数在0的位置取最大值1/4。当我们使用均值为0,方差为1的高斯分布初始化参数w,有|w|<1.

随网络层数加深,w的变化幅度会呈1/4的指数衰减,使得最后学不到东西,造成梯度弥散。

同样,当|w|>1,w变化幅度会指数递增,最后造成梯度爆炸。

2.双向rnn

在RNN中只考虑了预测词前面的词,即只考虑了上下文中“上文”,并没有考虑该词后面的内容。这可能会错过了一些重要的信息,使得预测的内容不够准确。正如电视剧的例子,当在该集新出现了一个人物,若要预测该人物的名字,单从前几集的内容,并不能有效的进行预测。但如果我们看了后几集的内容,可能就能更加有效的进行预测。双向RNN也是基于这种思想,不仅从前往后(如下图黄色实箭头)保留该词前面的词的重要信息,而且从后往前(如下图黄色虚箭头)去保留该词后面的词的重要信息,然后基于这些重要信息进行预测该词。双向RNN模型如下:
循环神经网络
循环神经网络

3.LSTM

循环神经网络
遗忘门
在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态。举个栗子,比如一段文章中先介绍了某地原来是绿水蓝天,但是后来被污染了。于是在看到被污染了之后,循环神经网络就会“忘记”了之前绿水蓝天的状态。这就是“遗忘门”工作内容。
输入门
LSTM会有跟rnn一样的输入才会有新的信息产生
输出门
隐藏状态h(t)的更新由两部分组成,第一部分是o(t), 它由上一序列的隐藏状态h(t−1)和本序列数据x(t),以及**函数sigmoid得到,第二部分由隐藏状态C(t)和tanh**函数组成.

4.GRU

循环神经网络
可以看出,GRU 与 LSTM 有一定的相似性,而区别主要在于:

1.LSTM 有三个 Gate,而 GRU 仅两个;

2.GRU 没有 LSTM 中的 Cell,而是直接计算输出;

3.GRU 中的 Update Gate 类似于 LSTM 中 Input Gate 和 Forget Gate 的融合;而观察它们结构中与上一时刻相连的 Gate,就能看出 LSTM 中的 Forget Gate 其实分裂成了 GRU 中的 Update Gate 和 Reset Gate。