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

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

相关推荐
Ivanqhz2 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
晚安code4 小时前
大模型是什么?讲透 Token、上下文窗口、Temperature 和 MoE
人工智能·深度学习·机器学习
Zguigo5 小时前
【CUDA6】CUDA Stream 是什么,为什么 CUDA 是异步执行,如何正确测量 GPU 时间以及多个任务如何重叠执行
人工智能·pytorch·深度学习
梦帮科技7 小时前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
v:PLLucky209 小时前
农作物病虫害检测识别系统
深度学习·scrapy·算法·百度·微信公众平台
医学图像分割大王9 小时前
【医学图像分割模块】StarNet —— 星操作(元素级乘法)—— 把"相加"换成"相乘"的轻量卷积块
深度学习
在所不辞兄9 小时前
【零基础学智能仿真-38】从规则矩形到带孔薄板:Gmsh 网格与 FEniCSx 联合求解
人工智能·深度学习·算法·机器学习·工程仿真
架构师那点事儿10 小时前
将 HuggingFace 自己的英译中模型迁移到 ONNX
人工智能·python·深度学习
梦帮科技12 小时前
可证伪性工程测评与生产部署红蓝对抗:压力测试、长尾鲁棒性与全生命周期安全质检守卫
人工智能·深度学习·神经网络·安全·机器学习·自然语言处理·压力测试
这张生成的图像能检测吗12 小时前
(论文速读)DefectDiffu:基于一致性建模的少样本工业缺陷图像生成
人工智能·深度学习·计算机视觉·异常检测·少样本学习·扩散生成