一、 RNN介绍
循环神经网络(Recurrent Neural Network,简称 RNN)是一种专门用于处理序列数据的神经网络,在自然语言处理、语音识别、时间序列预测等领域有广泛应用。
传统神经网络
无法训练出具有顺序的数据。模型搭建时没有考虑数据上下之间的关系。

提出一种新的神经网络
RNN(Recurrent Neural Network)在处理序列输入时具有记忆性,可以保留之前输入的信息并继续作为后续输入的一部分进行计算。

RNN的特点:引入了隐状态h(hidden state)的概念,隐状态h可以对序列形的数据提取特征,接着再转换为输出。


(1)、在计算时,每一步使用的参数U、W、b都是一样的,也就是说每个步骤的参数都是共享的,这是RNN的重要特点;
(2)、下文的LSTM和GRU中的权值则不共享。
RNN结构中输入是x1, x2, .....xn,输出为y1, y2, ...yn,也就是说,输入和输出序列必须要是等长的。
RNN的局限性:
当出现"我的职业是程序员,...,我最擅长的是电脑"。当需要预测最后的词"电脑"。当前的信息建议下一个词可能是一种技能,但是如果我们需要弄清楚是什么技能,需要先前提到的离当前位置很远的"职业是程序员"的上下文。这说明相关信息和当前预测位置之间的间隔就变得相当的大。
在理论上,RNN绝对可以处理这样的长期依赖问题。人们可以仔细挑选参数来解决这类问题中的最初级形式,但在实践中,RNN则没法太好的学习到这些知识。
原因是:梯度会随着时间的推移不断下降减少,而当梯度值变得非常小时,就不会继续学习。
二、LSTM

长短期记忆网络(Long Short - Term Memory,LSTM)是一种特殊的循环神经网络(RNN),它在处理序列数据时,能有效解决传统 RNN 存在的梯度消失和梯度爆炸问题,从而更好地捕捉序列中的长期依赖关系。
原理:
传统 RNN 在处理长序列时,由于在反向传播过程中梯度会不断相乘,容易导致梯度消失(梯度趋近于 0)或梯度爆炸(梯度变得非常大),使得模型难以学习到序列中的长期依赖信息。LSTM 通过引入门控机制,能够选择性地记忆和遗忘信息,从而有效解决这一问题。
结构
LSTM 单元主要由三个门(输入门、遗忘门、输出门)和一个细胞状态组成:
遗忘门(Forget Gate):
功能:决定应丢弃哪些关键词信息。
步骤:来自前一个隐藏状态的信息和当前输入的信息同时传递到 sigmoid 函数中去,输出值介于 0 和 1 之间,越接近 0 意味着越应该丢弃,越接近 1 意味着越应该保留。
输入门(Input Gate):
功能:用于更新细胞状态。
步骤:1、首先将前一层隐藏状态的信息和当前输入的信息传递到 sigmoid 函数中去。将值调整到 0~1 之间来决定要更新哪些信息。0 表示不重要,1 表示重要。2、将前一层隐藏状态的信息和当前输入的信息传递到 tanh 函数中去,创造一个新的侯选值向量。最后将 sigmoid 的输出值与 tanh 的输出值相乘,sigmoid 的输出值将决定 tanh 的输出值中哪些信息是重要且需要保留下来的。
**细胞状态(Cell State):**它是 LSTM 的核心,用于保存序列中的长期信息。在每个时间步,细胞状态会根据遗忘门和输入门的输出进行更新。
输出门(Output Gate):
功能:用来确定下一个隐藏状态的值。
步骤:1、将前一个隐藏状态和当前输入传递到 sigmoid 函数中,然后将新得到的细胞状态传递给 tanh 函数。2、将 tanh 的输出与 sigmoid 的输出相乘,以确定隐藏状态应携带的信息。再将隐藏状态作为当前细胞的输出,把新的细胞状态和新的隐藏状态传递到下一个时间步长中去。

sigmoid函数图像:

tanh函数图像:

三、总结
RNN:在每个时间步,接收当前输入和上一时刻的隐藏状态,通过激活函数计算当前隐藏状态和输出,信息传递较为直接,但容易出现梯度消失或爆炸问题,导致长序列信息难以有效传递和利用。
LSTM:在每个时间步,输入门决定当前输入信息有多少要存入细胞状态,遗忘门控制细胞状态中需要遗忘的信息,输出门根据细胞状态和当前隐藏状态决定输出内容。这种机制使得 LSTM 能够选择性地记忆和遗忘信息,更有效地处理长序列中的关键信息。