1. 場(chǎng)景與應(yīng)用
在循環(huán)神經(jīng)網(wǎng)絡(luò)可以用于文本生成、機(jī)器翻譯還有看圖描述等,在這些場(chǎng)景中很多都出現(xiàn)了RNN的身影。
2. RNN的作用
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)DNN或者CNN網(wǎng)絡(luò)他們的輸入和輸出都是獨(dú)立的。對(duì)于這些模型輸入的數(shù)據(jù)跟輸出的數(shù)據(jù)大多是關(guān)聯(lián)不太緊密的場(chǎng)景,但是有些場(chǎng)景輸入的數(shù)據(jù)對(duì)后面輸入的數(shù)據(jù)是有關(guān)系的,或者說(shuō)后面的數(shù)據(jù)跟前面的數(shù)據(jù)是有關(guān)聯(lián)的。例如,對(duì)于文本類(lèi)的數(shù)據(jù),當(dāng)輸入某句話的時(shí)候,剛開(kāi)始輸入第一個(gè)字的時(shí)候,再輸入這句話的第二個(gè)字時(shí)候,其實(shí)第二個(gè)字要輸入什么字其實(shí)是跟第一個(gè)字是有關(guān)聯(lián)的。所以,對(duì)于這樣一類(lèi)的場(chǎng)景,通常是要考慮前面的信息的,以至于引入RNN模型。
對(duì)于RNN模型為解決這類(lèi)問(wèn)題引入了“記憶”這一概念。循環(huán)神經(jīng)網(wǎng)絡(luò)的循環(huán)來(lái)源于其每個(gè)元素中都執(zhí)行相同的任務(wù),但是輸出依賴(lài)于輸入和“記憶”兩個(gè)部分。
3. RNN結(jié)構(gòu)

從圖中看,對(duì)于RNN網(wǎng)絡(luò)是按照時(shí)間序列展開(kāi)的。對(duì)于圖中的變量Wt,是在時(shí)刻t處的輸入,St是時(shí)間t處的“記憶”,St=f(UXt+WSt?1 + b),f可以是tanh等,f取tanh會(huì)把數(shù)據(jù)壓縮到一個(gè)范圍內(nèi),有時(shí)候也可以使用sigmoid函數(shù)。Ot是時(shí)間t出的輸出,比如是預(yù)測(cè)下個(gè)詞的話,可能是softmax輸出的屬于每個(gè)候選詞的概率,Ot = softmax(VSt)。對(duì)于這里的St已經(jīng)把Xt合并了,所以O(shè)t的公式只有St。
對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò),可以把隱狀態(tài)St視作為“記憶體”,捕捉之前時(shí)間點(diǎn)上的信息。輸出Ot有當(dāng)前時(shí)間及之前所有“記憶”共同計(jì)算得到的。但由于St是一個(gè)有限的矩陣,對(duì)于之前的信息并不能完全捕捉到,也會(huì)隨著時(shí)間的變長(zhǎng),對(duì)于之前的“記憶”也會(huì)“變淡”。對(duì)于RNN不同于DNN與CNN,這里的RNN其實(shí)整個(gè)神經(jīng)網(wǎng)絡(luò)都在共享一組參數(shù)(U,V,W),這樣極大的減小了需要訓(xùn)練的參數(shù)。圖中的Ot再由寫(xiě)任務(wù)下是不存在的,只需要對(duì)最后的結(jié)果輸出就可以。
4. 不同類(lèi)型的RNN
(1). 雙向RNN
通過(guò)以上經(jīng)典的RNN模型,它是只關(guān)心當(dāng)前的輸入和之前的“記憶”的,但有些情況下,當(dāng)前的輸入不知依賴(lài)于之前的序列元素,還依賴(lài)于后面序列的元素。比如,一篇文章,當(dāng)讀第一段時(shí)候我們并不知道文章的主體要講什么內(nèi)容,但當(dāng)我們讀完第一段的時(shí)候需要判斷文章主要講什么內(nèi)容,這時(shí)候就需要讀后面的內(nèi)容才能知道這個(gè)文章主要講的是什么。對(duì)于這樣的場(chǎng)景需要后面的數(shù)據(jù)才能更好的預(yù)測(cè)當(dāng)前的狀態(tài),所以引入了雙向RNN,就是為了解決這一類(lèi)問(wèn)題的。雙向RNN的模型如下:

表達(dá)式:

雙向RNN是考慮到了前后的“記憶”,能夠更好的關(guān)聯(lián)到前后的信息。
(2). 深度雙向RNN
對(duì)于深度雙向RNN和雙向RNN的區(qū)別是每一步和每一個(gè)時(shí)間點(diǎn)我們?cè)O(shè)定了多層的結(jié)構(gòu)。結(jié)構(gòu)如下:

深層雙向RNN的表達(dá)式:

對(duì)于深層雙向RNN考慮的信息與雙向RNN相比變多了,這意味著能夠?qū)τ谀硤?chǎng)景,能夠關(guān)聯(lián)更多的信息。
5. RNN與BPTT算法
對(duì)于循環(huán)神經(jīng)網(wǎng)絡(luò)的BPTT算法其實(shí)是BP算法的一個(gè)變體,但是循環(huán)神經(jīng)網(wǎng)絡(luò)的BPTT是與時(shí)間序列有關(guān)的。

對(duì)于這個(gè)問(wèn)題是個(gè)Softmax問(wèn)題所以這里用交叉熵?fù)p失,所以損失函數(shù)可以表示為:

對(duì)于求所有誤差求W得偏導(dǎo)函數(shù)為:

但是,

所以,所以根據(jù)求導(dǎo)鏈?zhǔn)椒▌t可以進(jìn)一步求得:(又因?yàn)樗麄兊臋?quán)值是共享的)

用圖表示如下:

通過(guò)上面的式子:

通過(guò)鏈?zhǔn)椒▌t,表達(dá)式可以進(jìn)一步表示為:

通過(guò)以上的步驟求得損失函數(shù)的偏導(dǎo)后,就可以用SGD算法去做參數(shù)的更新。
-
rnn
+關(guān)注
關(guān)注
0文章
92瀏覽量
7345
原文標(biāo)題:循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的場(chǎng)景與應(yīng)用
文章出處:【微信號(hào):Imgtec,微信公眾號(hào):Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
什么是RNN (循環(huán)神經(jīng)網(wǎng)絡(luò))?
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的詳細(xì)介紹
評(píng)論