BPTT

RNN的反向传播算法为BPTT,全称为Back Propagation Through Time,即沿时间轴的反向传播。

RNN的正向计算链路包括两个方向:

  1. 和前馈网络一样,从输入层到输出层,即:的计算链路。

  2. 沿着时间步从左到右,即:的计算链路。

在利用RNN进行文本分类(图a)的例子中,RNN最后一个时间步隐藏层的输出会作为整个序列的表征 (即特征),在经过输出层之后 (Linear + Softmax),最后输出:

其中Y为表示预测输出的随机变量,概率的预测公式为:

再计算交叉熵损失:

y为标注的真值。

我们来看一下这个网络反向传播的过程:

(1) 计算的梯度:

同时计算的梯度:

(2) 计算通过传播过来的的梯度:

同时计算通过传播过来的的梯度:

(3) 计算通过传播过来的的梯度,并与之前计算的梯度累加:

同时计算通过传播过来的的梯度,并进行梯度累加:

(4) 计算通过传播过来的的梯度,并与之前计算的梯度累加:

同时计算通过传播过来的的梯度,并进行梯度累加:

(5) 计算通过传播过来的的梯度,并与之前计算的梯度累加:

同时计算通过传播过来的梯度:

当我们解决的问题为序列标注时 (图b),每个时间步的输出都会用于计算损失函数,因此梯度会有更多来源,在此就不进行详细推导了。

RNN的缺陷

RNN存在沿时间步传播的梯度,因此,序列长度在某种程度上可以看作是网络的"深度"。梯度传播的步数(即偏导相乘的次数)越大,梯度消失或梯度爆炸出现的概率越大。在RNN反向传播的过程中,如果发现梯度的幅度超过一定的阈值,则需要进行截断 (最大取该阈值),防止梯度爆炸的发生。此外,RNNCell的激活函数一般采用Tanh或ReLU,也是为了缓解梯度消失的程度。(复习:梯度消失和梯度爆炸)

同时,随着时间步的增加,序列中靠前位置的输入特征,它们的影响也会随着时间步逐渐衰减,造成信息的遗忘,影响模型序列建模的效果。

相关推荐
不要生病了1 小时前
Brain-JEPA:用功能梯度定位与时空遮蔽预训练 fMRI 基础模型
人工智能·深度学习
棣廷2 小时前
初识深度学习——数据增强与模型保存
人工智能·深度学习
不要生病了2 小时前
Through Their Eyes:用简单对齐实现跨被试与跨数据集视觉脑解码
人工智能·深度学习
一木 之林2 小时前
深度学习-计算优化与分布式训练-111-128
人工智能·深度学习
夜瞬2 小时前
Merge、Ensemble 与 Cooperate:一文读懂大语言模型协同
人工智能·深度学习·语言模型
羞儿12 小时前
人体姿态估计系统知识框架
深度学习·计算机视觉·姿态估计·行为识别
Easy_API12 小时前
从“有多少卡“到“卖多少 Token“:算力的标尺正在换
大数据·人工智能·深度学习
蓝羽飞鸟15 小时前
什么是自监督学习
人工智能·深度学习
大江东去浪淘尽千古风流人物15 小时前
【UniSim-SLAM】前馈SLAM的双流架构:Sim(3)统一位姿图、与经典SLAM及DPVO的三范式对比
深度学习·计算机视觉·3d·交互·人体姿态估计·eccv·3d重建