GRU & LSTM

参考: c人人都能看懂的LSTM - 知乎

人人都能看懂的GRU - 知乎

GRU是RNN的一种结构,设计思路来源于LSTM,现在大都使用GRU来代替LSTM.因为效果差不多,但是计算更简单,LSTM计算稍微复杂了点.他们都是为了解决长期记忆和反向传播中的梯度等问题而提出来的.

1.介绍一些定义

GRU里面2个重要的门控,reset和update.

h为隐藏层(hidden),t,t-1, ' 表示时间状态.

x为输入,y为输出

\odot为哈达码积,即对应元素相乘

\oplus为矩阵加法操作

2.介绍一些运算

通常,RNN的计算为上一次隐藏层(h^{t-1})+输入(x^{t})得到输出(y^{t}),和下一个隐藏层h^{t}

在GRU内部有重置门和更新门,重置向量和更新向量具体计算步骤如下

其中\sigma为激活函数,sigmoid,W为可学习的权重矩阵,r为重置门的权重向量,z为更新门的权重向量

2.1 进一步通过重置门得到

h^{t-1^{'}}=h^{t-1}\odot r

h^{'}=tanh(W\otimes concat(x^{t},h^{t-1^{'}})))

这里的h^{'}主要是包含了当前输入x^{t}的数据

2.2 再来计算更新门的数据,在这个阶段,我们同时进行了遗忘和记忆两个步骤

h^{t}=(1-z)\odot h^{t-1}+z\odot h^{'}

由2.1的计算得知z为更新门权重,z越大,记忆当前状态越多,遗忘t-1状态越多.门控信号越接近1,代表”记忆“下来的数据越多;而越接近0则代表”遗忘“的越多。

GRU计算性能的提升就在于此,使用一个门控就可以同时进行遗忘和记忆

结合上述,这一步的操作就是忘记传递下来的h^{t-1}中的某些维度信息,并加入当前节点输入的h^{'}某些维度信息。

2.3 最后计算输出

y^{t}=W\otimes h^{t}

这时候反过来再看这张图就很容易理解GRU是怎么运行的了

3.作为对比,看下LSTM原理

LSTM有2个隐藏层,h和c

有3个门控,f=forget,i=infomation,o=output

z这一层的计算都是类似的,,输入完全相同,i,f,o的权重w不同,z为对输入的变换

tanh将数据变换为-1到1,sigmoid将数据变换为0-1作为权重

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值