循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是一種特殊的網(wǎng)絡(luò)結(jié)構(gòu),特殊在于同一隱藏層的節(jié)點(diǎn)之間是有連接的。還有個(gè)最大的特點(diǎn)是在于將時(shí)間序列思想引入到神經(jīng)網(wǎng)絡(luò)構(gòu)建中,通過(guò)時(shí)間關(guān)系不斷加強(qiáng)數(shù)據(jù)間的影響關(guān)系。結(jié)合過(guò)去的經(jīng)驗(yàn)記憶和現(xiàn)正在學(xué)習(xí)的知識(shí),融合貫通得到現(xiàn)在的認(rèn)知。也就是說(shuō)RNN模型不僅考慮到當(dāng)前的輸入,還賦予網(wǎng)絡(luò)對(duì)過(guò)去的記憶,并且隱藏層的輸入不僅包括當(dāng)前時(shí)刻的輸入,還需要加入上一時(shí)刻隱藏層的輸出。
1)循環(huán)神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)
2)循環(huán)神經(jīng)網(wǎng)絡(luò)的改進(jìn)結(jié)構(gòu)
3)循環(huán)神經(jīng)網(wǎng)絡(luò)的應(yīng)用
RNN可有多個(gè)隱藏層,隱藏層可不斷的循環(huán)和遞歸信息。例如,在雙層循環(huán)神經(jīng)網(wǎng)絡(luò)中,數(shù)據(jù)進(jìn)入第一隱藏層得到的輸出以一定的權(quán)重進(jìn)入第二隱藏層,然后最后一層的輸出反過(guò)來(lái)通過(guò)損失函數(shù),反向調(diào)整各層的連接權(quán)重,利用梯度下降方法尋找最優(yōu)化參數(shù)。
RNN網(wǎng)絡(luò)結(jié)構(gòu)大致是由輸入層、隱藏層、輸出層構(gòu)成。如圖1.1所示:
雖然RNN可以處理序列信息,但比較偏向最后輸入的信息,這使得較早留下的信息越來(lái)越少,甚至丟失。同時(shí)在網(wǎng)絡(luò)訓(xùn)練過(guò)程中,梯度也會(huì)隨著時(shí)序(鏈?zhǔn)椒▌t求導(dǎo))逐漸消失,也就是我們常說(shuō)的梯度消失或爆炸。
對(duì)于這一問(wèn)題,目前主要采用的解決方案有:
1)避免使用極大或極小值來(lái)初始化權(quán)重。
2)改進(jìn)RNN結(jié)構(gòu),使得它能夠很好的處理長(zhǎng)時(shí)間的記憶問(wèn)題,如今對(duì)此處理效果好的結(jié)構(gòu)有LSTM(長(zhǎng)短期記憶網(wǎng)絡(luò))和GRU(門控循環(huán)單元)。
1.1 LSTM網(wǎng)絡(luò)結(jié)構(gòu)
LSTM是RNN的改進(jìn)。在傳統(tǒng)的RNN結(jié)構(gòu)中,隱藏層每個(gè)神經(jīng)元(也稱記憶細(xì)胞)只包含一個(gè)簡(jiǎn)單激活函數(shù),而LSTM在細(xì)胞中構(gòu)建了四層網(wǎng)絡(luò)結(jié)構(gòu),5個(gè)激活函數(shù)。如圖1.2所示,它克服了原始RNN的不足,可通過(guò)門控機(jī)制回憶過(guò)去,并且有選擇性的忘記一些不重要的信息來(lái)解決學(xué)習(xí)長(zhǎng)期依賴關(guān)系。
LSTM主要是通過(guò)遺忘門、輸入門、輸出門和細(xì)胞狀態(tài)來(lái)控制信息的傳遞。遺忘門可以理解為一種選擇性忘記策略,它控制了上一時(shí)刻有多少信息流入當(dāng)前時(shí)刻。輸入門決定了當(dāng)前的輸入有多少進(jìn)入細(xì)胞單元,輸出門控制當(dāng)前細(xì)胞單元流向下一時(shí)刻的內(nèi)容有多少。細(xì)胞狀態(tài)類似一個(gè)傳送帶,在整個(gè)鏈上運(yùn)行,存在一些線性關(guān)系,信息容易流傳。
1.2 GRU網(wǎng)絡(luò)結(jié)構(gòu)
LSTM內(nèi)部結(jié)構(gòu)比較復(fù)雜,因此就衍生了簡(jiǎn)化版GRU。
GRU可看成是LSTM的改進(jìn),將遺忘門和輸入門合并成為一個(gè)單一的更新門,同時(shí)合并了LSTM中原有的細(xì)胞更新?tīng)顟B(tài)和輸出狀態(tài),結(jié)構(gòu)比LSTM更簡(jiǎn)單,運(yùn)行速度要更快。在實(shí)際運(yùn)用方面,效果能夠與LSTM媲美,甚至更好。
1.3 Bi-LSTM網(wǎng)絡(luò)結(jié)構(gòu)
Bi-LSTM又稱雙向長(zhǎng)短期記憶網(wǎng)絡(luò),是結(jié)合正反兩個(gè)方向的LSTM網(wǎng)絡(luò)。LSTM擅長(zhǎng)處理連續(xù)數(shù)據(jù),若是單向的LSTM,就只能學(xué)習(xí)一個(gè)方向的規(guī)律,而B(niǎo)i-LSTM不僅可以學(xué)習(xí)它的正向規(guī)律,還可以學(xué)習(xí)反向規(guī)律[50]。文本、語(yǔ)句等包含博大精深的信息,正向理解與反向理解也許是不同的句意,故使用正反兩向相結(jié)合的LSTM網(wǎng)絡(luò)會(huì)比單向LSTM網(wǎng)絡(luò)有更高的擬合度。
RNN模型有比較多的變種,這里介紹最主流的RNN模型結(jié)構(gòu)如下:
上圖中左邊是RNN模型沒(méi)有按時(shí)間展開(kāi)的圖,如果按時(shí)間序列展開(kāi),則是上圖中的右邊部分。我們重點(diǎn)觀察右邊部分的圖。
2.1 前向傳播算法
有了上面的模型,RNN的前向傳播算法就很容易得到了。
2.2 反向傳播算法
有了RNN前向傳播算法的基礎(chǔ),就容易推導(dǎo)出RNN反向傳播算法的流程了。RNN反向傳播算法的思路和DNN是一樣的,即通過(guò)梯度下降法一輪輪的迭代,得到合適的RNN模型參數(shù)U,W,V,b,c。由于我們是基于時(shí)間反向傳播,所以RNN的反向傳播有時(shí)也叫做BPTT。當(dāng)然這里的BPTT和DNN也有很大的不同點(diǎn),即這里所有的U,W,V,b,c在序列的各個(gè)位置是共享的,反向傳播時(shí)我們更新的是相同的參數(shù)。
單純的循環(huán)神經(jīng)網(wǎng)絡(luò)具有梯度消失或爆炸問(wèn)題,當(dāng)序列很長(zhǎng)的時(shí)候問(wèn)題尤其嚴(yán)重,故一般不能直接用于應(yīng)用領(lǐng)域。LSTM和GRU是RNN的改進(jìn)版,能夠較大的改善梯度消失等問(wèn)題,能夠很好地訓(xùn)練序列數(shù)據(jù)。但由于序列數(shù)據(jù)是逐步加入,不能并行運(yùn)算,故訓(xùn)練速度相比CNN要慢很多,要求運(yùn)行環(huán)境的配置較高。
注意這里所說(shuō)的循環(huán)神經(jīng)網(wǎng)絡(luò)是長(zhǎng)短期記憶網(wǎng)絡(luò)LSTM和門控單元網(wǎng)絡(luò)GRU,它們常用于:
1)文本分類
2)語(yǔ)言識(shí)別
3)時(shí)間序列
4)文本生成
參考文獻(xiàn)
[1] https://www.cnblogs.com/pinard/p/6509630.html
[2] https://blog.csdn.net/qq_23348071/article/details/89073519
[3] https://www.cnblogs.com/arachis/p/RNN.html
[4] https://www.cnblogs.com/pinard/p/6519110.html
[5] https://www.jianshu.com/p/87aa03352eb9
(部分文字、圖片來(lái)自網(wǎng)絡(luò),如涉及侵權(quán),請(qǐng)及時(shí)與我們聯(lián)系,我們會(huì)在第一時(shí)間刪除或處理侵權(quán)內(nèi)容。電話:4006770986 負(fù)責(zé)人:張明)