数据分析

深度学习之RNN的改进算法(LSTM、GRU、双向RNN、Dee

2019-05-09  本文已影响2352人  你要好好学习呀


1.Gated Recurrent Unit(GRU)门控循环单元

GRU改变了RNN隐藏层单元使其更好的捕捉深层连接,并改善了梯度消失问题。

相比于普通的RNN隐藏层单元,GRU增加了一个C(memory cell)记忆细胞,以增加记忆功能。

普通的RNN单元如下图所示:

简化版的GRU如下图所示:

其中---<t>表示上标:

c<t>:记忆细胞的在t时间步的值,表示是否要记忆此处的信息,GRU中c<t>=a<t> 

c^<t>:重写记忆细胞的候选值,是否采用这个值来更新c<t>取决于Γu

Γu:更新门,u=update,决定什么时候更新记忆细胞,取值范围在0~1,0表示不更新记忆细胞即保持之前的值,1表示更新记忆细胞为候选值。

完整的GRU增加了一个相关门Γr,表示c<t−1>跟新的候选值c^<t>之间的相关性。

2. LSTM(Long short term memory) Unit长短时记忆单元

LSTM比之GRU更加有效。注意:LSTM中c<t>和a<t>将不再相等。

Γu:更新门(update)

Γf:遗忘门(forget)

Γo:输出门(output)

peephole connection窥视孔连接,将c<t−1>加入到对门的计算中,也就是门由c<t−1>,a<t−1>,x<t>共同决定。

GRU和LSTM比较:

GRU结构更简单,更有利于构建深层的RNN,LSTM功能更强大。

3. Bidirectional RNN双向循环神经网络(BRNN)

此网络结构使得在序列的某点,既可以获得之前的信息,也可以获得之后的信息。

以一个人名实体识别的例子来说明,下面两句话,判断Teddy是不是一个人名,只有前面的信息是不足够的

图中最下面x<1> x<4>x<1> x<4>表示输入的前四个单词,紫色框表示的是正向循环层,绿色框是反向循环层,正向循环和反向循环构成一个无环图,都属于正向传播,各值计算顺序如下:

a⃗<1>−a⃗<2>−a⃗<3>−a⃗<4>−a←<4>−a←<3>−a←<2>−a←<1>

所有的激活值都计算完毕之后,就可以计算预测值了:

y^<t>=g(wy[a⃗<t>,a←<t>]+by)

其中各单元可以是标准RNN单元,也可以是GRU单元、LSTM单元,对于NLP问题来说基于LSTM单元的BRNN用的比较多。

BRNN缺点:需要完整序列的数据才能预测。对于语音识别来说,也就是必须等到讲话的人讲完,才能预测,这并不能满足我们的需求,所以语音识别通常用其他更复杂的模型,而BRNN较广泛的应用于NLP问题。

4. Deep RNN

对于RNN来说一般很少像CNN那样堆叠很多层,3层对RNN来说就已经非常庞大了。如果需要堆叠多层,一般会删去水平连接。(以下是有三个隐层的网络)

某个RNN单元可以是标准RNN单元,也可以是GRU单元、LSTM单元甚至BRNN单元,可以自由设置。

上一篇下一篇

猜你喜欢

热点阅读