一、RNN(循环神经网络)
1.1 RNN与全连接神经网络的区别
RNN比全连接神经网络多了参数h0,因此RNN的神经元公式比全连接神经网络的神经元多一项。
训练过程与全连接神经网络并无区别:梯度下降原则
此时输出层的神经元公式为:
整一个RNN结构共享1组(u,w,b),这是RNN结构最重要的特性,且每一个隐藏层神经元h的计算公式是由当前输入x与上一个隐藏层神经元的输出组成。
1.2 RNN循环神经网络的优势
输入可以是多个且有序的,它可以模仿人类阅读的顺序去读取文本或者背的序列化数据,且通过隐藏层神经元的编码,上一个隐藏层神经元的信息可以传递到下一个神经元,因而形成一定的记忆能力,能够更好地理解序列化数据。
1.3 其他RNN循环神经网络结构
1.3.1 单输入多输出
这种结构通常应用于输入一个图像,输出描述该图像的文本。
1.3.2 多输入多输出的RNN结构
由于输入和输出等长,这种结构的用途就比较狭窄,仅限于输入与输出等长的序列数据如诗词文等,作诗机器人就是这么诞生的。
1.3.3 输入输出不等长的多输入多输出的RNN结构(seq2seq)
我们可以利用RNN和自编码器的原理构造一个翻译机器人,同样的,这个自编码器(翻译机器人)的输入也等于输出,只不过输入与输出用不同的语言去表达罢了
二、LSTM(长短期记忆网络)
2.1 RNN的结构缺陷
由于在(u,w,b)不变的情况下,梯度在反向传播过程中,不断连乘,数值不是越来越大就是越来越小,这样就出现了梯度爆炸或者梯度消失的情况,所以往往用RNN去训练模型得不到预期的效果。
2.2 LSTM结构
与RNN相比,LSTM的神经元还是基于输入X和上一级的隐藏层输出h来计算,只不过内部结构变了,也就是神经元的运算公式变了,而外部结构并没有任何变化,因此之前提及到的RNN各种结构都可以用LSTM来替换。
LSTM的神经元加入了输入门i、遗忘门f、输出门o、内部记忆单元c。
2.2.1 遗忘门f(forget gate)
控制输入x和上一层隐藏层输出h被遗忘的程度大小。
2.2.2 输入门i(input gate)
控制输入i和当前计算的状态更新到记忆单元的程度大小。
2.2.3 内部记忆单元
2.2.4 输出门o (output gate)
控制输入x和当前输出取决于当前记忆单元的程度大小
2.2.5 公式中参数的解释
其中σ一般选择sigmoid作为激励函数,主要起到门控作用。因为sigmoid函数的输出为0到1,当输出接近0或1时,符合物理意义上的关和开。
tanh函数作为候选记忆c的选项,因为其输出为-1到1,符合大多数场景下的0中心的特征分布,且梯度(求导)在接近0处,收敛速度比sigmoid函数要快,这也是选择它的另外一个原因。
总结:
对于一个训练好的LSTM模型,我们要知道它的每一个门(遗忘门、输出门、输入门)都有自己的(u,w,b),上述公式也有体现,这是在训练过程中得到的。
而且当输入的序列不存在有用的信息时,遗忘门f的值就会接近1,那么输入门i的值接近0,这样过去有用的信息就会被保存。
当输入的序列存在重要信息时,遗忘门f的值就会接近0,那么输入门i的值就会接近1,此时LSTM模型遗忘过去的记忆,记录重要的记忆。
三、GRU(门控循环单元)
3.1 GRU结构
由于LSTM门控网络结构过于复杂与冗余
GRU将遗忘门和输入门合并乘更新门,同时将记忆单元与隐藏层合并成重置门,进而让整个结构运算变得更加就简化且性能得以增强。
图中的zt和rt分别表示更新门和重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门控制前一状态有多少信息被写入到当前的候选集 h~t 上,重置门越小,前一状态的信息被写入的越少。