1.Gated Recurrent Unit(GRU)门控循环单元
GRU改变了RNN隐藏层单元使其更好的捕捉深层连接,并改善了梯度消失问题。
相比于普通的RNN隐藏层单元,GRU增加了一个C(memory cell)记忆细胞,以增加记忆功能。
普通的RNN单元如下图所示:
简化版的GRU如下图所示:
其中---
c
c^
Γu:更新门,u=update,决定什么时候更新记忆细胞,取值范围在0~1,0表示不更新记忆细胞即保持之前的值,1表示更新记忆细胞为候选值。
完整的GRU增加了一个相关门Γr,表示c
2. LSTM(Long short term memory) Unit长短时记忆单元
LSTM比之GRU更加有效。注意:LSTM中c
Γu:更新门(update)
Γf:遗忘门(forget)
Γo:输出门(output)
peephole connection窥视孔连接,将c
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^
其中各单元可以是标准RNN单元,也可以是GRU单元、LSTM单元,对于NLP问题来说基于LSTM单元的BRNN用的比较多。
BRNN缺点:需要完整序列的数据才能预测。对于语音识别来说,也就是必须等到讲话的人讲完,才能预测,这并不能满足我们的需求,所以语音识别通常用其他更复杂的模型,而BRNN较广泛的应用于NLP问题。
4. Deep RNN
对于RNN来说一般很少像CNN那样堆叠很多层,3层对RNN来说就已经非常庞大了。如果需要堆叠多层,一般会删去水平连接。(以下是有三个隐层的网络)
某个RNN单元可以是标准RNN单元,也可以是GRU单元、LSTM单元甚至BRNN单元,可以自由设置。