RNN 与 LSTM:序列建模入门

前馈网络假设输入相互独立。但语言、音频、时序信号是前后相关的。循环神经网络(RNN)引入隐藏状态,把上一步的信息带入下一步,从而建模序列依赖。

RNN 的基本结构

每一步,RNN 用当前输入与上一时刻隐藏状态计算新的隐藏状态,再得到输出。同一套参数在时间上复用,因此能处理变长序列。但简单 RNN 在长序列上梯度会沿时间连乘,要么消失要么爆炸,难以学到长距离依赖。

LSTM 的门控

长短期记忆(LSTM)用输入门、遗忘门、输出门与细胞状态来控制信息流动。遗忘门决定保留多少历史,输入门决定写入多少新信息,细胞状态像一条「高速公路」让梯度更容易回传,从而缓解长程遗忘。

GRU 与其它

门控循环单元(GRU)把 LSTM 的门简化合并,参数更少、训练更快,在很多任务上与 LSTM 表现接近。即便如此,当序列极长或并行需求高时,基于注意力的模型(如 Transformer)往往更优。

import torch.nn as nn

rnn = nn.LSTM(input_size=64, hidden_size=128, batch_first=True)
x = torch.randn(8, 20, 64)        # batch, seq_len, feature
out, (h, c) = rnn(x)              # out 含每步隐藏状态

怎么选

短序列、轻量场景可用 GRU/LSTM;需要强并行或超长依赖时优先 Transformer。RNN 类仍适合流式、逐步生成等必须按时间展开的场景。

小结

RNN 用隐藏状态传递历史,适合序列建模;其梯度问题由 LSTM/GRU 的门控机制缓解。它们是序列模型的经典方案,但在长程与并行需求下正逐步让位于注意力模型。

参考与延伸阅读

本文累计阅读