RNN 循环神经网络
Recurrent Neural Network
是一种用于处理序列数据
的神经网络架构。与传统神经网络不同,RNN 具有记忆功能,能够捕捉序列中的时间依赖关系。
RNN 的核心在于循环结构,这里以最简单的 Elman RNN 为例说明。对于一个序列输入
其中:
是当前时刻的隐藏状态 是前一时刻的隐藏状态,由 和 共同决定 是当前时刻的输入 和 是权重矩阵 是偏置项 是激活函数(通常为 tanh)
结构
是时刻的输出,例如我们希望预测一个句子的下一个单词,则输出希望是我们字典中所有词的概率组成的向量
TIP
传统的神经网络在每一层采用不同的参数,而 RNN 在所有步中采用共同的参数
RNN 的优缺点
优点
- 处理序列数据:RNN 能够处理任意长度的序列数据
- 记忆能力:RNN 能够记住之前的信息,从而捕捉时间依赖关系
缺点
- 梯度消失/爆炸问题:RNN 在训练过程中容易出现梯度消失或爆炸的问题,导致难以训练长序列
- 计算效率低:RNN 的计算是逐步进行的,无法并行化处理
前向传播
反向传播
推导
对任意
假设损失函数为交叉熵损失:
交叉熵损失
其中,
有:
由于
所以:
设:
例子
若
假设:
则:
定义序列索引
定义最后的序列索引位置为
时间
同样的,
例子
若