主流的循环神经网络就是以RNN为基础的各种变体模型
人工神经网络:
卷积神经网络:
循环神经网络:
三种基本类型总览:
RNN:
每个序列索引位置t都有一个隐藏状态h(t)。
进一步简化:
由于RNN梯度消失的问题,就对于序列索引位置t的隐藏结构做了改进,可以说通过一些技巧让隐藏结构复杂了起来,来避免梯度消失的问题,这样的特殊RNN就是我们的LSTM。
LSTM:
细化讲解:
除了细胞状态,LSTM图中还有了很多奇怪的结构,这些结构一般称之为门控结构(Gate)。LSTM在在每个序列索引位置t的门一般包括遗忘门,输入门和输出门三种。下面我们就来研究上图中LSTM的遗忘门,输入门和输出门以及细胞状态。
LSTM之遗忘门:
遗忘门(forget gate)顾名思义,是控制是否遗忘的,在LSTM中即以一定的概率控制是否遗忘上一层的隐藏细胞状态。遗忘门子结构如下图所示:
其中Wf,Uf,bf为线性关系的系数和偏倚,和RNN中的类似。σ为sigmoid激活函数。
LSTM之输入门:
输入门(input gate)负责处理当前序列位置的输入,它的子结构如下图:
LSTM之细胞状态更新:
在研究LSTM输出门之前,我们要先看看LSTM之细胞状态。前面的遗忘门和输入门的结果都会作用于细胞状态C(t)。我们来看看从细胞状态C(t−1)如何得到C(t)。如下图所示:
LSTM之输出门:
有了新的隐藏细胞状态C(t),我们就可以来看输出门了,子结构如下:
BiLSTM:
前向的LSTM与后向的LSTM结合成BiLSTM。
我们对“我爱中国”这句话进行编码:
GRU:
GRU(Gate Recurrent Unit)是循环神经网络(Recurrent Neural Network, RNN)的一种。和LSTM(Long-Short Term Memory)一样,也是为了解决长期记忆和反向传播中的梯度等问题而提出来的。
GRU和LSTM在很多情况下实际表现上相差无几,那么为什么我们要使用新人GRU(2014年提出)而不是相对经受了更多考验的LSTM(1997提出)呢。
下图1-1引用论文中的一段话来说明GRU的优势所在。
图1-1 R-NET: MACHINE READING COMPREHENSION WITH SELF-MATCHING NETWORKS(2017)
简单译文:我们在我们的实验中选择GRU是因为它的实验效果与LSTM相似,但是更易于计算。
简单来说就是贫穷限制了我们的计算能力...
相比LSTM,使用GRU能够达到相当的效果,并且相比之下更容易进行训练,能够很大程度上提高训练效率,因此很多时候会更倾向于使用GRU。
LSTM上一个稍显显著的变化是门控循环单元(GRU)。它将遗忘门和输入门组合成一个“更新门”,还将细胞状态和隐藏状态合并,并进行一些其他更改。由此产生的模型比标准的LSTM模型更简单,并且越来越流行。
内部细化结构及流程请参阅人人都能看懂的GRU - 知乎
GRU输入输出的结构与普通的RNN相似,其中的内部思想与LSTM相似。
与LSTM相比,GRU内部少了一个”门控“,参数比LSTM少,但是却也能够达到与LSTM相当的功能。考虑到硬件的计算能力和时间成本,因而很多时候我们也就会选择更加”实用“的GRU
BiGRU
在单向的神经网络结构中,状态总是从前往后输出的。然而,在文本情感分类中,如果当前时刻的输出能与前一时刻的状态和后一时刻的状态都产生联系。如对这样一个句子进行选词 填空 The sea water in the deep sea is so____ that the sun does not shine.通过在 The sea water in the deep sea 和 the sun does not shine 两部分内容,我们可以更加确信此处选填 deep,这样更 有利于文本深层次特征的提取,这就需要 BiGRU 来建立这种 联系。
BiGRU 是由单向的、方向相反的、输出由这两个 GRU 的状态共同决定的 GRU 组成的神经网络模型。在每一时刻, 输入会同时提供两个方向相反的 GRU,而输出则由这两个单向 GRU 共同决定。BiGRU 的具体结构如图 4 所示。
其中:GRU( )函数表示对输入的词向量的非线性变换,把词向量编码成对应的 GRU 隐层状态。 wt 、 vt 分别表示 t 时刻双向 GRU 所对应的前向隐层状态 h t 和反向隐状态 ht 所对应的权重, t b 表示 t 时刻隐层状态所对应的偏置。
参考文献:
【神经网络】综合篇——人工神经网络、卷积神经网络、循环神经网络、生成对抗网络_黎国溥-CSDN博客
RNN LSTM GRU Attention transformer公式整理总结(超详细图文公式)_Luoyingfeng的博客-CSDN博客LSTM与BI-LSTM_lgy54321的博客-CSDN博客_bi lstm