RNN\LSTM\GRU常见结构

     RNN已经发展十分成熟,但仍然有许多认知仅仅停留在“RNN具有处理时间序列的输入”,对于RNN的框架结构,以及为什么演变到LSTM,LSTM如何演变到GRU却是十分含糊。本篇博客,旨在记录笔者对RNN的理解和LSTM的认知,主要从结构上、和部分公式角度理解RNN和LSTM结构。主要学习内容来自《深度学习》伊恩 古德费洛。

1 RNN 结构

    RNN(Recurrent neural network)是一类用于处理序列数据的神经网络。循环神经网络以不同的方式共享参数。输出的每一项是前一项的函数。输出的每一项对先前的输出应用相同的更新规则而产生。循环神经网络中一些重要的设计模式包括以下几种:

    (1)每个时间步都有输出,并且隐藏单元之间有循环连接的循环网络;

    (2)每个时间步都产生一个输出,只有当前时刻的输出到下个时刻的隐藏单元之间有循环连接的循环网络。

    (3)隐藏单元之间存在循环连接,但读取整个序列后产生单个输出的循环网络。

对于(1),各层计算公式如下:

                                                                  h^{(t)}=tanh(b+Wh^{(t-1)}+Ux^{(t)})

                                                                                     o^{(t)}=c+Vh^{(t)}

                                                                               \widehat{y}^{(t)}=softmax(o^{(t)})

                        L({x^{(1)},x^{(2)},...,x^{(T)}},{y^{(1)},y^{(2)},...,y^{(T)}})=\sum _{t}L^{(t)}=-\sum_{t}log p_{model}(y^{(t)}|{x^{(1)},x^{(2)},...,x^{(t)}})

2 LSTM结构

长短期记忆:引入自循环的巧妙构思长时间持续流动的路径,其中一个关键的扩展自循环的权重是视上下文而定,而非固定的。门控自循环的权重,累积的时间长度可以动态地改变。

input gate:   g_{t}= \sigma {b_{g}+W_{g}h(t-1)+U_{g}x_{t}}

forget gate:  f_{t}= \sigma {b_{f}+W_{f}h(t-1)+U_{f}x_{t}}

output gate:  q_{t}= \sigma {b_{q}+W_{q}h(t-1)+U_{q}x_{t}}

new memory cell : \tilde{c_{t}}=\sigma(b_{c}+W_{c}h_{t-1}+U_{c}x_{t})

final memory cell : c_{t}=f_{t}\odot c_{t-1}+g_{t}\odot \tilde{c_{t}}

final hidden state : h_{t}=tanh(c_{t})\odot q_{t}

结构图如图:

3 GRU结构

GRU相较于LSTM仅有两个单元门,其公式如下:

reset gate: r_{t}=\sigma (W_{r}x_{t}+U_{r}h_{t-1}+b_{r})

update gate : z_{t}=\sigma (W_{z}x_{t}+U_{z}h_{t-1}+b_{z})

new memory : \tilde{h_{t}}=tanh(W_{h}x_{t}+r_{t}\odot (U_{h}h_{t-1})+b_{h})

final hidden state : h_{t}=z_{t}\odot h_{t-1}+(1-z_{t})\odot \tilde{h_{t}}

4 总结

(1)RNN存在梯度爆炸或者梯度消失问题,对于长句子存在无法记忆前面信息的问题。

(2)LSTM针对RNN存在的梯度爆炸或梯度消失有一定的改进,但对于长句子仍然存在效果不好的情况。

(3)GRU相对于LSTM,门控少一些,参数量减少,小数据量时或者数据量不够大时,效果与LSTM相当或者稍微好一些,但数据量较大时,LSTM效果更好。

(4)tensorflow中rnn模块,存在静态和动态的写法,单向和双向的写法,根据自己的需求进行设定。rnn cell输出单元通常是tuple,需要进行修改。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值