文章目录
1. 循环神经网络RNN(Recurrent Neural Network)
1.1 循环神经网络的提出背景
既然我们已经有了人工神经网络和卷积神经网络,为什么还要循环神经网络?
原因很简单,无论是卷积神经网络,还是人工神经网络,他们的前提假设都是:元素之间是相互独立的,输入与输出也是独立的,比如猫和狗。 但现实世界中,很多元素都是相互连接的,比如股票随时间的变化,因为我们是根据上下文的内容推断出来的,但机器要做到这一步就相当得难了。因此,就有了现在的循环神经网络,他的本质是:像人一样拥有记忆的能力。因此,他的输出就依赖于当前的输入和记忆。
1.2 循环神经网络的结构
首先,我们来看一下RNN的整体结构,是由一个个得到RNN单元依次连接形成的,因为每个单元的工作完全一致,所以可以简化为一个循环结构,这也是RNN名字的由来。“循环“体现在隐层,在隐层之间的神经元之间也建立的权连接。这里借用吴恩达DeepLearning第五课中的结构图示意:
那么,RNN单元究竟是什么样的呢?下面就是RNN单元的结构及其运算公式。
RNN反向传播算法的思路和DNN是一样的,即通过梯度下降法一轮轮的迭代,得到合适的RNN模型参数,由于我们是基于时间反向传播,所以RNN的反向传播有时也叫做BPTT(back-propagation through time)。
RNN反向传播算法详见:https://www.cnblogs.com/pinard/p/6509630.html
1.3. 双向RNN
Bidirectional RNN(双向RNN)假设当前t的输出不仅仅和之前的序列有关,并且 还与之后的序列有关。在有些情况,比如有一部电视剧,在第三集的时候才出现的人物,现在让预测一下在第三集中出现的人物名字,你用前面两集的内容是预测不出来的,所以你需要用到第四,第五集的内容来预测第三集的内容,这就是双向RNN通俗的想法。
1.4 RNN存在的问题
RNN受到短期记忆的影响。如果序列很长,他们将很难将信息从较早的时间步传送到后面的时间步。因此,如果你尝试处理一段文本进行预测,RNN可能会遗漏开头的重要信息。
在反向传播期间,RNN存在梯度消失的问题(梯度用于更新神经网络权重的值)。梯消失度问题是当梯度反向传播随着时间的推梯度逐渐收缩。如果梯度值变得非常小,则不会产生太多的学习。
因此,在递归神经网络中,获得小梯度更新的层会停止学习。那些通常是较早的层。因为这些层不再学习,RNN会忘记它在较长序列中看到的内容,因此只有短期记忆。
2. LSTM与GRU
LSTM和GRU是作为短期记忆的解决方案而创建的。它们具有称为门(gate)的内部机制,它可以调节信息流。这些门可以了解序列中哪些数据重要以进行保留或丢弃。这样,它可以将相关信息传递到长序列中进行预测。
2.1 LSTM
LSTM整体结构与RNN相似,只是在每个单元中加入了三个门控单元,分别是:
遗忘门:用来让RNN“忘记”之前没有用的信息。
更新门:用来让RNN决定当前输入数据中哪些信息将被留下来。
输出门:LSTM在得到最新节点状态
c
c
c后,结合上一时刻节点的输出
y
(
t
−
1
)
y^{(t-1)}
y(t−1)和当前时刻节点的输入
x
t
x^t
xt来决定当前时刻节点的输出。
具体的单元结构如下图所示:
那么,将这些细胞单元如RNN那样连接起来,就形成了LSTM的网络结构
2.2 GRU
GRU作为LSTM的一种变体,将忘记门和输入门合成了一个单一的更新门。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。
LSTM只能避免RNN的梯度消失(gradient vanishing),但是不能对抗梯度爆炸问题(Exploding Gradient)。梯度膨胀(gradient explosion)不是个严重的问题,一般靠裁剪后的优化算法即可解决,比如gradient clipping(如果梯度的范数大于某个给定值,将梯度同比收缩)。
梯度剪裁的方法一般有两种:
一种是当梯度的某个维度绝对值大于某个上限的时候,就剪裁为上限。
另一种是梯度的L2范数大于上限后,让梯度除以范数,避免过大。
3. Text-RNN
3.1 Text-RNN的原理
Text-RNN其实就是RNN用于文本分类的情况,TextRNN擅长捕获更长的序列信息。具体到文本分类任务中,BiLSTM从某种意义上可以理解为可以捕获变长且双向的N-Gram信息。
3.2 利用Text-RNN模型来进行文本分类
参考
[1]https://www.cnblogs.com/pinard/p/6509630.html
[2]自然语言处理之循环神经网络 - CSDN - https://blog.csdn.net/herosunly/article/details/89554214