关于 RNN 循环神经网络的反向传播求导

本文详细介绍了RNN循环神经网络的反向传播求导过程,包括RNN架构、神经元及其反向传播计算,通过数学推导和计算图解析了每个时刻的隐藏状态和输出的梯度计算,探讨了反向传播中的参数共享问题和矩阵求导的处理方式。
摘要由CSDN通过智能技术生成

关于 RNN 循环神经网络的反向传播求导

本文是对 RNN 循环神经网络中的每一个神经元进行反向传播求导的数学推导过程,下面还使用 PyTorch 对导数公式进行编程求证。

RNN 神经网络架构

一个普通的 RNN 神经网络如下图所示:

图片1

其中 x ⟨ t ⟩ x^{\langle t \rangle} xt 表示某一个输入数据在 t t t 时刻的输入; a ⟨ t ⟩ a^{\langle t \rangle} at 表示神经网络在 t t t 时刻时的hidden state,也就是要传送到 t + 1 t+1 t+1 时刻的值; y ⟨ t ⟩ y^{\langle t \rangle} yt 则表示在第 t t t 时刻输入数据传入以后产生的预测值,在进行预测或 sampling y ⟨ t ⟩ y^{\langle t \rangle} yt 通常作为下一时刻即 t + 1 t+1 t+1 时刻的输入,也就是说 x ⟨ t ⟩ = y ^ ⟨ t ⟩ x^{\langle t \rangle}=\hat{y}^{\langle t \rangle} xt=y^t ;下面对数据的维度进行说明。

  • 输入: x ∈ R n x × m × T x x\in\mathbb{R}^{n_x\times m\times T_x} xRnx×m×Tx 其中 n x n_x nx 表示每一个时刻输入向量的长度; m m m 表示数据批量数(batch); T x T_x Tx 表示共有多少个输入的时刻(time step)。
  • hidden state: a ∈ R n a × m × T x a\in\mathbb{R}^{n_a\times m\times T_x} aRna×m×Tx 其中 n a n_a na 表示每一个 hidden state 的长度。
  • 预测: y ∈ R n y × m × T y y\in\mathbb{R}^{n_y\times m\times T_y} yRny×m×Ty 其中 n y n_y ny 表示预测输出的长度; T y T_y Ty 表示共有多少个输出的时刻(time step)。

RNN 神经元

下图所示的是一个特定的 RNN 神经元:

图片2

上图说明了在第 t t t 时刻的神经元中,数据的输入 x ⟨ t ⟩ x^{\langle t \rangle} xt 和上一层的 hidden state a ⟨ t ⟩ a^{\langle t \rangle} at 是如何经过计算得到下一层的 hidden state 和预测输出 y ^ ⟨ t ⟩ \hat{y}^{\langle t \rangle} y^t

下面是对五个参数的维度说明:

  • W a a ∈ R n a × n a W_{aa}\in\mathbb{R}^{n_a\times n_a} WaaRna×na
  • W a x ∈
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值