门控循环单元(GRU):

背景:

  当时间步数较大或者时间步数较小的时候,循环神经网络的梯度较容易出现衰减或者爆炸。虽然裁剪梯度可以应对梯度爆炸,

但是无法解决梯度衰减的问题。正因为如此,循环神经网络在实际中难以捕捉时间序列中的时间步较大的依赖的关系。门控循环

神经网络的提出,真是为了更好地捕捉时间序列中时间步较大的依赖关系。它通过可以学习的门来控制信息的流动。

重置门和更新门:(修改了循环神经网络中隐藏状态的计算方式)

  门控循环单元中的重置门和更新门的输入均为当前时间步输入 X与上一时间步的隐藏状态 Ht-1,输出由激活函数sigmoid函数

的全连接层计算得到。

计算过程:

  假设隐藏单元的个数为 h ,给定时间步 t 的小批量输入,(样本数量为 n ,输入个数为 d )和上一时间步的隐藏状态

重置门和更新门的计算如下

  因为sigmiod函数可以将元素的值变换到0和1之间,因此重置门和更新门中的每个元素的值域都是【0,1】

候选隐藏状态:

  门控循环单元将计算候选隐藏状态来辅助稍后的隐藏状态的计算。我们将当前时间步的重置门的输出与上一时间步的隐藏状态

做按元素乘法(符号为 )。如果重置门中的元素值接近 0 ,则意味着重置对应隐藏状态元素为 0 ,即丢弃上一时间步的隐藏状态。

如果元素值接近1,那么表示保留上一时步的隐藏状态。然后,将按元素乘法的结果与当前时间步的输入连接,在通过激活函数tanh的

全连接层计算出候选隐藏状态,其所有元素的值域都为【-1,1】

  具体的来说,时间步 t 的候选状态的计算为:

  从这个公式可以看出,重置门控制了上一时间步的隐藏状态如何流入当前时间步的候选隐藏状态。而上一时间不的隐藏状态

可能包含了时间序列截止至上一时间步的全部历史信息。因此,重置门可以用来丢弃与预测无关的历史信息。

隐藏状态:

最后时间步 t 的隐藏状态的计算使用当前时间步的更新门Zt来对上一时间步的隐藏状态 Ht-1 和当前时间步的候选隐藏

状态 做组合:

  值得注意的是,更新门可以控制隐藏状态应该如何被包含当前时间步信息的候选隐藏状态所更新,假设更新门在时间步 t‘ 到 t 之间一直近似 1

那么,在时间步 t‘ 到 t 之间的输入信息几乎没有流入时间步 t 的隐藏状态 Ht 。实际上,这可以看作较早时刻的隐藏状态 一直通过时间

并传递至当前时间步 t 。这个设计可以应对循环神经网络中的梯度衰减问题,并更好的捕捉时间序列中时间步距离较大的依赖关系。

总结:

1、重置门有助于捕捉时间序列里短期的依赖关系;

2、更新门有助于捕捉时间序列里长期的依赖关系。

 

 

 

GRU and LSTM的更多相关文章

  1. Recurrent Neural Network系列4--利用Python,Theano实现GRU或LSTM

    yi作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORK ...

  2. 【pytorch】关于Embedding和GRU、LSTM的使用详解

    1. Embedding的使用 pytorch中实现了Embedding,下面是关于Embedding的使用. torch.nn包下的Embedding,作为训练的一层,随模型训练得到适合的词向量. ...

  3. RNN,GRU,LSTM

    2019-08-29 17:17:15 问题描述:比较RNN,GRU,LSTM. 问题求解: 循环神经网络 RNN 传统的RNN是维护了一个隐变量 ht 用来保存序列信息,ht 基于 xt 和 ht- ...

  4. NLP教程(5) - 语言模型、RNN、GRU与LSTM

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  5. 机器学习(ML)九之GRU、LSTM、深度神经网络、双向循环神经网络

    门控循环单元(GRU) 循环神经网络中的梯度计算方法.当时间步数较大或者时间步较小时,循环神经网络的梯度较容易出现衰减或爆炸.虽然裁剪梯度可以应对梯度爆炸,但无法解决梯度衰减的问题.通常由于这个原因, ...

  6. GRU和LSTM比较

    比较: https://www.jianshu.com/p/3774d46b665e https://blog.csdn.net/sinat_33741547/article/details/8282 ...

  7. TensorFlow之RNN:堆叠RNN、LSTM、GRU及双向LSTM

    RNN(Recurrent Neural Networks,循环神经网络)是一种具有短期记忆能力的神经网络模型,可以处理任意长度的序列,在自然语言处理中的应用非常广泛,比如机器翻译.文本生成.问答系统 ...

  8. 循环神经网络之LSTM和GRU

    看了一些LSTM的博客,都推荐看colah写的博客<Understanding LSTM Networks> 来学习LSTM,我也找来看了,写得还是比较好懂的,它把LSTM的工作流程从输入 ...

  9. 第二十一节,使用TensorFlow实现LSTM和GRU网络

    本节主要介绍在TensorFlow中实现LSTM以及GRU网络. 一 LSTM网络 Long Short Term 网络—— 一般就叫做 LSTM ——是一种 RNN 特殊的类型,可以学习长期依赖信息 ...

随机推荐

  1. Ajax_简介: 异步的 JS 和 XML_原生写 ajax 分析其原理_jquery_ajax_art-template

    AJAX Asynchronous JavaScript And XML 通过 AJAX 可以在 浏览器中向 服务器 发送异步请求 一种 使用现有标准的 新方法,而非新语言 XML  可扩展标记语言 ...

  2. tool 使用font-spider解决字体压缩问题

    开发页面时经常需要使用特殊字体,一个.ttf文件动则几M,字体文件需要优化 http://font-spider.org/ 安装好node环境后 1.全局安装font-spider npm insta ...

  3. python learning day01

    python简介 一.python的由来: python的创始人是吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚 ...

  4. RuntimeError: implement_array_function method already has a docstring

    根源:Numpy/Scipy/Pandas/Matplotlib/Scikit-learn 出现冲突 解决办法: pip uninstall scikit-learn pip uninstall ma ...

  5. vue中用ajax上传文件

    直接上代码 <input class="file-btn" type="file" @change="uploadCompany($event) ...

  6. css相关整理-其他

    1.设备像素(device pixel): 设备像素是物理概念,指的是设备中使用的物理像素.CSS像素(css pixel): CSS像素是Web编程的概念,指的是CSS样式代码中使用的逻辑像素.通过 ...

  7. PHP防CC攻击代码

    PHP防CC攻击代码: empty($_SERVER['HTTP_VIA']) or exit('Access Denied'); //代理IP直接退出 session_start(); $secon ...

  8. 解决centos7.x图形化界面卡死(鼠标能动,但不能点击)问题

    有时会由于某些原因(CPU过热?Mem占用过高?)导致centos7.x图形界面卡死,下面是解决办法,此方法不会关闭你打开的terminal. 1. 首先top命令查看gnome-shell的PID ...

  9. JavaScript 判断是PC端还是移动端

    function IsPC() {     var userAgentInfo = navigator.userAgent;     var Agents = ["Android" ...

  10. Xamarin.Forms 未能找到路径“x:\platforms”的一部分

    https://stackoverflow.com/questions/45500269/xamarin-android-common-targets-error-could-not-find-a-p ...