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,也是为了缓解梯度消失的程度。(复习:梯度消失和梯度爆炸)

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

相关推荐
伞伞悦读2 小时前
【第83期】特征选择中的验证泄漏排查的实验与排查
人工智能·深度学习·机器学习
一只废狗狗狗狗狗狗狗狗狗3 小时前
自监督式学习
人工智能·深度学习·机器学习·bert
aifannihao6 小时前
AI 学习第 14 课:CNN 训 6 轮卡在 0.5352,数据没打乱
pytorch·python·深度学习·cnn·学习路线
萝卜小白6 小时前
深度学习基础面经
人工智能·深度学习
高洁0112 小时前
数据同化与动态状态估计:让孪生持续贴合现实
人工智能·python·深度学习·transformer·迁移学习
通信仿真爱好者13 小时前
第【139】期--基于深度学习的OFDM信道估计方法研究--python完整代码
python·深度学习·ofdm·信道估计
科研邪修法13 小时前
混合方法文献矩阵:先拆字段,再确定分类
人工智能·深度学习
电科_银尘13 小时前
【深度学习项目实战·30】PM2.5短期预测:用LSTM构造没有未来信息的滑动窗口
人工智能·深度学习·lstm
汤姆宝库13 小时前
LoRA的低秩数学与QLoRA实现
人工智能·深度学习·机器学习
用户080775907851 天前
从输入到输出:大模型推理全流程复盘(含纠错清单)
深度学习