从RNN讲起(RNN、LSTM、GRU、BiGRU)——序列数据处理网络

RNN(Recurrent Neural Network,循环神经网络)

1. 什么是RNN?

循环神经网络是一类用于处理序列数据的神经网络,它一般以序列数据作为输入,通过网络内部的结构设计有效地捕捉序列之间的关系,以序列的形式输出。与传统的前馈神经网络不同,RNN具有"记忆"能力,通过在网络中引入循环连接,使得其可以利用先前的输入信息来影响当前的输出。这使得RNN非常适合处理具有时间依赖性或顺序性的任务


2. 经典RNN的结构

在介绍RNN之前,需要先了解最基本的单层网络,结构如图所示: 在这里插入图片描述

其含义是:输入 x x x,经过变换 W x + b Wx+b Wx+b 和激活函数 f f f,得到输出 y y y
常用激活函数主要有:在这里插入图片描述

在实际应用中,我们会遇到很多序列型的数据:在这里插入图片描述

以自言语言处理问题为例,简单来说,这可以看成是一句话, x 1 x_1 x1可以看做是第一个单词, x 2 x_2 x2可以看做是第二个单词,以此类推。


为了建模这种序列问题,RNN引入了 隐藏状态(hidden state) h h h 的概念。隐状态 h h h可以对序列类型的数据提取特征,然后再转换为输出。

h 1 h_1 h1 的计算为例:在这里插入图片描述
其中:圆圈或方框表示的是向量一个箭头就表示对该向量做一次变换 (例如上图中表示对 h 0 h_0 h0 x 1 x_1 x1 各做了一次变换)。

具体来说, h 1 h_1 h1 是基于上一个隐藏层的状态 h 0 h_0 h0 和当前的输入 x 1 x_1 x1 计算得到来的。泛化到任意时刻就是 h t = f ( W h t − 1 + U x t + b t ) h_t = f(Wh_{t-1}+Ux_t+b_t) ht=f(Wht1+Uxt+bt),这里激活函数 f f f 一般是tanh、sigmoid、ReLU等非线性激活函数。在实践中, h t h_t ht 一般只包含前面若干步而不是所有步的隐藏状态。

h 2 h_2 h2 的计算与 h 1 h_1 h1 相似:在这里插入图片描述

计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数是共享的,这是RNN的重要特点。 而在LSTM中权重是不共享的。
那为什么RNN的权值是共享的呢?是因为RNN的权值是在同一个向量中,只是不同的时刻而已。【进一步解释权重共享,指的是 x i x_i xi 在不同的时刻 i i i 乘的一直都是 U h i h_i hi 在不同的时刻 i i i 乘的一直都是 W。在 LSTM 中因为多出了门的概念,每个门对应的 W是不同的(即不同的门权重不共享),但是相同的门之间的 W 是共享的。】


依次计算剩下的(使用相同的参数U、W和b):在这里插入图片描述

到此,我们得到了所有的隐藏状态 h 1 h_1 h1 h 2 h_2 h2 h 3 h_3 h3 h 4 h_4 h4

RNN的输出通过隐藏状态进行计算:在这里插入图片描述

正如前面提到的,一个箭头就表示对向量做一次类似于 f ( W x + b ) f(Wx+b) f(Wx+b) 的变换,这里箭头表示对 h 1 h_1 h1 进行一次变换,得到输出 y 1 y_1 y1
剩下的输出可以类似得到(使用相同的参数 V 和 c):在这里插入图片描述

到此为止,得到了所有的输出,这就是经典的RNN结构,输入和输出序列是等长的。


通过上面的描述,我们知道RNN是包含循环的网络,在这个循环的结构中,每个神经网络的模块,读取到某个输入 x t x_t xt,并输出一个值 y t y_t yt,然后不断循环,使得信息可以从当前步传递到下一步。RNN可以被看做是同一神经网络的多次复制,每个神经网络模块会把消息传递给下一个,将这个循环展开:

在这里插入图片描述

链式的特征揭示了RNN本质上是与序列相关的,它们是对这类数据的最自然的神经网络架构。


3. RNN的主要特点

循环连接:RNN的核心在于它的循环连接,即网络的输出会作为下一个时间步的输入,这使得网络能够保持对之前信息的记忆。

参数共享:在RNN中,无论序列的长度如何,使用的权重和参数是共享的。

记忆能力:RNN能够记住序列中的信息,这使得它在处理时间序列数据、自然语言处理等领域表现出色。


4. RNN存在问题——长期依赖(Long-TermDependencies)问题

有时候,我们仅仅需要知道先前的信息来执行当前的任务。例如,我们有一个语言模型用来基于先前的词来预测下一个词。如果我们试着预测这句话中 “the clouds are in the sky” 最后的这个词 “sky”,我们并不再需要其他的信息,因为很显然下一个词应该是sky。在这样的场景中,相关的信息和预测的词位置之间的间隔是非常小的,RNN可以学会使用先前的信息
在这里插入图片描述

但是同样会有一些更加复杂的场景。比如我们试着去预测 “I grew up in France…I speak fluent French” 最后的词 “French”。当前的信息建议下一个词可能是一种语言的名字,但是如果我们需要弄清楚是什么语言,我们是需要先前提到的离当前位置很远的 “French” 的上下文。这说明相关信息和当前预测位置之间的间隔就肯定变得相当的大。不幸的是,在这个间隔不断增大时,RNN会丧失学习到连接如此远的信息的能力。
在这里插入图片描述

换句话说, RNN 会受到短时记忆的影响。如果一条序列足够长,那它们将很难将信息从较早的时间步传送到后面的时间步。

因此,如果你正在尝试处理一段文本进行预测,RNN 可能从一开始就会遗漏重要信息。在反向传播期间(反向传播本质是通过不断缩小误差去更新权值,从而不断去修正拟合的函数),RNN 会面临梯度消失的问题。

因为梯度是用于更新神经网络的权重值(新的权值 = 旧权值 - 学习率*梯度),梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。

在这里插入图片描述

换言之,在递归神经网络中,获得小梯度更新的层会停止学习—— 那些通常是较早的层。 由于这些层不学习,RNN会忘记它在较长序列中以前看到的内容,因此RNN只具有短时记忆

而梯度爆炸则是因为计算的难度越来越复杂导致。

然而,幸运的是,有个RNN的变体——LSTM,可以在一定程度上解决梯度消失和梯度爆炸这两个问题!



LSTM(Long Short-Term Memory,长短期记忆网络)

1. 什么是LSTM?

长短期记忆网络(LSTM, Long Short-Term Memory)是一种特殊的循环神经网络RNN,设计用来解决传统RNN在处理长序列数据时遇到的梯度消失和梯度爆炸问题。

LSTM 网络的核心是三个门的机制:遗忘门(forget gate)输入门(input gate)输出门(output gate)。这些门通过自适应的方式控制信息的流动,从而实现对长期依赖信息的捕捉。

2. LSTM的网络结构

2.1 与RNN的不同之处

所有的RNN都具有一种重复神经网络模块的链式的形式。在标准的RNN中,这个重复的模块只有一个非常简单的结构,例如一个tanh层。

激活函数tanh的作用在于帮助调节流经网络的值,使得数值始终限制在-1到1之间。在这里插入图片描述

在这里插入图片描述

LSTM也同样是这种结构,但是重复的模块有一个不同的结构。具体来说,RNN重复单一的神经网络层,LSTM中的重复模块则包含四个交互的层,三个Sigmoid和一个tanh层,并以一种非常特殊的方式进行交互。

图中,每一条黑线传输着一整个向量,从一个节点的输出到其他节点的输入。粉色的圈代表pointwise的操作,诸如向量的和,而黄色的矩阵就是学习到的神经网络层。合在一起的线表示向量的连接,分开的线表示内容被复制,然后分发到不同的位置。
在这里插入图片描述

在这里插入图片描述

上图中,σ表示Sigmoid 激活函数,与tanh不同,sigmoid把值压缩到0到1之间。在这里插入图片描述

这样的设置有助于更新或忘记信息:

  • 因为任何数乘以 0 都得 0,这部分信息就会剔除掉;
  • 同样的,任何数乘以 1 都得到它本身,这部分信息就会完美地保存下来

相当于要么是1则记住,要么是0则忘掉,所以还是这个原则:因记忆能力有限,记住重要的,忘记无关紧要的。

2.2 LSTM核心

记忆细胞(Memory Cell) 是LSTM网络的核心,负责在整个序列处理过程中保持和更新长期依赖信息。记忆单元的结构相对简单,主要由一个或多个神经元组成,其状态通过时间步传递,仅通过线性方式更新。

在这里插入图片描述
LSTM有通过精心设计的称作为“门”的结构来去除或者增加信息到记忆细胞状态的能力。门是一种让信息选择式通过的方法。他们包含一个sigmoid神经网络层和一个pointwise乘法的非线性操作。

0代表“不许任何量通过”,1就指“允许任意量通过”!从而使得网络就能了解哪些数据是需要遗忘,哪些数据是需要保存。在这里插入图片描述


2.3 遗忘门(Forget Gate)

LSTM第一步是决定我们会从细胞状态中丢弃什么信息,这个决定通过一个称为 “遗忘门” 的结构完成。

遗忘门会读取上一个输出 h t − 1 h_{t-1} ht1 和当前输入 x t x_t xt,做一个sigmoid的非线性映射,然后输出一个向量 f t f_t ft(该向量每一个维度的值都在0到1之间,1表示完全保留,0表示完全舍弃,相当于记住了重要的,忘记了无关紧要的),最后与细胞状态 C t − 1 C_{t-1} Ct1 相乘。

在这里插入图片描述

  • W f W_f Wf 权值是不共享的: f t = σ ( W f h h t − 1 + W f x x t + b f ) f_t = \sigma(W_{fh}h_{t-1}+W_{fx}x_t+b_f) <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值