RNN基礎(chǔ)知識(shí)介紹 為什么需要RNN
神經(jīng)網(wǎng)絡(luò)可以當(dāng)做是能夠擬合任意函數(shù)的黑盒子,只要訓(xùn)練數(shù)據(jù)足夠,給定特定的x,就能得到希望的y,結(jié)構(gòu)圖如下:
將神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練好之后,在輸入層給定一個(gè)x,通過(guò)網(wǎng)絡(luò)之后就能夠在輸出層得到特定的y,那么既然有了這么強(qiáng)大的模型,為什么還需要RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))呢?
2.為什么需要RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))他們都只能單獨(dú)的取處理一個(gè)個(gè)的輸入,前一個(gè)輸入和后一個(gè)輸入是完全沒(méi)有關(guān)系的。但是,某些任務(wù)需要能夠更好的處理序列的信息,即前面的輸入和后面的輸入是有關(guān)系的。
比如,當(dāng)我們?cè)诶斫庖痪湓捯馑紩r(shí),孤立的理解這句話的每個(gè)詞是不夠的,我們需要處理這些詞連接起來(lái)的整個(gè)序列; 當(dāng)我們處理視頻的時(shí)候,我們也不能只單獨(dú)的去分析每一幀,而要分析這些幀連接起來(lái)的整個(gè)序列。
以nlp的一個(gè)最簡(jiǎn)單詞性標(biāo)注任務(wù)來(lái)說(shuō),將我 吃 蘋果 三個(gè)單詞標(biāo)注詞性為 我/nn 吃/v 蘋果/nn。
那么這個(gè)任務(wù)的輸入就是:
我 吃 蘋果 (已經(jīng)分詞好的句子)
這個(gè)任務(wù)的輸出是:
我/nn 吃/v 蘋果/nn(詞性標(biāo)注好的句子)
對(duì)于這個(gè)任務(wù)來(lái)說(shuō),我們當(dāng)然可以直接用普通的神經(jīng)網(wǎng)絡(luò)來(lái)做,給網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)格式了就是我-》 我/nn 這樣的多個(gè)單獨(dú)的單詞-》詞性標(biāo)注好的單詞。
但是很明顯,一個(gè)句子中,前一個(gè)單詞其實(shí)對(duì)于當(dāng)前單詞的詞性預(yù)測(cè)是有很大影響的,比如預(yù)測(cè)蘋果的時(shí)候,由于前面的吃是一個(gè)動(dòng)詞,那么很顯然蘋果作為名詞的概率就會(huì)遠(yuǎn)大于動(dòng)詞的概率,因?yàn)閯?dòng)詞后面接名詞很常見,而動(dòng)詞后面接動(dòng)詞很少見。
所以為了解決一些這樣類似的問(wèn)題,能夠更好的處理序列的信息,RNN就誕生了。
3.RNN結(jié)構(gòu)首先看一個(gè)簡(jiǎn)單的循環(huán)神經(jīng)網(wǎng)絡(luò)如,它由輸入層、一個(gè)隱藏層和一個(gè)輸出層組成:
不知道初學(xué)的同學(xué)能夠理解這個(gè)圖嗎,反正我剛開始學(xué)習(xí)的時(shí)候是懵逼的,每個(gè)結(jié)點(diǎn)到底代表的是一個(gè)值的輸入,還是說(shuō)一層的向量結(jié)點(diǎn)集合,如何隱藏層又可以連接到自己,等等這些疑惑~這個(gè)圖是一個(gè)比較抽象的圖。
我們現(xiàn)在這樣來(lái)理解,如果把上面有W的那個(gè)帶箭頭的圈去掉,它就變成了最普通的全連接神經(jīng)網(wǎng)絡(luò)。
x是一個(gè)向量,它表示輸入層的值(這里面沒(méi)有畫出來(lái)表示神經(jīng)元節(jié)點(diǎn)的圓圈);s是一個(gè)向量,它表示隱藏層的值(這里隱藏層面畫了一個(gè)節(jié)點(diǎn),你也可以想象這一層其實(shí)是多個(gè)節(jié)點(diǎn),節(jié)點(diǎn)數(shù)與向量s的維度相同);
U是輸入層到隱藏層的權(quán)重矩陣,o也是一個(gè)向量,它表示輸出層的值;V是隱藏層到輸出層的權(quán)重矩陣。
那么,現(xiàn)在我們來(lái)看看W是什么。循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏層的值s不僅僅取決于當(dāng)前這次的輸入x,還取決于上一次隱藏層的值s。權(quán)重矩陣 W就是隱藏層上一次的值作為這一次的輸入的權(quán)重。
我們給出這個(gè)抽象圖對(duì)應(yīng)的具體圖:
我們從上圖就能夠很清楚的看到,上一時(shí)刻的隱藏層是如何影響當(dāng)前時(shí)刻的隱藏層的。
如果我們把上面的圖展開,循環(huán)神經(jīng)網(wǎng)絡(luò)也可以畫成下面這個(gè)樣子:
現(xiàn)在看上去就比較清楚了,這個(gè)網(wǎng)絡(luò)在t時(shí)刻接收到輸入 之后,隱藏層的值是 ,輸出值是 。關(guān)鍵一點(diǎn)是, 的值不僅僅取決于 ,還取決于 。我們可以用下面的公式來(lái)表示循環(huán)神經(jīng)網(wǎng)絡(luò)的計(jì)算方法:
用公式表示如下:
4.總結(jié)
好了,到這里大概講解了RNN最基本的幾個(gè)知識(shí)點(diǎn),能夠幫助大家直觀的感受RNN和了解為什么需要RNN,后續(xù)總結(jié)它的反向求導(dǎo)知識(shí)點(diǎn)。
最后給出RNN的總括圖: