零基础学AI人工智能:10.5 RNN 循环神经网络

承接上一篇针对二维网格数据设计的卷积神经网络,深度学习领域另一类核心网络架构面向序列数据场景,即循环神经网络(Recurrent Neural Network, RNN)。RNN 通过内部的状态传递机制捕捉序列数据的前后依赖关系,是自然语言处理、时序预测等序列任务的基础网络。本篇系统讲解 RNN 的核心定义、结构组成、计算逻辑与技术特性。

一、RNN 概述

1.1 核心定义

循环神经网络是专门用于处理序列化数据的神经网络架构。序列数据的核心特征是数据按顺序排列,相邻元素存在上下文关联,例如文本、语音、时间序列数据等。RNN 通过在网络内部维护隐藏状态,将上一时刻的信息传递到当前时刻,使网络具备对序列历史信息的记忆能力,从而建模序列的上下文依赖关系。

1.2 应用场景

RNN 及其衍生结构是序列建模的基础方案,主流应用场景包括:

  1. 自然语言处理领域:文本生成、机器翻译、情感分析、命名实体识别等;
  2. 语音领域:语音识别、语音合成;
  3. 时序数据领域:时间序列预测、异常检测;
  4. 生成类任务:音乐生成、代码生成等序列生成场景。

二、RNN 核心组成结构

面向文本处理的标准 RNN 网络,主要由词嵌入层、循环层、全连接输出层三部分组成。

2.1 词嵌入层(Embedding)

词嵌入层是文本类神经网络的前置基础组件,作用是将离散的词汇索引转换为低维稠密的向量表示。 传统独热编码的向量维度高、信息稀疏,无法表征词汇间的语义关联;词嵌入通过可训练的向量矩阵,为每个词汇映射一个固定维度的稠密向量,向量在特征空间中的距离可以对应词汇的语义相似度,使网络能够学习到词汇的语义特征。

词嵌入层的输入为词汇对应的整数索引张量,输出为对应维度的词向量张量。

2.2 循环网络层

循环层是 RNN 的核心结构,负责序列信息的传递与记忆。

计算逻辑

个时间步的计算包含两路输入:

  1. 当前时刻的输入特征,如当前词的词向量;
  2. 上一个时间步输出的隐藏状态。

两路输入经过线性变换与非线性激活后,得到当前时刻的隐藏状态;当前隐藏状态一方面传递到下一个时间步继续迭代,另一方面可映射得到当前时刻的输出结果。

2.3 隐藏状态的作用

隐藏状态是 RNN 记忆能力的载体,它整合了截至当前时刻的全部序列上下文信息,随着时间步逐步迭代更新。通过隐藏状态的传递,网络能够理解序列的上下文逻辑,支持处理长度不固定的序列数据。

2.4 多层堆叠结构

当网络堆叠多层循环层时,上一层循环层的输出作为下一层循环层的输入。最终通常取最后一层的全部时间步输出,或最终时刻的隐藏状态,接入后续的全连接层,完成分类、预测等最终任务。

三、张量维度规范

在标准实现中,RNN 层的输入输出遵循固定的维度约定:

  1. 输入序列张量维度:(seq_len, batch_size, input_size),依次对应序列长度、批次大小、输入特征维度;
  2. 初始隐藏状态维度:(num_layers, batch_size, hidden_size),依次对应循环层数、批次大小、隐藏状态维度;
  3. 输出张量维度:(seq_len, batch_size, hidden_size),对应每个时间步的输出结果;
  4. 最终隐藏状态维度:(num_layers, batch_size, hidden_size),对应最后一个时间步各层的隐藏状态。

四、RNN 的技术特性

4.1 核心优势

  1. 天然适配序列数据,能够处理变长的序列输入;
  2. 通过隐藏状态传递上下文信息,具备时序记忆能力;
  3. 不同时间步复用同一套网络参数,参数量不随序列长度增长。

4.2 固有局限

原生 RNN 在处理长序列时,容易出现梯度消失与梯度爆炸问题,难以捕捉长距离的序列依赖关系。针对这一缺陷,后续衍生出 LSTM、GRU 等改进型循环网络,通过门控机制优化长序列的信息传递能力。

五、总结

循环神经网络是序列建模的基础架构,它通过隐藏状态的迭代传递实现了对序列上下文的建模,为自然语言处理等序列任务提供了基础的技术方案。理解 RNN 的结构原理与记忆机制,是学习后续更复杂序列模型的必要基础。 下一篇我们将讲解 Transformer 架构,分析其如何通过自注意力机制突破循环网络的长序列建模瓶颈。