一、RNN介绍
之前我们学习了卷积神经网络(CNN),而传统神经网络无法训练出具有顺序的数据且模型搭建时没有考虑数据上下之间的关系。所以我们提出了循环神经网络。
。

循环神经网络(Recurrent Neural Network,RNN)是一种用于处理序列数据的神经网络架构。与传统神经网络(Feedforward Neural Network, FNN)不同,RNN能够在处理序列输入时具有记忆性,可以保留之前输入的信息并继续作为后续输入的一部分进行计算。
序列数据:如文本、语音、股票、时间序列等数据,当前数据内容与前面的数据有关。
1.基本结构
RNN 的基本结构包含以下几个部分:
- 输入层(Input Layer):接收序列中的当前输入。
- 隐藏层(Hidden Layer):包含循环连接,能够接收来自上一时间步的隐藏状态。
- 输出层(Output Layer):基于隐藏层的当前状态生成输出。
RNN 的隐藏层在每一个时间步都会更新其状态,这个状态不仅取决于当前的输入,还取决于上一个时间步的隐藏状态。这使得 RNN 能够捕捉序列数据中的时间依赖性。
2.隐藏态特点
特点:引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据提取特征,接着再转换为输出。

如上图,最开始我们输入,导入最初的隐藏态
通过RNN计算公式:

注意: 1、W是隐藏状态到隐藏状态的权重矩阵,U是输入到隐藏状态的权重矩阵,b是隐藏层的偏置向量,f 是激活函数(如 tanh 或 ReLU)。在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点;
2、LSTM和GRU中的权值则不共享。
3.输出

RNN结构中输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的
根据输出结果的计算公式:

V是隐藏状态到输出的权重矩阵,c是输出的偏置向量,g 是输出层的激活函数(如 softmax 等)。
4.RNN循环由来与局限

上图中可以看出,RNN的网络结构中包含了一个环路,这个环路使得数据可以在网络中不断循环。是RNN的核心特征,也是其被称为“循环”神经网络的关键所在。通过这个环路,RNN可以一边记住过去的数据,一边更新到最新的数据,从而实现对序列数据的处理。
局限性:
当我们所需要的相关信息和当前预测位置之间的间隔较远时,可能会影响学习效率。这是由于反向传播过程中梯度的逐层累乘,导致梯度消失或爆炸,从而使得网络无法有效地学习到长时间跨度的依赖关系。
二、LSTM网络
1.LSTM介绍
循环神经网络(Recurrent Neural Networks,RNN)是一种特殊的神经网络,具有能够处理序列数据的能力,然而,RNN在处理长序列时面临长期依赖问题,即当需要考虑较远过去的输入信息时,可能会由于反向传播过程中梯度的逐层累乘,导致梯度消失或爆炸,从而使得网络无法有效地学习到长时间跨度的依赖关系。
为了解决RNN的长期依赖问题,长短时记忆网络(Long Short-Term Memory,LSTM)应运而生。LSTM是RNN的一种变种,具有更强的能力来处理长距离依赖关系。其核心特点是使用了门控单元(gate units)来控制信息的流动,从而避免了梯度消失问题。
LSTM的介绍:是一种RNN特殊的类型,可以学习长期依赖信息。大部分与RNN模型相同,但它们用了不同的函数来计算隐状态。
LSTM (长短时记忆网络)或 GRU(门控循环单元)只保留相关信息来进行预测,并忘记不相关的数据。简单说,因记忆能力有限,记住重要的,忘记无关紧要的。它们是解决短时记忆问题的解决方案,具有称为“门”的内部机制,可以调节信息流。

tanh 函数(双曲正切函数)是神经网络中常用的激活函数。它的数学表达式为,其函数值的范围在-1到1之间。
在神经网络里,它能对神经元的输出进行变换,将输入值映射到\-1到1这个区间内。这样的特性有助于调节神经网络各层的输出,让数据的分布更规整,从效果上看,类似于对每一层的输出做了一次归一化操作,能使神经网络在训练过程中更稳定,提升模型的性能等。
2.LSTM的门结构
LSTM的门控单元包括遗忘门(forget gate)、输入门(input gate)和输出门(output gate)。这些门控单元会根据输入数据和内部状态来决定哪些信息需要保留,哪些信息需要丢弃。

1.遗忘门


功能:决定应丢弃哪些关键词信息。
步骤:
来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,然后与上述中的C值(即细胞状态,上一轮所保留的关键信息)相乘,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。最后,我们将所得结果导入下图红色矩形框的位置。
2.输入门

功能:用于更新细胞状态。
步骤:
1、首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。
2、将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。
3、再次将所得结果导入图中红色矩形框,但是我们这里需要将该结果与前面遗忘门所得结果进行相加,即向遗忘门中的细胞状态添加新的关键信息得到最终的细胞状态。
3.输出门

功能:用来确定下一个隐藏状态的值。
步骤:
1、将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数,进行归一化。
2、将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。
2813

被折叠的 条评论
为什么被折叠?



