1.Gated Recurrent Unit(GRU)門控循環(huán)單元
GRU改變了RNN隱藏層單元使其更好的捕捉深層連接快压,并改善了梯度消失問題。
相比于普通的RNN隱藏層單元垃瞧,GRU增加了一個C(memory cell)記憶細(xì)胞,以增加記憶功能坪郭。
普通的RNN單元如下圖所示:
簡化版的GRU如下圖所示:
其中---<t>表示上標(biāo):
c<t>:記憶細(xì)胞的在t時間步的值,表示是否要記憶此處的信息歪沃,GRU中c<t>=a<t>?
c^<t>:重寫記憶細(xì)胞的候選值嗦锐,是否采用這個值來更新c<t>取決于Γu
Γu:更新門,u=update沪曙,決定什么時候更新記憶細(xì)胞奕污,取值范圍在0~1,0表示不更新記憶細(xì)胞即保持之前的值液走,1表示更新記憶細(xì)胞為候選值碳默。
完整的GRU增加了一個相關(guān)門Γr,表示c<t?1>跟新的候選值c^<t>之間的相關(guān)性缘眶。
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結(jié)構(gòu)更簡單顶燕,更有利于構(gòu)建深層的RNN凑保,LSTM功能更強(qiáng)大冈爹。
3. Bidirectional RNN雙向循環(huán)神經(jīng)網(wǎng)絡(luò)(BRNN)
此網(wǎng)絡(luò)結(jié)構(gòu)使得在序列的某點(diǎn),既可以獲得之前的信息欧引,也可以獲得之后的信息犯助。
以一個人名實(shí)體識別的例子來說明,下面兩句話维咸,判斷Teddy是不是一個人名剂买,只有前面的信息是不足夠的
圖中最下面x<1> x<4>x<1> x<4>表示輸入的前四個單詞,紫色框表示的是正向循環(huán)層癌蓖,綠色框是反向循環(huán)層瞬哼,正向循環(huán)和反向循環(huán)構(gòu)成一個無環(huán)圖,都屬于正向傳播租副,各值計算順序如下:
a?<1>?a?<2>?a?<3>?a?<4>?a←<4>?a←<3>?a←<2>?a←<1>
所有的激活值都計算完畢之后坐慰,就可以計算預(yù)測值了:
y^<t>=g(wy[a?<t>,a←<t>]+by)
其中各單元可以是標(biāo)準(zhǔn)RNN單元,也可以是GRU單元用僧、LSTM單元结胀,對于NLP問題來說基于LSTM單元的BRNN用的比較多。
BRNN缺點(diǎn):需要完整序列的數(shù)據(jù)才能預(yù)測责循。對于語音識別來說糟港,也就是必須等到講話的人講完,才能預(yù)測院仿,這并不能滿足我們的需求秸抚,所以語音識別通常用其他更復(fù)雜的模型,而BRNN較廣泛的應(yīng)用于NLP問題歹垫。
4. Deep RNN
對于RNN來說一般很少像CNN那樣堆疊很多層剥汤,3層對RNN來說就已經(jīng)非常龐大了。如果需要堆疊多層排惨,一般會刪去水平連接吭敢。(以下是有三個隱層的網(wǎng)絡(luò))
某個RNN單元可以是標(biāo)準(zhǔn)RNN單元,也可以是GRU單元暮芭、LSTM單元甚至BRNN單元鹿驼,可以自由設(shè)置。