百度抓取网站图片,相亲网站建设策划方案,mvc做的游戏网站代码,wordpress图片代码1️⃣ GRU介绍
前面介绍的LSTM可以有效缓解RNN的梯度消失问题#xff0c;但是其内部结构比较复杂#xff0c;因此衍生出了更加简化的GRU。GRU把输入门和遗忘门整合成一个更新门#xff0c;并且合并了细胞状态和隐藏状态。于2014年被提出 2️⃣ 原理介绍
GRU的结构和最简单…1️⃣ GRU介绍
前面介绍的LSTM可以有效缓解RNN的梯度消失问题但是其内部结构比较复杂因此衍生出了更加简化的GRU。GRU把输入门和遗忘门整合成一个更新门并且合并了细胞状态和隐藏状态。于2014年被提出 2️⃣ 原理介绍
GRU的结构和最简单的RNN是一样的。当前输入为 x t x_t xt上一个节点传递下来的隐层状态为 h t − 1 h_{t-1} ht−1这个隐层状态包含了之前节点的相关信息。根据 x t x_t xt和 h t − 1 h_{t-1} ht−1GRU会得到当前时间步的输出 y t y_t yt和传递给下一个节点的隐层状态 h t h_t ht实际上 y t y_t yt就是等于 h t h_t ht 下面介绍详细的原理下图展示了GRU的详细结构
第一步计算重置门它的参数是 W r W_r Wr用于控制之前的记忆需要保留多少。该门的输入是前一个隐层状态 h t − 1 h_{t-1} ht−1以及当前时间步的输入 x t x_t xt输出为 r t r_t rt在0到1之间 r t σ ( W r ⋅ [ h t − 1 , x t ] ) r_{t}\sigma\left(W_{r}\cdot[h_{t-1},x_{t}]\right) rtσ(Wr⋅[ht−1,xt])其中 σ \sigma σ表示sigmoid激活函数
第二步我们来看更新门它的参数为 W z W_z Wz它将LSTM中的输入门和遗忘门结合决定当前时间步应该保留多少以前的记忆多少新信息应该加入。该门的输入也是前一个隐层状态 h t − 1 h_{t-1} ht−1以及当前时间步的输入 x t x_t xt省略了偏置参数 b b b输出为 z t 在 0 到 1 之间 z_t在0到1之间 zt在0到1之间公式具体表达为 z t σ ( W z ⋅ [ h t − 1 , x t ] ) z_{t}\sigma\left(W_{z}\cdot[h_{t-1},x_{t}]\right) ztσ(Wz⋅[ht−1,xt])其中 σ \sigma σ表示sigmoid激活函数
第三步计算输入值输入值由前一个隐层状态 h t − 1 h_{t-1} ht−1当前的 x t x_t xt以及重置门 r t r_t rt得到。 r t ∗ h t − 1 r_{t}*h_{t-1} rt∗ht−1可以理解为之前的记忆保留多少来学习新的内容 x t x_t xt h ~ t \tilde{h}_{t} h~t相当于利用之前的记忆对新的内容理解的部分 h ~ t tanh ( W ⋅ [ r t ∗ h t − 1 , x t ] ) \tilde{h}_{t}\operatorname{tanh}\left(W\cdot[r_{t}*h_{t-1},x_{t}]\right) h~ttanh(W⋅[rt∗ht−1,xt])
第四步计算当前输出 h t h_t ht由两部分一部分是之前信息的影响 h t − 1 h_{t-1} ht−1后一部分是当前输入的影响 h ~ t \tilde{h}_t h~t。 z t z_{t} zt是更新门的输出取值在0-1之间。给 h t − 1 h_{t-1} ht−1赋予 ( 1 − z t ) (1-z_t) (1−zt)权重给 h ~ t \tilde{h}_t h~t赋予 z t z_{t} zt权重 h t ( 1 − z t ) ∗ h t − 1 z t ∗ h ~ t \begin{aligned}h_t(1-z_t)*h_{t-1}z_t*\tilde{h}_t\end{aligned} ht(1−zt)∗ht−1zt∗h~t
我前面写的这篇文章中介绍了为什么RNN会有梯度消失和爆炸点这里查看
主要原因是反向传播时梯度中有这一部分 ∏ j k 1 3 ∂ s j ∂ s j − 1 ∏ j k 1 3 t a n h ′ W \prod_{jk1}^3\frac{\partial s_j}{\partial s_{j-1}}\prod_{jk1}^3tanh^{}W jk1∏3∂sj−1∂sjjk1∏3tanh′W
那么GRU如何缓解RNN的梯度消失问题呢
在GRU里隐层的输出换了个符号从 s s s变成 h h h了。因此我们来分析一下 ∂ h t ∂ h t − 1 \frac{\partial h_t}{\partial h_{t-1}} ∂ht−1∂ht。 我们可以得到 ∂ h t ∂ h t − 1 ( 1 − z t ) … \frac{\partial h_t}{\partial h_{t-1}}(1-z_t)\ldots ∂ht−1∂ht(1−zt)…
因此我们可以通过控制更新门的输出 z t z_t zt来控制梯度以缓解梯度消失问题 3️⃣ 总结 GRU和LSTM对比 GRU通过控制更新门的输出 z t z_t zt来控制梯度以缓解梯度消失问题 4️⃣ 参考
Pytorch_LSTM与GRU白话机器学习-从RNN、LSTM到GRU