GRU
假设我们已经熟知循环神经网络(RNN)及长短时间记忆网络(LSTM)。相比于简单的RNN,LSTM增加了记忆单元(memory cell)、输入门(input gate)、遗忘门(forget gate)及输出门(output gate),这些门及记忆单元组合起来大大提升了RNN处理远距离依赖问题的能力。
RNN:

Ht=ϕ(XtWxh+Ht−1Whh+bh)H_{t} = ϕ(X_{t}W_{xh} + H_{t-1}W_{hh} + b_{h}) Ht​=ϕ(Xt​Wxh​+Ht−1​Whh​+bh​)

长短期记忆long short-term memory

遗忘门:控制上一时间步的记忆细胞
输入门:控制当前时间步的输入
输出门:控制从记忆细胞到隐藏状态
记忆细胞:⼀种特殊的隐藏状态的信息的流动

It=σ(XtWxi+Ht−1Whi+bi)Ft=σ(XtWxf+Ht−1Whf+bf)Ot=σ(XtWxo+Ht−1Who+bo)C~t=tanh(XtWxc+Ht−1Whc+bc)Ct=Ft⊙Ct−1+It⊙C~tHt=Ot⊙tanh(Ct)I_t = σ(X_tW_{xi} + H_{t−1}W_{hi} + b_i) \\ F_t = σ(X_tW_{xf} + H_{t−1}W_{hf} + b_f)\\ O_t = σ(X_tW_{xo} + H_{t−1}W_{ho} + b_o)\\ \widetilde{C}_t = tanh(X_tW_{xc} + H_{t−1}W_{hc} + b_c)\\ C_t = F_t ⊙C_{t−1} + I_t ⊙\widetilde{C}_t\\ H_t = O_t⊙tanh(C_t) It​=σ(Xt​Wxi​+Ht−1​Whi​+bi​)Ft​=σ(Xt​Wxf​+Ht−1​Whf​+bf​)Ot​=σ(Xt​Wxo​+Ht−1​Who​+bo​)Ct​=tanh(Xt​Wxc​+Ht−1​Whc​+bc​)Ct​=Ft​⊙Ct−1​+It​⊙Ct​Ht​=Ot​⊙tanh(Ct​)

GRU:

Rt=σ(XtWxr+Ht−1Whr+br)Zt=σ(XtWxz+Ht−1Whz+bz)H~t=tanh(XtWxh+(Rt⊙Ht−1)Whh+bh)Ht=Zt⊙Ht−1+(1−Zt)⊙H~tR_{t} = σ(X_tW_{xr} + H_{t−1}W_{hr} + b_r)\\ Z_{t} = σ(X_tW_{xz} + H_{t−1}W_{hz} + b_z)\\ \widetilde{H}_t = tanh(X_tW_{xh} + (R_t ⊙H_{t−1})W_{hh} + b_h)\\ H_t = Z_t⊙H_{t−1} + (1−Z_t)⊙\widetilde{H}_t Rt​=σ(Xt​Wxr​+Ht−1​Whr​+br​)Zt​=σ(Xt​Wxz​+Ht−1​Whz​+bz​)Ht​=tanh(Xt​Wxh​+(Rt​⊙Ht−1​)Whh​+bh​)Ht​=Zt​⊙Ht−1​+(1−Zt​)⊙Ht​

GRU是Cho等人在LSTM上提出的简化版本,也是RNN的一种扩展,如下图所示。GRU单元只有两个门:

重置门(reset gate):如果重置门关闭,会忽略掉历史信息,即历史不相干的信息不会影响未来的输出。
更新门(update gate):将LSTM的输入门和遗忘门合并,用于控制历史信息对当前时刻隐层输出的影响。如果更新门接近1,会把历史信息传递下去。
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT)
⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系

• 重置⻔有助于捕捉时间序列⾥短期的依赖关系;
• 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。

双向循环神经网络

双向循环神经网络,这里介绍Bengio团队在论文[1,2]中提出的另一种结构。该结构的目的是输入一个序列,得到其在每个时刻的特征表示,即输出的每个时刻都用定长向量表示到该时刻的上下文语义信息。

具体来说,该双向循环神经网络分别在时间维以顺序和逆序——即前向(forward)和后向(backward)——依次处理输入序列,并将每个时间步RNN的输出拼接成为最终的输出层。这样每个时间步的输出节点,都包含了输入序列中当前时刻完整的过去和未来的上下文信息。下图展示的是一个按时间步展开的双向循环神经网络。该网络包含一个前向和一个后向RNN,其中有六个权重矩阵:输入到前向隐层和后向隐层的权重矩阵(W1,W3),隐层到隐层自己的权重矩阵(W2,W5),前向隐层和后向隐层到输出层的权重矩阵(W4,W6)。注意,该网络的前向隐层和后向隐层之间没有连接。

【1】Cho K, Van Merriënboer B, Gulcehre C, et al. Learning phrase representations using RNN encoder-decoder for statistical machine translation[C]//Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), 2014: 1724-1734.

【2】Bahdanau D, Cho K, Bengio Y. Neural machine translation by jointly learning to align and translate[C]//Proceedings of ICLR 2015, 2015.

GRU及双向RNN介绍相关推荐

  1. 深度学习学习笔记——RNN(LSTM、GRU、双向RNN)

    目录 前置知识 循环神经网络(RNN) 文本向量化 RNN 建模 RNN 模型改进 LSTM(Long Short Term Memory) LSTM变形与数学表达式 门控循环单元GRU(Grated ...

  2. 循环神经网络教程-第一部分 RNN介绍

    循环神经网络教程-第一部分 RNN介绍 循环神经网络(RNN)是非常流行的模型,它在许多NLP任务上都表现出了巨大的潜力.虽然它很流行,但是详细介绍RNN以及如何实现RNN的文章却很少.这篇教程旨在解 ...

  3. 递归神经网络教程(1)-RNN介绍

    递归神经网络教程(1)-RNN介绍 Source: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-in ...

  4. JCIM| 基于双向RNN的分子生成模型

    今天给大家介绍的是被誉为"欧陆第一名校"苏黎世联邦理工学院(ETH Zurich)化学与应用生物科学系博士生Francesca Grisoni和制药行业顾问Gisbert Schn ...

  5. rnn按时间展开_双向RNN的理解

    我们在学习某种神经网络模型时,一定要把如下几点理解透了,才算真正理解了这种神经网络. 网络的架构:包含那些层,每层的输入和输出,有那些模型参数是待优化的 前向传播算法 损失函数的定义 后向传播算法 什 ...

  6. 【Pytorch神经网络理论篇】 18 循环神经网络结构:LSTM结构+双向RNN结构

    1 深层循环神经网络的构建 在深层网络结构中,会将简单的RNN模型从两个角度进行改造,具体如下. 使用更复杂的结构作为RNN模型的基本单元,使其在单层网络上提取更好的记忆特征. 将多个基本单元结合起来 ...

  7. lstm原始论文_RNN及其改版(LSTM, 双向RNN, seq2seq)总结

    RNN(Recurrent Neural Networks) 循环神经网络 目的:考虑连续数据的前后关联影响. 方法:将前(和/或 后)方的数据作为一个权重加入到原有推断中. 作用:预测分析,语义分析 ...

  8. 双向RNN:bidirectional_dynamic_rnn()函数

    双向RNN:bidirectional_dynamic_rnn()函数 先说下为什么要使用到双向RNN,在读一篇文章的时候,上文提到的信息十分的重要,但这些信息是不足以捕捉文章信息的,下文隐含的信息同 ...

  9. Lasagne教程+实现双向RNN

    一.Run the MNIST example 1. 多层感知机(Multi-Layer Perceptron) (1)InputLayer是一个输入基础. 其中输入的input_var是一个thea ...

最新文章

  1. [Android]_[初级]_[sdk docs reference api 文档打开慢的解决办法]
  2. 图解机器学习:人人都能懂的算法原理(附链接)
  3. java输出五行菱形_Java打印一个菱形
  4. lpk.dll病毒的现象和手工处理
  5. 开启iOS自动化测试之门
  6. GJM :Sql 各种语句 以及函数 [转载]
  7. Python文件读写模式
  8. Tshark的使用问题
  9. 45度地图遮挡问题解决方案(cocos2d-x)
  10. HDOJ HDU 1849 Rabbit and Grass ACM 1849 IN HDU
  11. 云栖社区 mysql_mysql
  12. Swift3.0P1 语法指南——控制流
  13. comsol 低频电磁场案例(PDF版本)
  14. QQ空间 自动点赞脚本
  15. Java中类和对象的区别
  16. 西南石油大学本科毕业论文答辩PPT模板
  17. TPC,TPCC,TPMC(计算机性能衡量指标)
  18. 深海迷航代码_《深海迷航(Subnautica)》入坑指南
  19. 计算机指数函数表示法,指数函数e^x的快速计算方法
  20. Java数字转大写金额格式小程序代码

热门文章

  1. STM32-点灯程序
  2. OpenStack之部署块存储服务cinder
  3. 我在大厂写React学到了什么?性能优化篇
  4. python爬虫:案例三:去哪儿酒店价格信息
  5. 对标 Amazon Go,这家初创企业盯上了国内无人商店市场
  6. 一个简单的注册页面制作
  7. 告诉你一个cudaMalloc和cudaMallocPitch的秘密
  8. fastjson中出现(syntax error, expect {, actual string, pos 0)错误原因分析
  9. mysql菜鸟指南(增删查改、数据类型、常用命令)
  10. linux系统一直循环登录界面,Ubuntu卡在登陆界面无限循环的问题