循环神经网络教程 Part 4笔记

Note: RECURRENT NEURAL NETWORK TUTORIAL, PART 4 – IMPLEMENTING A GRU/LSTM RNN WITH PYTHON AND THEANO
本教程包括以下几个部分
1.Introduction To RNNs
2.Implementing a RNN using Python and Theano
3.Understanding the Backpropagation Through Time (BPTT) algorithm and the vanishing gradient problem
4.Implementing a GRU/LSTM RNN

本文我们将学习LSTM网络和GRUs(Gated Recurrent Units).LSTMs首次由 Sepp Hochreiter和 Jürgen Schmidhuber于1997年提出。GRUs,于2014年首次使用,是LSTMs的一个简单变体。

LSTM网络

LSTMs我们通过一个门限机制设计用来处理梯度消失问题。首先来看LSTM如何计算隐层状态 st (用 代表元素相乘)
ifogctst=σ(xtUi+st1Wi)=σ(xtUf+st1Wf)=σ(xtUo+st1Wo)=σ(xtUg+st1Wg)=ct1f+gi=tanh(ct)o

  • i,f,o 分别叫做input,forget,output gates(门)。注意他们方程完全相同,只是参数不同。称其为门限,是因为sigmod函数将向量的值压缩到0-1之间,通过将其与另一个向量元素相乘,你就可以确定该向量的哪些部分可以通过。输入门定义了对输入新计算的状态的允许通过的部分。遗忘门定义了前一状态允许通过的程度,输出门定义了允许中间层输出暴露给外部网络的程度。
  • g是候选隐层状态,根据当前输入及前一隐层状态计算。与原始RNN计算方式完全相同。
  • ct 是中间记忆单元。是前一状态和遗忘门的乘积,以及新状态g和输入门的乘积。
  • 对于记忆 ct 。不是所有的中间状态层与隐层状态相关。
    标准RNN可以看做LSTMs的一个特例。即输入门置1,遗忘门置0,输出门置1。

LSTM Gating.
另外还有很多LSTM的变体。一个比较常见的变体是创建一个peephole连接,从而允许门限不仅依赖于上一隐层,还依赖于上一中间状态层。 LSTM: A Search Space Odyssey 介绍了各种LSTM结构。

GRUs

GRU的思想与LSTM十分类似,如公式:

zrhst=σ(xtUz+st1Wz)=σ(xtUr+st1Wr)=tanh(xtUh+(st1r)Wh)=(1z)h+zst1

GRU有两个门,重置门 r ,和更新门z。重置门决定如何将新的输入与先前记忆连接,更新门决定保留多少先前记忆。如果我们设置重置门为1,更新门为0,我们又得到标准RNN。利用门限机制学习长依赖的基本思想与LSTM相同,但有几点关键区别:

  • GRU有两个门限,LSTM有三个。
  • 输入门和遗忘门通过更新门组合,重置门直接应用于前一隐层状态。因此,LSTM中的重置门的任务分担到(GRU中的)重置门与更新门中。
  • 计算输出时没有采用第二个非线性单元。

GRU Gating

GRU VS LSTM

许多任务中,GRU和LSTM具有相当的性能,超参数的调整比结构的选择更为重要。GRUs参数更少,因此训练速度会快一点,或者需要更少的数据去泛化。也就是说,如果你有更多的数据,LSTMs也许会有更好的结果。

参考博文
http://www.wildml.com/2015/10/recurrent-neural-network-tutorial-part-4-implementing-a-grulstm-rnn-with-python-and-theano/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值