跳到主内容

什么是循环神经网络?怎么处理序列

2026-10-06 发布 来源:我告诉你AI导航 阅读

「我爱吃苹果」和「苹果发布了新手机」,同一个词在两句话里指的是两样东西。人靠语序分辨,AI 如果只看词袋,看到的是一堆没有先后的符号。循环神经网络(RNN)就是为这个差距设计的:它按顺序读,每读一个词,把前面读过的信息一起带进来。结...

「我爱吃苹果」和「苹果发布了新手机」,同一个词在两句话里指的是两样东西。人靠语序分辨,AI 如果只看词袋,看到的是一堆没有先后的符号。循环神经网络(RNN)就是为这个差距设计的:它按顺序读,每读一个词,把前面读过的信息一起带进来。结构只有几行公式,却统治了序列建模将近十年;它记不住长距离这件事,又直接催生了今天大模型里的注意力结构。

序列建模要解决的,是顺序本身携带的信息

很多任务的答案不在单个输入里,在输入的排列里。「不」出现在句尾和出现在动词前,意思相反;股价今天的涨跌,取决于昨天和前天的走势;一段语音的第 3 秒和第 30 秒,只有在时间轴上才有意义。这类数据的共同点是长度可变、位置有意义、相邻元素相关。

全连接网络处理不了这三条:它要求固定长度的输入,且把每个位置当成独立特征,调换顺序输出不变。卷积能处理变长,但只看局部窗口,更远的依赖要靠堆层数去够。循环结构换了个思路——把时间写进计算图,让第 t 步的计算依赖第 t-1 步的结果。

同一组权重,在每个时间步复用

把五类模型放在一起看,差别不在层数,在「怎么把顺序变成计算」:

模型怎么处理序列代价失效条件
全连接网络把整段输入拼成定长向量,一次算完参数量随长度平方增长,长度一变就要重训输入长度不固定;词序信息在拼接时丢失
一维卷积用固定窗口在序列上滑动,看局部组合感受野有限,要堆很多层才够得着远处依赖跨度大于层数乘窗口;窗口外的信息进不来
普通 RNN逐步读入,隐藏状态向后传递无法并行,长序列训练慢梯度消失或爆炸,稳定记忆通常只有十几到几十步
LSTM / GRU用门控决定写入、保留、输出结构复杂,参数变多,仍要顺序计算极长依赖仍会衰减;训练依旧不能并行
注意力结构每个位置直接与所有位置算关联权重计算量随长度平方增长,需要位置编码超长序列显存吃紧;去掉位置编码就丢了顺序

取舍方向正好相反:注意力把任意两点之间的距离压成常数,代价是平方级的计算;RNN 每步的计算量固定,代价是距离越远信息越淡。

一句话的信息,怎么被压进一个向量

最朴素的循环单元只有一步运算:新的隐藏状态等于当前输入乘一个矩阵,加上上一步状态乘另一个矩阵,再过一次非线性函数。这两组矩阵在所有时间步共享,这是它能处理任意长度序列的原因——参数数量与序列长度无关。

读到最后一个词时,隐藏状态就是整句话的压缩表示,可以接分类层做情感判断。训练用时间反向传播:把每一步的误差沿时间轴往回传,逐层更新那几组共享参数。麻烦的根也埋在这里——反向传播的路径长度等于序列长度。

三个结构性缺陷,一个比一个难绕

第一个是梯度消失。误差往回传时,每经过一步就要乘一次权重矩阵和激活函数的导数。这些因子的量级普遍小于 1,连乘三十次之后梯度接近零,远处的参数等于没被训练。梯度爆炸是它的镜像:因子大于 1 时连乘溢出,损失突然变成 NaN,通常靠梯度裁剪压住。

第二个是无法并行。第 t 步必须等第 t-1 步算完,一条序列只能串行推进。GPU 擅长的是一批数据同时算,而 RNN 在时间维度上天生串行。序列越长,硬件利用率越低。

第三个是长依赖衰减。就算梯度没有消失,信息本身也在传递中被反复混合:每个时间步都做一次矩阵乘法和压缩,几十步之后,早期输入的痕迹已经被后来的输入稀释得差不多。实际表现是普通 RNN 能稳定利用的上下文通常只有几十步,再长就开始遗忘。时间序列里为什么要看滞后项讲的是同一个直觉在统计侧的版本。

门控能缓解,绕不开那三件事

LSTM 的思路是给状态加一条传送带:一条几乎不做变换的单元状态,用输入门、遗忘门、输出门控制写入多少、保留多少、输出多少。梯度的回传路径上多了一条近似恒等的通道,连乘衰减被大幅削弱,这是它能记住几百步的原因,LSTM 的门具体怎么设计有更细的拆解。GRU 把三个门简化成两个,参数更少,多数任务上效果接近。

门控只解决了第一个缺陷的一半。串行计算还在,训练速度上不去;极长依赖仍会衰减,只是把失效点从几十步推到了几百步;参数变多,小数据上更容易过拟合。它是一次有效的工程改良,够不上结构性突破。

传不远的记忆,是它的结构性上限

RNN 的位置要放准。它在短序列、强时序、资源受限的场景里仍然好用:传感器读数、点击流、嵌入式设备上的关键词检测,参数量小、推理延迟稳定、部署成本低。这些场景里,平方级开销反而是负担。

它做不到的三件事:并行训练,序列一长训练时间线性上涨;精确的长距离取用,让它从第一千个 token 里取一个事实,可靠性远低于注意力;位置级的可解释,隐藏状态是连续向量,说不清哪一步贡献了多少。注意力机制之所以取代它成为主流,本质是把「记住」换成了「随时能查到」——当存储不再是瓶颈,这个交换就非常划算。

速查:理解 RNN 的四个关键点

  • 顺序被写进计算图,靠隐藏状态一步步往后传。
  • 权重在所有时间步共享,参数量与序列长度无关。
  • 梯度沿时间连乘,衰减与爆炸都来自这一步。
  • 串行决定了它快不起来,衰减决定了它记不远。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]