RNN

分类: 网络架构

RNN

定义

循环神经网络是一种专为处理序列数据设计的神经网络,通过隐藏状态在时间步之间传递信息,使网络具有对历史输入的”记忆”能力。

数学形式

ht=tanh(Whhht1+Wxhxt+bh)h_t = \tanh(W_{hh} h_{t-1} + W_{xh} x_t + b_h) yt=Whyht+byy_t = W_{hy} h_t + b_y

xtx_t: 时刻 tt 的输入向量

hth_t: 时刻 tt 的隐藏状态

Whh,Wxh,WhyW_{hh}, W_{xh}, W_{hy}: 分别为隐藏-隐藏、输入-隐藏、隐藏-输出的权重矩阵

bh,byb_h, b_y: 偏置项

核心要点

通过权重共享(所有时间步共用同一组参数)实现对任意长度序列的处理

梯度消失/爆炸问题是原始 RNN 的核心缺陷,导致难以捕捉长距离依赖

反向传播通过时间(BPTT)是 RNN 的标准训练算法,将计算图沿时间展开后应用 Backpropagation

双向 RNN(BiRNN)同时利用过去和未来的上下文信息,广泛用于序列标注任务

RNN 的变体(LSTM、GRU)通过门控机制缓解梯度消失问题

已被 Transformer 架构在大多数 NLP 任务上超越,但在某些低延迟/流式场景仍有应用

代表工作

Elman (1990): “Finding Structure in Time”,提出 Elman 网络(简单 RNN)

Rumelhart et al. (1986): 提出 BPTT 训练算法

Schuster & Paliwal (1997): 提出双向 RNN

Cho et al. (2014): 提出 GRU(Gated Recurrent Unit),简化版门控 RNN

相关概念

LSTM

Backpropagation

Language Model

Transformer

Multi-Head Self-Attention