深度学习之GRU网络

摘要:
  在LSTM中引入了三个门函数:输入门、遗忘门和输出门来控制输入值、记忆值和输出值。      图中的zt和rt分别表示更新门和重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门控制前一状态有多少信息被写入到当前的候选集$ilde{h}_t$上,前一状态的信息被写入的越少。我们来看看网络的前向传播公式:

1、GRU概述

  GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种网络。GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题。

  在LSTM中引入了三个门函数:输入门、遗忘门和输出门来控制输入值、记忆值和输出值。而在GRU模型中只有两个门:分别是更新门和重置门。具体结构如下图所示:

    深度学习之GRU网络第1张

  图中的zt和rt分别表示更新门和重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门控制前一状态有多少信息被写入到当前的候选集 $ ilde{h}_t$ 上,重置门越小,前一状态的信息被写入的越少。

2、GRU前向传播

  根据上面的GRU的模型图,我们来看看网络的前向传播公式:

    深度学习之GRU网络第2张

    深度学习之GRU网络第3张

    深度学习之GRU网络第4张

    深度学习之GRU网络第5张

    深度学习之GRU网络第6张

  其中[]表示两个向量相连,*表示矩阵的乘积。

3、GRU的训练过程

  从前向传播过程中的公式可以看出要学习的参数有Wr、Wz、Wh、Wo。其中前三个参数都是拼接的(因为后先的向量也是拼接的),所以在训练的过程中需要将他们分割出来:

    深度学习之GRU网络第7张

    深度学习之GRU网络第8张

    深度学习之GRU网络第9张

  输出层的输入:

    深度学习之GRU网络第10张

  输出层的输出:

    深度学习之GRU网络第11张

  在得到最终的输出后,就可以写出网络传递的损失,单个样本某时刻的损失为:

    深度学习之GRU网络第12张

  则单个样本的在所有时刻的损失为:

    深度学习之GRU网络第13张

  采用后向误差传播算法来学习网络,所以先得求损失函数对各参数的偏导(总共有7个):

    深度学习之GRU网络第14张

    深度学习之GRU网络第15张

    深度学习之GRU网络第16张

    深度学习之GRU网络第17张

    深度学习之GRU网络第18张

    深度学习之GRU网络第19张

    深度学习之GRU网络第20张

  其中各中间参数为:

    深度学习之GRU网络第21张

    深度学习之GRU网络第22张

    深度学习之GRU网络第23张

    深度学习之GRU网络第24张

    深度学习之GRU网络第25张

  在算出了对各参数的偏导之后,就可以更新参数,依次迭代知道损失收敛。

  概括来说,LSTM和CRU都是通过各种门函数来将重要特征保留下来,这样就保证了在long-term传播的时候也不会丢失。此外GRU相对于LSTM少了一个门函数,因此在参数的数量上也是要少于LSTM的,所以整体上GRU的训练速度要快于LSTM的。不过对于两个网络的好坏还是得看具体的应用场景。

参考文献:

  GRU神经网络

  GRU与LSTM总结

***本文为参考各位大神博客的笔记*

免责声明:文章转载自《深度学习之GRU网络》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇几种常见随机过程Build GMP on 64bit Windows下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

urllib的使用

urllib的使用 urllib是python内置的HTTP请求库,包含如下四个模块: request:它是最基本HTTP请求模块,可以用来模拟发送请求,就像在浏览器里输入网址然后按回车一样,只需要传入URL以及额外的参数,就可以模拟实现这个过程了。 error:异常处理模块,如果出现请求错误,可以捕获到这些异常,然后进行重试或其他操作以保证程序不会意外终...

百度搜索网址参数的含义

如果你是一个细心的人在百度搜索的时候你就会发现每次搜索百度搜索网址的参数除了我们搜的关键词其它参数会随之变化.  要成为一名合格的网站优化员(自称SEOer) 了解这些参数是必须的.  跟随老修一起来仔细研究一下隐藏在百度搜索网址参数里的这些小秘密吧:  举例说明各个参数的意思:  1. 浏览器输入www.baidu.com 打开百度首页/ 输入"老吧"...

FreeBSD查看带宽占用情况,CPU,硬盘IO 虚拟内存等命令

FreeBSD查看带宽占用情况,CPU,硬盘IO 虚拟内存等命令 来源 https://www.liurongxing.com/freebsd-tips.html 来源 http://blog.51cto.com/wjcaiyf/1597030 1.查看CPU型号:sysctl -a |grep hw.model 2.查看CPU核心数sysctl -a |...

执行计划--Adhoc和Prepare

在和SQLPass讨论adhoc和Prepare时,有各自不同的观点,我来发表下我的理解,不对之处,敬请指出! Adhoc(即席查询):没有参数化的查询计划会被标记为adhoc,adhoc不能理解为该执行计划不会被重用。 Prepared(预定义):查询中使用到参数的执行计划会被标记为Prepared. 在后续测试中,每次测试之前需要清除执行计划: --清...

asp.net 中webapi读取参数对象和.net core的区别

asp.net 中读取webapi中的post对象参数时候需要使用[FromBody],读取get的参数要用到[FromUri]。 例如 [System.Web.Http.HttpGet] public object GetPage([FromUri]ProductSearchInput input) { ... } [System.Web.Http...

ios 网络开发(CFNetwork)

CFNetwork 存在于CoreFoundation中的一个低级别但高性能的网络框架。BSD套接字的扩展,CFNetwork物理上和理论上都基于BSD套接字。有大量的Cocoa框架依赖于CFNetwork。 CFNetwork更侧重与网络协议,Foundation则更倾向于API数据请求等,虽然框架也提供了一些操作,但是远不如CFNetwork丰富。在学...