Mxnet (21): 门控循环单元(GRU)

本文介绍了门控循环单元(GRU)的工作原理,包括重置门和更新门的机制,以及它们如何解决梯度消失问题。GRU能够更好地捕捉时间序列中的短期和长期依赖关系。文章还详细讲解了如何从零开始实现GRU模型,包括数据获取、模型参数初始化、模型定义和训练过程。最后,对比了手动实现与Gluon库中GRU的效率差异。
摘要由CSDN通过智能技术生成

梯度爆炸通过裁剪梯度进行控制,但是矩阵的长乘积会导致梯度消失或发散。梯度消失在实践中的含义:

  • 我们可能会遇到这样的情况,早期观察对于预测所有将来的观察非常重要。第一token的影响至关重要,希望通过一些机制可以讲重要的早期信息存储在存储单元中。如果没有这种机制的话,一直传递下去会分配非常大的梯度。
  • 可能会遇到某些符号没有观察结果的情况。例如在解析网页的时候,可能会存在用于评估页面上传达的情感无关的HTML代码,我们希望有一些机制可以跳过这些无关的符号。
  • 可能会遇到序列各个部分之间存在逻辑中断的情况。例如,一本书各个章节之间的过渡,股市熊市和牛市之间的过渡。在这种情况下,最好有一种重置内部状态的机制。

目前已经有很多方法拉解决此类问题。最早的一种是长短期记忆(LSTM)。门控循环单元(GRU)是一种变体,通常可以提供足够的性能,并且计算速度更快。

1. 门控隐藏状态

GRU和常规RNN的主要区别在于,GRU支持隐藏状态的门控。也就是说具有专门的机制可以确定隐藏状态的更新和重置。这些机制可以解决上面列举的问题:

  • 如果第一个token非常重要,那么可以使第一次观测后不再更新隐藏状态
  • 可以学习跳过无关的观察如HTML代码
  • 以及可以学习在需要的时候对隐藏状态进行重置

1.1 重置门和更新门

GRU中复位门和更新门的输入 X t X_t Xt 和上一个时间步的隐藏状态 H t − 1 H_{t−1} Ht1 。输出由具有S形作为其激活功能的全连接层给出。

在这里插入图片描述

对于一个时间步长 t t t, 最小的批量输入为 X t ∈ R n × d \mathbf{X}_t \in \mathbb{R}^{n \times d} XtRn×d (样本数: n n n, 输入数: d d d) 最后一步的隐藏状态为 H t − 1 ∈ R n × h \mathbf{H}_{t-1} \in \mathbb{R}^{n \times h} Ht1Rn×h (隐藏状态数为: h h h). 重置门 R t ∈ R n × h \mathbf{R}_t \in \mathbb{R}^{n \times h} RtRn×h, 更新门 Z t ∈ R n × h \mathbf{Z}_t \in \mathbb{R}^{n \times h} ZtRn×h 计算如下:

R t = σ ( X t W x r + H t − 1 W h r + b r ) , Z t = σ ( X t W x z + H t − 1 W h z + b z ) . \begin{aligned} \mathbf{R}_t = \sigma(\mathbf{X}_t \mathbf{W}_{xr} + \mathbf{H}_{t-1} \mathbf{W}_{hr} + \mathbf{b}_r),\\ \mathbf{Z}_t = \sigma(\mathbf{X}_t \mathbf{W}_{xz} + \mathbf{H}_{t-1} \mathbf{W}_{hz} + \mathbf{b}_z). \end{aligned} Rt=σ(XtWxr+Ht1Whr+br),Zt=σ(XtW

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值