幾種常見(jiàn)的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)RNN、LSTM、GRU

幾種常見(jiàn)的循環(huán)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)RNN、LSTM、GRU

一、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

傳統(tǒng)文本處理任務(wù)的方法中一般將TF-IDF向量作為特征輸入。顯而易見(jiàn),這樣的表示實(shí)際上丟失了輸入的文本序列中每個(gè)單詞的順序。在神經(jīng)網(wǎng)絡(luò)的建模過(guò)程中,一般的前饋神經(jīng)網(wǎng)絡(luò),如卷積神經(jīng)網(wǎng)絡(luò),通常接受一個(gè)定長(zhǎng)的向量作為輸入。卷積神經(jīng)網(wǎng)絡(luò)對(duì)文本數(shù)據(jù)建模時(shí),輸入變長(zhǎng)的字符串或者單詞串,然后通過(guò)滑動(dòng)窗口加池化的方式將原先的輸入轉(zhuǎn)換成一個(gè)固定長(zhǎng)度的向量表示,這樣做可以捕捉到原文本中的一些局部特征,但是兩個(gè)單詞之間的長(zhǎng)距離依賴(lài)關(guān)系還是很難被學(xué)習(xí)到。
循環(huán)神經(jīng)網(wǎng)絡(luò)卻能很好地處理文本數(shù)據(jù)變長(zhǎng)并且有序的輸入序列。它模擬了人閱讀一篇文章的順序,從前到后閱讀文章中的每一個(gè)單詞,將前面閱讀到的有用信息編碼到狀態(tài)變量中去,從而擁有了一定的記憶能力,可以更好地理解之后的文本。
其網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示:

循環(huán)神經(jīng)網(wǎng)絡(luò)

由圖可見(jiàn),t是時(shí)刻,x是輸入層,s是隱藏層,o是輸出層,矩陣W就是隱藏層上一次的值作為這一次的輸入的權(quán)重。

輸出層o和隱藏層s的計(jì)算方法

如果反復(fù)把式 2 帶入到式 1,將得到:

反復(fù)把式2帶入到式1,得到的形式如圖

其中f和g為激活函數(shù),U為輸入層到隱含層的權(quán)重矩陣,W為隱含層從上一時(shí)刻到下一時(shí)刻狀態(tài)轉(zhuǎn)移的權(quán)重矩陣。在文本分類(lèi)任務(wù)中,f可以選取Tanh函數(shù)或者ReLU函數(shù),g可以采用Softmax函數(shù)。

通過(guò)最小化損失誤差(即輸出的y與真實(shí)類(lèi)別之間的距離),我們可以不斷訓(xùn)練網(wǎng)絡(luò),使得得到的循環(huán)神經(jīng)網(wǎng)絡(luò)可以準(zhǔn)確地預(yù)測(cè)文本所屬的類(lèi)別,達(dá)到分類(lèi)目的。相比于卷積神經(jīng)網(wǎng)絡(luò)等前饋神經(jīng)網(wǎng)絡(luò),循環(huán)神經(jīng)網(wǎng)絡(luò)由于具備對(duì)序列順序信息的刻畫(huà)能力,往往能得到更準(zhǔn)確的結(jié)果。

訓(xùn)練算法

RNN的訓(xùn)練算法為:BPTT
BPTT的基本原理和BP算法是一樣的,同樣是三步:
1.前向計(jì)算每個(gè)神經(jīng)元的輸出值;
2.反向計(jì)算每個(gè)神經(jīng)元的誤差項(xiàng)值,它是誤差函數(shù)E對(duì)神經(jīng)元j的加權(quán)輸入的偏導(dǎo)數(shù);
3.計(jì)算每個(gè)權(quán)重的梯度。
最后再用隨機(jī)梯度下降算法更新權(quán)重。
具體參考:http://www.itdecent.cn/p/39a99c88a565
最后由鏈?zhǔn)椒▌t得到下面以雅可比矩陣來(lái)表達(dá)的每個(gè)權(quán)重的梯度:

循環(huán)層權(quán)重矩陣W的梯度的公式
循環(huán)層權(quán)重矩陣U的梯度的公式

由于預(yù)測(cè)的誤差是沿著神經(jīng)網(wǎng)絡(luò)的每一層反向傳播的,因此當(dāng)雅克比矩陣的最大特征值大于1時(shí),隨著離輸出越來(lái)越遠(yuǎn),每層的梯度大小會(huì)呈指數(shù)增長(zhǎng),導(dǎo)致梯度爆炸;反之,若雅克比矩陣的最大特征值小于1,梯度的大小會(huì)呈指數(shù)縮小,產(chǎn)生梯度消失。對(duì)于普通的前饋網(wǎng)絡(luò)來(lái)說(shuō),梯度消失意味著無(wú)法通過(guò)加深網(wǎng)絡(luò)層次來(lái)改善神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)效果,因?yàn)闊o(wú)論如何加深網(wǎng)絡(luò),只有靠近輸出的若干層才真正起到學(xué)習(xí)的作用。這使得循環(huán)神經(jīng)網(wǎng)絡(luò)模型很難學(xué)習(xí)到輸入序列中的長(zhǎng)距離依賴(lài)關(guān)系。

關(guān)于RNN梯度下降的詳細(xì)推導(dǎo)可以參考:https://zhuanlan.zhihu.com/p/44163528

梯度爆炸的問(wèn)題可以通過(guò)梯度裁剪來(lái)緩解,即當(dāng)梯度的范式大于某個(gè)給定值時(shí),對(duì)梯度進(jìn)行等比收縮。而梯度消失問(wèn)題相對(duì)比較棘手,需要對(duì)模型本身進(jìn)行改進(jìn)。深度殘差網(wǎng)絡(luò)是對(duì)前饋神經(jīng)網(wǎng)絡(luò)的改進(jìn),通過(guò)殘差學(xué)習(xí)的方式緩解了梯度消失的現(xiàn)象,從而使得我們能夠?qū)W習(xí)到更深層的網(wǎng)絡(luò)表示;而對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),長(zhǎng)短時(shí)記憶模型及其變種門(mén)控循環(huán)單元等模型通過(guò)加入門(mén)控機(jī)制,很大程度上彌補(bǔ)了梯度消失所帶來(lái)的損失。

二、長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)

LSTM的網(wǎng)絡(luò)機(jī)構(gòu)圖如下所示:

LSTM的網(wǎng)絡(luò)結(jié)構(gòu)

與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)相比,LSTM仍然是基于xt和ht?1來(lái)計(jì)算ht,只不過(guò)對(duì)內(nèi)部的結(jié)構(gòu)進(jìn)行了更加精心的設(shè)計(jì),加入了輸入門(mén)it 、遺忘門(mén)ft以及輸出門(mén)ot三個(gè)門(mén)和一個(gè)內(nèi)部記憶單元ct。輸入門(mén)控制當(dāng)前計(jì)算的新?tīng)顟B(tài)以多大程度更新到記憶單元中;遺忘門(mén)控制前一步記憶單元中的信息有多大程度被遺忘掉;輸出門(mén)控制當(dāng)前的輸出有多大程度上取決于當(dāng)前的記憶單元。

在經(jīng)典的LSTM模型中,第t層的更新計(jì)算公式為

輸入門(mén)計(jì)算公式
遺忘門(mén)計(jì)算公式
輸出門(mén)計(jì)算公式
候選層計(jì)算公式
記憶單元更新公式
每層輸出的信息的計(jì)算公式

其中it是通過(guò)輸入xt和上一步的隱含層輸出ht?1進(jìn)行線(xiàn)性變換,再經(jīng)過(guò)激活函數(shù)σ得到的。輸入門(mén)it的結(jié)果是向量,其中每個(gè)元素是0到1之間的實(shí)數(shù),用于控制各維度流過(guò)閥門(mén)的信息量;Wi 、Ui兩個(gè)矩陣和向量bi為輸入門(mén)的參數(shù),是在訓(xùn)練過(guò)程中需要學(xué)習(xí)得到的。遺忘門(mén)ft和輸出門(mén)ot的計(jì)算方式與輸入門(mén)類(lèi)似,它們有各自的參數(shù)W、U和b。與傳統(tǒng)的循環(huán)神經(jīng)網(wǎng)絡(luò)不同的是,從上一個(gè)記憶單元的狀態(tài)ct?1到當(dāng)前的狀態(tài)ct的轉(zhuǎn)移不一定完全取決于激活函數(shù)計(jì)算得到的狀態(tài),還由輸入門(mén)和遺忘門(mén)來(lái)共同控制。

在一個(gè)訓(xùn)練好的網(wǎng)絡(luò)中,當(dāng)輸入的序列中沒(méi)有重要信息時(shí),LSTM的遺忘門(mén)的值接近于1,輸入門(mén)的值接近于0,此時(shí)過(guò)去的記憶會(huì)被保存,從而實(shí)現(xiàn)了長(zhǎng)期記憶功能;當(dāng)輸入的序列中出現(xiàn)了重要的信息時(shí),LSTM應(yīng)當(dāng)把其存入記憶中,此時(shí)其輸入門(mén)的值會(huì)接近于1;當(dāng)輸入的序列中出現(xiàn)了重要信息,且該信息意味著之前的記憶不再重要時(shí),輸入門(mén)的值接近1,而遺忘門(mén)的值接近于0,這樣舊的記憶被遺忘,新的重要信息被記憶。經(jīng)過(guò)這樣的設(shè)計(jì),整個(gè)網(wǎng)絡(luò)更容易學(xué)習(xí)到序列之間的長(zhǎng)期依賴(lài)。

三、門(mén)控循環(huán)單元(GRU)

GRU是在LSTM上進(jìn)行簡(jiǎn)化而得到的,GRU的網(wǎng)絡(luò)結(jié)構(gòu)如下所示:

GRU的網(wǎng)絡(luò)結(jié)構(gòu)圖及其公式

Zt代表更新門(mén),更新門(mén)的作用類(lèi)似于LSTM中的遺忘門(mén)和輸入門(mén),它能決定要丟棄哪些信息和要添加哪些新信息。
Rt代表重置門(mén),重置門(mén)用于決定丟棄先前信息的程度。

要注意的是,h只是一個(gè)變量,因此在每個(gè)時(shí)刻,包括最后的線(xiàn)性組合,h都是在用以前的自己和當(dāng)前的備選答案更新自己。舉例來(lái)說(shuō),這一個(gè)變量好比一杯酒,每次我們要把一部分酒倒出去,并把倒出去的酒和新加入的原料混合,然后在倒回來(lái),這里的reset控制的就是要倒出去的,并且混合好之后再倒回來(lái)的酒的比例,而update控制的則是用多大的比例混合新原料和倒出來(lái)的之前調(diào)制好的酒。同理,也可以以此理解LSTM,LSTM的遺忘門(mén)功能上和reset相似,而輸入門(mén)與update相似,不同之處在于LSTM還控制了當(dāng)前狀態(tài)的exposure,也就是輸出門(mén)的功能,這是GRU所沒(méi)有的。

四、參考資料

1.百面機(jī)器學(xué)習(xí)
2.https://zhuanlan.zhihu.com/p/45649187
3.http://www.itdecent.cn/p/39a99c88a565

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 我是日記星球第176號(hào)星寶寶,我正在參加日記星球第18期蛻變之旅,這是我的第180篇原創(chuàng)日記。如果你想在2018年...
    林筱芬閱讀 282評(píng)論 0 0

友情鏈接更多精彩內(nèi)容