RNN概述

1. RNN简介

1.1 什么是RNN?

循环神经网络(Recurrent Neural Network, RNN)是一类专门处理序列数据的神经网络。与传统的前馈神经网络(Feedforward Neural Network)不同,RNN通过引入循环结构,使其能够记住之前的输入信息,从而在处理时间序列或序列数据时具有“记忆”能力。RNN特别适合处理以下场景:

  • 自然语言处理(NLP):如机器翻译、文本生成、情感分析。
  • 时间序列分析:如股票价格预测、语音信号处理。
  • 视频序列分析:如动作识别。

1.2 为什么需要RNN?

传统的前馈神经网络假设输入数据是独立同分布的,无法捕捉数据之间的时序依赖关系。例如,在句子“我爱学习人工智能”中,“人工智能”依赖于前文“学习”的语义。RNN通过在时间步之间共享权重,解决了序列数据的建模问题。


2. RNN的核心结构与原理

2.1 RNN的基本结构

RNN的核心是一个循环单元,它在每个时间步(time step)接收当前输入 x t x_t xt 和上一时间步的隐藏状态 h t − 1 h_{t-1} ht1,并输出当前时间步的隐藏状态 h t h_t ht。其结构可以用以下公式描述:

h t = σ ( W x h x t + W h h h t − 1 + b h ) h_t = \sigma(W_{xh}x_t + W_{hh}h_{t-1} + b_h) ht=σ(Wxhxt+Whhht1+bh)

o t = W h o h t + b o o_t = W_{ho}h_t + b_o ot=Whoht+bo

其中:

  • x t x_t xt:时间步 t t t 的输入向量。
  • h t h_t ht:时间步 t t t 的隐藏状态(包含“记忆”)。
  • h t − 1 h_{t-1} ht1:上一时间步的隐藏状态。
  • W x h W_{xh} Wxh W h h W_{hh} Whh W h o W_{ho} Who:权重矩阵,分别对应输入到隐藏、隐藏到隐藏、隐藏到输出的权重。
  • b h b_h bh b o b_o bo:偏置项。
  • σ \sigma σ:激活函数,通常是tanh或ReLU,用于引入非线性。
  • o t o_t ot:时间步 t t t 的输出(可选,视任务而定)。

RNN的循环结构使得权重 W h h W_{hh} Whh 在所有时间步中共享,这既是其强大之处(捕捉时序依赖),也是其局限性(梯度消失/爆炸)。

2.2 RNN的展开

为了理解RNN的计算过程,可以将其按时间步展开,如下图所示(文字描述):

  • 时间步 t = 1 t=1 t=1:输入 x 1 x_1 x1,初始隐藏状态 h 0 h_0 h0(通常初始化为零向量),计算 h 1 h_1 h1
  • 时间步 t = 2 t=2 t=2:输入 x 2 x_2 x2,结合 h 1 h_1 h1,计算 h 2 h_2 h2
  • 以此类推,直到时间步 t = T t=T t=T

展开后,RNN可以看作一个深层网络,其中每一层对应一个时间步。这种展开形式便于理解RNN的训练过程(反向传播)。

2.3 前向传播

RNN的前向传播过程可以总结为:

  1. 对于每个时间步 t t t,根据输入 x t x_t xt 和上一时间步的隐藏状态 h t − 1 h_{t-1} ht1,计算当前隐藏状态 h t h_t ht
  2. (可选)根据任务需求,基于 h t h_t ht 计算输出 o

你可能感兴趣的:(DL,rnn,人工智能,深度学习)