GRU神经网络

28 篇文章 0 订阅
21 篇文章 0 订阅

RNN的局限性

在处理时序数据时候,RNN是一种十分简单的方法,但是它并不完美。它会记住太多的信息。
回忆一下能够状态函数 H t H_t Ht,它对每个进入的 X t X_t Xt都记录了。然而实际上并不需要完全记住这么多信息,就像一句话中的“的”之类的词就是意义不大的。记录了这些无用的信息反而会对预测产生误导。

此外还存在的一种特殊情况:概念漂移,随着时间的推移数据分布发送了变化。
面对这种情况,过去记录的状态信息可能不管用了,而且会产生误导,需要将其遗忘。

GRU神经网络

针对上述两种缺陷,GRU神经网络应运而生,它通过增设两个“门”,来实现的。

重置门

通过这个门就可以有效的解决概念漂移的问题。
R t = Θ ( X t ⋅ W x r + H t − 1 ⋅ W h r + b r ) R_t=\Theta\left( X_t\cdot W_{xr} + H_{t-1}\cdot W_{hr} + b_r \right) Rt=Θ(XtWxr+Ht1Whr+br)
R t R_t Rt H t − 1 H_{t-1} Ht1对应元素相乘,并于 X t X_t Xt对于元素相加,就得到了候选状态 H t ′ H'_t Ht
考虑两种极端情况:

  1. R t R_t Rt中全部是 1 1 1,也就是说记住之前全部的历史信息$H_{t-1}。
  2. R t R_t Rt中全部是 0 0 0,也就是说遗忘掉全部的历史信息 H t − 1 H_{t-1} Ht1,即重置。

W , B W,B W,B是需要学习的权重,它们负责判断在哪些状态下需要遗忘(重置)说明。

更新门

在重置门中,产生了有关候选状态 H t ′ H'_t Ht,它还需要经过更新门才能变为真正的状态 H t H_t Ht
Z t = Θ ( X t ⋅ W x z + H t − 1 ⋅ W h z + b z ) H t = Z t ∗ H t − 1 + ( 1 − Z t ) ∗ H t ′ Z_t=\Theta\left( X_t\cdot W_{xz} + H_{t-1}\cdot W_{hz} + b_z \right) \newline H_t =Z_t*H_{t-1}+\left( 1 - Z_t\right)*H'_t Zt=Θ(XtWxz+Ht1Whz+bz)Ht=ZtHt1+(1Zt)Ht

  • 此处的*表示对应元素相乘
    通过这个公式,就可以看出来, Z t Z_t Zt就是觉得当前状态更新多少到 H t H_t Ht中。

代码实现

pytorch中有提供GRU神经网络层,直接调用即可。

nn.GRU(vocab_size , hidden_size)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值