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 的门控机制缓解。它们是序列模型的经典方案,但在长程与并行需求下正逐步让位于注意力模型。
参考与延伸阅读
- LSTM 原始论文(Hochreiter 与 Schmidhuber, 1997, Neural Computation)。已核验。https://www.bioinf.jku.at/content/publications/older/7504.pdf
- 门控循环单元 GRU(Cho 等, 2014)。已核验。https://arxiv.org/abs/1406.1078
- 序列建模与梯度问题概述见 Wikipedia「Long short-term memory」。待核实。https://en.wikipedia.org/wiki/Long_short-term_memory
本文累计阅读 — 次