循环神经网络

循环神经网络(Recurrent Neural Network, RNN)是一类专门处理序列数据的神经网络。与传统前馈网络不同,RNN具有循环连接,能够在时间步之间传递隐藏状态,从而捕捉序列中的时序依赖关系。

核心思想

RNN在每个时间步接收当前输入 和上一时间步的隐藏状态 ,输出当前隐藏状态

这种循环结构使RNN具有”记忆”能力,理论上可以保留序列中任意长度的历史信息。

展开计算

在训练时,RNN在时间维度上展开为一个深层的前馈网络,使用随时间反向传播算法(Backpropagation Through Time, BPTT)计算梯度并更新参数。

存在的问题

梯度消失与梯度爆炸

由于RNN在时间维度上展开后是一个很深的网络,在反向传播过程中,梯度需要沿着时间步不断连乘。当权值矩阵的最大特征值小于1时,梯度会指数级衰减(梯度消失);大于1时,梯度会指数级增长(梯度爆炸)。

  • 梯度消失:网络难以学习长距离依赖关系
  • 梯度爆炸:训练不稳定,参数更新过大

长距离依赖捕获能力弱

理论上RNN可以处理任意长度的序列,但实际中,由于梯度消失问题,RNN只能有效捕获短距离的依赖关系,难以处理序列中的长程依赖。

应用场景

  • 语言建模与文本生成
  • 机器翻译
  • 语音识别
  • 时间序列预测
  • 情感分析

变体

为了克服标准RNN的梯度消失问题,研究者提出了多种改进结构,其中最著名的是LSTM和GRU,它们通过门控机制更有效地管理长期记忆。

链接到