GRU神经网络

RNN在处理时序数据时,因过度记忆导致问题,尤其在概念漂移情况下。GRU通过重置门和更新门解决这些问题,允许选择性地遗忘和保留历史信息。重置门用于处理概念漂移,更新门决定状态信息的更新程度。在PyTorch中,GRU层可以直接使用。

RNN的局限性

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

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

GRU神经网络

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

重置门

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

  1. RtR_tRt中全部是111,也就是说记住之前全部的历史信息$H_{t-1}。
  2. RtR_tRt中全部是000,也就是说遗忘掉全部的历史信息Ht−1H_{t-1}Ht1,即重置。

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

更新门

在重置门中,产生了有关候选状态Ht′H'_tHt,它还需要经过更新门才能变为真正的状态HtH_tHt
Zt=Θ(Xt⋅Wxz+Ht−1⋅Whz+bz)Ht=Zt∗Ht−1+(1−Zt)∗Ht′ 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

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

代码实现

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

nn.GRU(vocab_size , hidden_size)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值