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)系的,或者說后面的數(shù)據(jù)跟前面的數(shù)據(jù)是有關(guān)聯(lián)的。例如,對(duì)于文本類的數(shù)據(jù),當(dāng)輸入某句話的時(shí)候,剛開始輸入第一個(gè)字的時(shí)候,再輸入這句話的第二個(gè)字時(shí)候,其實(shí)第二個(gè)字要輸入什么字其實(shí)是跟第一個(gè)字是有關(guān)聯(lián)的。所以,對(duì)于這樣一類的場(chǎng)景,通常是要考慮前面的信息的,以至于引入RNN模型。
對(duì)于RNN模型為解決這類問題引入了“記憶”這一概念。循環(huán)神經(jīng)網(wǎng)絡(luò)的循環(huán)來源于其每個(gè)元素中都執(zhí)行相同的任務(wù),但是輸出依賴于輸入和“記憶”兩個(gè)部分。
3. RNN結(jié)構(gòu)
從圖中看,對(duì)于RNN網(wǎng)絡(luò)是按照時(shí)間序列展開的。對(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í)間的變長,對(duì)于之前的“記憶”也會(huì)“變淡”。對(duì)于RNN不同于DNN與CNN,這里的RNN其實(shí)整個(gè)神經(jīng)網(wǎng)絡(luò)都在共享一組參數(shù)(U,V,W),這樣極大的減小了需要訓(xùn)練的參數(shù)。圖中的Ot再由寫任務(wù)下是不存在的,只需要對(duì)最后的結(jié)果輸出就可以。
4. 不同類型的RNN
(1). 雙向RNN
通過以上經(jīng)典的RNN模型,它是只關(guān)心當(dāng)前的輸入和之前的“記憶”的,但有些情況下,當(dāng)前的輸入不知依賴于之前的序列元素,還依賴于后面序列的元素。比如,一篇文章,當(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,就是為了解決這一類問題的。雙向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è)問題是個(gè)Softmax問題所以這里用交叉熵?fù)p失,所以損失函數(shù)可以表示為:
對(duì)于求所有誤差求W得偏導(dǎo)函數(shù)為:
但是,
所以,所以根據(jù)求導(dǎo)鏈?zhǔn)椒▌t可以進(jìn)一步求得:(又因?yàn)樗麄兊臋?quán)值是共享的)
用圖表示如下:
通過上面的式子:
通過鏈?zhǔn)椒▌t,表達(dá)式可以進(jìn)一步表示為:
通過以上的步驟求得損失函數(shù)的偏導(dǎo)后,就可以用SGD算法去做參數(shù)的更新。
-
rnn
+關(guān)注
關(guān)注
0文章
76瀏覽量
6868
原文標(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)先 登錄
相關(guān)推薦
評(píng)論