注意:本文為學(xué)習(xí)筆記,大量直接復(fù)制于參考文章中的原文字及圖片
一、簡(jiǎn)介
遞歸神經(jīng)網(wǎng)絡(luò)(RNN)是兩種人工神經(jīng)網(wǎng)絡(luò)的總稱。一種是時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)(recurrent neural network),另一種是結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural network)。時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)的神經(jīng)元間連接構(gòu)成有向圖,而結(jié)構(gòu)遞歸神經(jīng)網(wǎng)絡(luò)利用相似的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)遞歸構(gòu)造更為復(fù)雜的深度網(wǎng)絡(luò)。RNN一般指代時(shí)間遞歸神經(jīng)網(wǎng)絡(luò)。
RNNs的目的使用來(lái)處理序列數(shù)據(jù)。在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)模型中,是從輸入層到隱含層再到輸出層,層與層之間是全連接的,每層之間的節(jié)點(diǎn)是無(wú)連接的。例如,你要預(yù)測(cè)句子的下一個(gè)單詞是什么,一般需要用到前面的詞,因?yàn)榫渥忧昂蟮膯卧~并不是獨(dú)立的。
RNNs之所以稱為循環(huán)神經(jīng)網(wǎng)路,即一個(gè)序列當(dāng)前的輸出與前面的輸出也有關(guān)。具體的表現(xiàn)形式為網(wǎng)絡(luò)會(huì)對(duì)前面的信息進(jìn)行記憶并應(yīng)用于當(dāng)前輸出的計(jì)算中,即隱藏層之間的節(jié)點(diǎn)不再無(wú)連接而是有連接的,并且隱藏層的輸入不僅包括輸入層的輸出還包括上一時(shí)刻隱藏層的輸出。理論上,RNNs能夠?qū)θ魏伍L(zhǎng)度的序列數(shù)據(jù)進(jìn)行處理。但是在實(shí)踐中,為了降低復(fù)雜性往往假設(shè)當(dāng)前的狀態(tài)只與前面的幾個(gè)狀態(tài)相關(guān),下圖便是一個(gè)典型的RNNs:


二、訓(xùn)練
對(duì)于RNN是的訓(xùn)練和對(duì)傳統(tǒng)的ANN訓(xùn)練一樣。同樣使用BP誤差反向傳播算法,不過有一點(diǎn)區(qū)別。如果將RNNs進(jìn)行網(wǎng)絡(luò)展開,那么參數(shù)W,U,V是共享的,而傳統(tǒng)神經(jīng)網(wǎng)絡(luò)卻不是的。并且在使用梯度下降算法中,每一步的輸出不僅依賴當(dāng)前步的網(wǎng)絡(luò),并且還以來(lái)前面若干步網(wǎng)絡(luò)的狀態(tài)。比如,在t=4時(shí),我們還需要向后傳遞三步,已經(jīng)后面的三步都需要加上各種的梯度。該學(xué)習(xí)算法稱為Backpropagation Through Time (BPTT)。
先來(lái)看一看符號(hào)注解:

上述符號(hào)的關(guān)系如下:


具體的計(jì)算過程在這里不詳細(xì)寫,大家想看的去看參考文章BPTT算法推導(dǎo)。求偏導(dǎo)是為了求損失函數(shù)的最小值,可以看看之前的關(guān)于BP的文章。




三、應(yīng)用
RNNs已經(jīng)被在實(shí)踐中證明對(duì)NLP是非常成功的。如詞向量表達(dá)、語(yǔ)句合法性檢查、詞性標(biāo)注等。
- 語(yǔ)言模型與文本生成(Language Modeling and Generating Text)
給你一個(gè)單詞序列,我們需要根據(jù)前面的單詞預(yù)測(cè)每一個(gè)單詞的可能性。 - 機(jī)器翻譯(Machine Translation)
機(jī)器翻譯是將一種源語(yǔ)言語(yǔ)句變成意思相同的另一種源語(yǔ)言語(yǔ)句,如將英語(yǔ)語(yǔ)句變成同樣意思的中文語(yǔ)句。與語(yǔ)言模型關(guān)鍵的區(qū)別在于,需要將源語(yǔ)言語(yǔ)句序列輸入后,才進(jìn)行輸出,即輸出第一個(gè)單詞時(shí),便需要從完整的輸入序列中進(jìn)行獲取。

- 語(yǔ)音識(shí)別(Speech Recognition)
語(yǔ)音識(shí)別是指給一段聲波的聲音信號(hào),預(yù)測(cè)該聲波對(duì)應(yīng)的某種指定源語(yǔ)言的語(yǔ)句以及該語(yǔ)句的概率值。 - 圖像描述生成 (Generating Image Descriptions)
和卷積神經(jīng)網(wǎng)絡(luò)(convolutional Neural Networks, CNNs)一樣,RNNs已經(jīng)在對(duì)無(wú)標(biāo)圖像描述自動(dòng)生成中得到應(yīng)用。將CNNs與RNNs結(jié)合進(jìn)行圖像描述自動(dòng)生成。這是一個(gè)非常神奇的研究與應(yīng)用。該組合模型能夠根據(jù)圖像的特征生成描述。

參考文章:
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN, Recurrent Neural Networks)介紹
遞歸神經(jīng)網(wǎng)絡(luò)-維基百科
BPTT算法推導(dǎo)