RNN、GRU和LSTM前向传播和反向传播的公式

目录

1. 普通递推神经网络(Recurrent Neural Network)的前向传播公式

2. 门控递推单元(Gated Recurrent Unit,GRU)的前向传播公式

3. 长短期记忆单元(Long Short-Term Memory,LSTM)的前向传播公式

4. 普通递推神经网络的反向传播公式

5. GRU的反向传播公式

6. LSTM的反向传播公式


a\cdot b\mathrm{ab}表示矩阵乘法,a * b表示按元素相乘(学名叫做Hadamard product)。a^{<t>}中的<t>表示第t步。W_{ax}表示矩阵有n_a(激活值的维度)行,n_x(输入值的维度)列。x表示输入,a表示激活值,c表示隐藏状态,u表示更新(输入)门,o表示输出门,f表示遗忘门。

1. 普通递推神经网络(Recurrent Neural Network)的前向传播公式

下式输出了激活值。

a^{<t>}=\tanh{(W_{ax}x^{<t>}+W_{aa}a^{<t>}+b_{a})} \\ =\tanh{(\begin{bmatrix}W_{ax} W_{aa} \end{bmatrix} \begin{bmatrix}x^{<t>} \\ a^{<t>} \end{bmatrix} + b_a)} \\ = \tanh{(W_a \begin{bmatrix} x^{<t>} \\ a^{<t>} \end{bmatrix} + b_a)}

下式把激活值映射到输出的概率空间中。

\widehat{y}^{<t>}=softmax(W_{ya}a^{<t>}+b_y)

2. 门控递推单元(Gated Recurrent Unit,GRU)的前向传播公式

重置门(reset gate)r_t的计算

r_t=\sigma(W_r\mathrm{x}_t+U_r\mathrm{h}_{t-1})t代表第t步。(r_t^j=\sigma(W_r\mathrm{x}_t+U_r\mathrm{h}_{t-1})^j)

候选激活值(candidate activation)\widetilde{h}_t的计算

\widetilde{h}_t=\tanh{(W\mathrm{x}_t+U(\mathrm{r}_t*\mathrm{h}_{t-1}))}

更新门(update gate)z_t的计算

z_t=\sigma{(W_z\mathrm{x}_t+U_z\mathrm{h}_{t-1})}

激活值h_t的计算

h_t=(1-z_t)*h_{t-1}+z_t*\widetilde{h}_t

3. 长短期记忆单元(Long Short-Term Memory,LSTM)的前向传播公式

下式是遗忘门,用于忘记上一步的隐藏状态。

h_{\Gamma_f}^{<t>}=W_f \begin{bmatrix} a^{<t-1>} \\ x^{<t>} \end{bmatrix} + b_f

\Gamma_{f}^{<t>}=\sigma(h_{\Gamma_f}^{<t>})

这是更新(输入)门,用于决定保留多少输入。

h_{\Gamma_u}^{<t>}=W_u \begin{bmatrix} a^{<t-1>}\\ x^{<t>} \end{bmatrix}+b_u

\Gamma_{u}^{<t>}=\sigma(h_{\Gamma_u}^{<t>})

这是初步的隐藏状态,与遗忘门和更新门无关。

h_{\widetilde{c}}^{<t>}=W_c \begin{bmatrix}a^{<t-1>} \\ x^{<t>} \end{bmatrix} +b_c

\widetilde{c}^{<t>}=\tanh{(h_{\widetilde{c}}^{<t>})}

这是最终的隐藏状态,经过遗忘门和更新门的调整。

c^{<t>}=\Gamma_f^{<t>}*c^{<t-1>}+\Gamma_u^{<t>}*\widetilde{c}^{<t>}

这是输出门,用于决定输出多少隐藏状态。

h_{\Gamma_o}^{<t>}=W_o \begin{bmatrix} a^{<t-1>} \\ x^{<t>} \end{bmatrix} + b_o

\Gamma_o^{<t>}=\sigma(h_{\Gamma_o}^{<t>})

这是最终的激活值。

a^{<t>}=\Gamma_o^{<t>}*\tanh{(c^{<t>})}

4. 普通递推神经网络的反向传播公式

这是激活值。

a^{<t>}=\tanh{(W_{ax}x^{<t>}+W_{aa}a^{<t-1>}+b)}

这是tanh的求导公式。

\frac{\mathrm{d} \tanh{(x)}}{\mathrm{d} {x}}=1-\tanh{(x)}^2

下面是对各个参数的偏导。

\frac{\partial{a^{<t>}}}{\partial{W_{ax}}} = (1-(a^{<t>})^2)\cdot (x^{<t>})^T

\frac{\partial{a^{<t>}}}{\partial{W_{aa}}}=(1-(a^{<t>})^2)\cdot (a^{<t-1>})^T

\frac{\partial{a^{<t>}}}{\partial{b}}=\sum_{batch}(1-(a^{<t>})^2)

\frac{\partial{a^{<t>}}}{\partial{x^{<t>}}}=W_{ax}^T \cdot (1-(a^{<t>})^2)

\frac{\partial{a^{<t>}}}{\partial{a^{<t-1>}}}=W_{aa}^T\cdot (1-(a^{<t>})^2)

5. GRU的反向传播公式

\frac{\partial{h_t}}{\partial{z_t}}=h_{t-1}+\widetilde{h}_t

\frac{\partial{h}_t}{\partial{W_z}}=(\frac{\partial{h_t}}{\partial{z_t}}*(z_t*(1-z_t)))\cdot \mathrm{x}_t^T

\frac{\partial{h_t}}{\partial{U_z}}=(\frac{\partial{h_t}}{\partial{z_t}}*z_t*(1-z_t))\cdot h_{t-1}^T

\frac{\partial{h_t}}{\partial{W}}=(z_t*(1-\widetilde{h}_t^2))\cdot \mathrm{x}_t^{T}

\frac{\partial{h_t}}{\partial{U}}=(z_t * (1-\widetilde{h}_t^2))\cdot (r_t * h_{t-1})^T

\frac{\partial{h_t}}{\partial{r_t}}=(U^T\cdot (z_t * (1 - \widetilde{h}_t^2))) * h_{t-1}

\frac{\partial{h_t}}{\partial{W_r}}=(\frac{\partial{h_t}}{\partial{r_t}}*r_t*(1-r_t))\cdot \mathrm{x}_t^{T}

\frac{\partial{h_t}}{\partial{U_r}}=(\frac{\partial{h_t}}{\partial{r_t}}*r_t*(1-r_t)) \cdot h_{t-1}^T

\begin{aligned} \frac{\partial{h_t}}{\partial{x_t}} &=W_z^T\cdot ((\widetilde{h}_t-h_{t-1})*z_t*(1-z_t)) + z_t*(W^T \cdot (1-\widetilde{h}^2_t) +W_r^T\cdot ((U^T \cdot (1-\widetilde{h}^2_t))*h_{t-1}*r_t * (1-r_t))) \end{aligned}

\begin{aligned} \frac{\partial{h_t}}{\partial{h_{t-1}}} =&-U_z^T\cdot (h_{t-1}*z_t*(1-z_t))+ (1-z_t) +U_z^T\cdot (\widetilde{h}_t*z_t*(1-z_t)) \\ &+U_r^T\cdot((U^T\cdot(z_t*(1-\widetilde{h_t}^2)))*h_{t-1}*r_t*(1-r_t)) \\ &+(U^T\cdot (z_t*(1-\widetilde{h}_t^2)))*r_t \end{aligned}

6. LSTM的反向传播公式

\frac{\partial{a^{<t>}}}{\partial{\Gamma_o^{<t>}}}=\tanh{(c^{<t>})}

\frac{\partial{a^{<t>}}}{\partial{\widetilde{c}^{<t>}}}=\Gamma_{u}^{<t>}+\Gamma_o^{<t>}*(1-\tanh{(c^{<t>})^2})*\Gamma_u^{<t>}

\frac{\partial{a^{<t>}}}{\partial{\Gamma_u^{<t>}}}=\widetilde{c}^{<t>}+\Gamma_o^{<t>}(1-\tanh{(c^{<t>})^2})*\widetilde{c}^{<t>}

\frac{\partial{a^{<t>}}}{\partial{\Gamma_{f}^{<t>}}}=\widetilde{c}^{<t-1>}+\Gamma_o^{<t>}*(1-\tanh{(c^{<t>})}^2)*c^{<t-1>}

\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_f}^{<t>}}}=\frac{\partial{a^{<t>}}}{\partial{\Gamma_{f}^{<t>}}}* \Gamma^{<t>}_f * (1-\Gamma_f^{<t>})

\frac{\partial{a^{<t>}}}{\partial{W_f}}=\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_f}^{<t>}}} \cdot \begin{bmatrix}a^{<t-1>} \\ x_t \end{bmatrix}^T

\frac{\partial{a^{<t>}}}{\partial{b_f}}=\sum_{batch}\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_f}^{<t>}}}

\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_u}^{<t>}}}=\frac{\partial{a^{<t>}}}{\partial{\Gamma_u}}*\Gamma_u^{<t>}*(1-\Gamma_u^{<t>})

\frac{\partial{a^{<t>}}}{\partial{W_u}}=\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_u}^{<t>}}}\cdot \begin{bmatrix}a^{<t-1>} \\ x_t \end{bmatrix}^T

\frac{\partial{a^{<t>}}}{\partial{b_u}}=\sum_{batch}\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_u}^{<t>}}}

\frac{\partial{a^{<t>}}}{\partial{h_{\widetilde{c}}^{<t>}}}=\frac{\partial{a^{<t>}}}{\partial{\widetilde{c}^{<t>}}}* (1-(\widetilde{c}^{<t>})^2)

\frac{\partial{a^{<t>}}}{\partial{W_c}}= \frac{\partial{a^{<t>}}}{\partial{h_{\widetilde{c}}^{<t>}}} \cdot \begin{bmatrix} a^{<t-1>}\\x_t \end{bmatrix}^T

\frac{\partial{a^{<t>}}}{\partial{b_c}}=\sum_{batch}\frac{\partial{a^{<t>}}}{\partial{h_{\widetilde{c}}^{<t>}}}

\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_o}^{<t>}}}=\frac{\partial{a^{<t>}}}{\partial{\Gamma_o^{<t>}}}*\Gamma_o^{<t>}*(1-\Gamma_o^{<t>})

\frac{\partial{a^{<t>}}}{\partial{W_o}}=\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_o}^{<t>}}}\cdot \begin{bmatrix}a^{<t-1>}\\x_t \end{bmatrix}^T

\frac{\partial{a^{<t>}}}{\partial{b_o}}=\sum_{batch}\frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_o}^{<t>}}}

下式中的W_fW_f=\begin{bmatrix} W_a W_x \end{bmatrix}中的W_aW_u, W_o, W_c类似。

\frac{\partial{a^{<t>}}}{\partial{a^{<t-1>}}}=W^{T}_f \cdot \frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_f}^{<t>}}}+W_u^T\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_u}^{<t>}}}+W_c^T\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\widetilde{c}}^{<t>}}}+W_o^T\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_o}}^{<t>}}

\frac{\partial{a^{<t>}}}{\partial{c^{<t-1>}}}=\Gamma_o^{<t>}*(1-\tanh{(c^{<t>})^2})*\Gamma_f^{<t>}

\frac{\partial{c^{<t>}}}{\partial{c^{<t-1>}}}=\Gamma_f^{<t>}

下式中的W_fW_f=\begin{bmatrix}W_a W_x \end{bmatrix}中的W_xW_u, W_c, W_o类似。

\frac{\partial{a^{<t>}}}{\partial{x^{<t>}}}=W_f^{T}\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_f}^{<t>}}}+W_u^T\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_u}^{<t>}}}+W_c^T\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\widetilde{c}}^{<t>}}}+W_o^T\cdot \frac{\partial{a^{<t>}}}{\partial{h_{\Gamma_o}^{<t>}}}

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值