递归神经网络的认识
?????? 遞歸神經(jīng)網(wǎng)絡(luò)(recursive neural network)是具有樹狀階層結(jié)構(gòu)且網(wǎng)絡(luò)節(jié)點(diǎn)按其連接順序?qū)斎胄畔⑦M(jìn)行遞歸的人工神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)算法之一。
?????? 遞歸神經(jīng)網(wǎng)絡(luò)提出于1990年,被視為循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network)的推廣。當(dāng)遞歸神經(jīng)網(wǎng)絡(luò)的每個(gè)父節(jié)點(diǎn)都僅與一個(gè)子節(jié)點(diǎn)連接時(shí),其結(jié)構(gòu)等價(jià)于全連接的循環(huán)神經(jīng)網(wǎng)絡(luò)。遞歸神經(jīng)網(wǎng)絡(luò)可以引入門控機(jī)制(gated mechanism)以學(xué)習(xí)長(zhǎng)距離依賴。遞歸神經(jīng)網(wǎng)絡(luò)具有靈活的拓?fù)浣Y(jié)構(gòu)且權(quán)重共享,適用于包含結(jié)構(gòu)關(guān)系的機(jī)器學(xué)習(xí)任務(wù),在自然語(yǔ)言處理(Natural Language Processing, NLP)領(lǐng)域有重要應(yīng)用。
?
實(shí)例(https://blog.csdn.net/zb123455445/article/details/78178794)
因?yàn)樯窠?jīng)網(wǎng)絡(luò)的輸入層單元個(gè)數(shù)是固定的,因此必須用循環(huán)或者遞歸的方式來(lái)處理長(zhǎng)度可變的輸入。循環(huán)神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了前者,通過(guò)將長(zhǎng)度不定的輸入分割為等長(zhǎng)度的小塊,然后再依次的輸入到網(wǎng)絡(luò)中,從而實(shí)現(xiàn)了神經(jīng)網(wǎng)絡(luò)對(duì)變長(zhǎng)輸入的處理。一個(gè)典型的例子是,當(dāng)我們處理一句話的時(shí)候,我們可以把一句話看作是詞組成的序列,然后,每次向循環(huán)神經(jīng)網(wǎng)絡(luò)輸入一個(gè)詞,如此循環(huán)直至整句話輸入完畢,循環(huán)神經(jīng)網(wǎng)絡(luò)將產(chǎn)生對(duì)應(yīng)的輸出。如此,我們就能處理任意長(zhǎng)度的句子了。然而,有時(shí)候把句子看做是詞的序列是不夠的,比如下面這句話『兩個(gè)外語(yǔ)學(xué)院的學(xué)生』:
上圖顯示了這句話的兩個(gè)不同的語(yǔ)法解析樹。可以看出來(lái)這句話有歧義,不同的語(yǔ)法解析樹則對(duì)應(yīng)了不同的意思。一個(gè)是『兩個(gè)外語(yǔ)學(xué)院的/學(xué)生』,也就是學(xué)生可能有許多,但他們來(lái)自于兩所外語(yǔ)學(xué)校;另一個(gè)是『兩個(gè)/外語(yǔ)學(xué)院的學(xué)生』,也就是只有兩個(gè)學(xué)生,他們是外語(yǔ)學(xué)院的。為了能夠讓模型區(qū)分出兩個(gè)不同的意思,我們的模型必須能夠按照樹結(jié)構(gòu)去處理信息,而不是序列,這就是遞歸神經(jīng)網(wǎng)絡(luò)的作用。當(dāng)面對(duì)按照樹/圖結(jié)構(gòu)處理信息更有效的任務(wù)時(shí),遞歸神經(jīng)網(wǎng)絡(luò)通常都會(huì)獲得不錯(cuò)的結(jié)果。
遞歸神經(jīng)網(wǎng)絡(luò)可以把一個(gè)樹/圖結(jié)構(gòu)信息編碼為一個(gè)向量,也就是把信息映射到一個(gè)語(yǔ)義向量空間中。這個(gè)語(yǔ)義向量空間滿足某類性質(zhì),比如語(yǔ)義相似的向量距離更近。也就是說(shuō),如果兩句話(盡管內(nèi)容不同)它的意思是相似的,那么把它們分別編碼后的兩個(gè)向量的距離也相近;反之,如果兩句話的意思截然不同,那么編碼后向量的距離則很遠(yuǎn)。如下圖所示:
從上圖我們可以看到,遞歸神經(jīng)網(wǎng)絡(luò)將所有的詞、句都映射到一個(gè)2維向量空間中。句子『the country of my birth』和句子『the place where I was born』的意思是非常接近的,所以表示它們的兩個(gè)向量在向量空間中的距離很近。另外兩個(gè)詞『Germany』和『France』因?yàn)楸硎镜亩际堑攸c(diǎn),它們的向量與上面兩句話的向量的距離,就比另外兩個(gè)表示時(shí)間的詞『Monday』和『Tuesday』的向量的距離近得多。這樣,通過(guò)向量的距離,就得到了一種語(yǔ)義的表示。
上圖還顯示了自然語(yǔ)言可組合的性質(zhì):詞可以組成句、句可以組成段落、段落可以組成篇章,而更高層的語(yǔ)義取決于底層的語(yǔ)義以及它們的組合方式。遞歸神經(jīng)網(wǎng)絡(luò)是一種表示學(xué)習(xí),它可以將詞、句、段、篇按照他們的語(yǔ)義映射到同一個(gè)向量空間中,也就是把可組合(樹/圖結(jié)構(gòu))的信息表示為一個(gè)個(gè)有意義的向量。比如上面這個(gè)例子,遞歸神經(jīng)網(wǎng)絡(luò)把句子"the country of my birth"表示為二維向量[1,5]。有了這個(gè)『編碼器』之后,我們就可以以這些有意義的向量為基礎(chǔ)去完成更高級(jí)的任務(wù)(比如情感分析等)。如下圖所示,遞歸神經(jīng)網(wǎng)絡(luò)在做情感分析時(shí),可以比較好的處理否定句,這是勝過(guò)其他一些模型的。
在下圖中,藍(lán)色表示正面評(píng)價(jià),紅色表示負(fù)面評(píng)價(jià)。每個(gè)節(jié)點(diǎn)是一個(gè)向量,這個(gè)向量表達(dá)了以它為根的子樹的情感評(píng)價(jià)。比如"intelligent humor"是正面評(píng)價(jià),而"care about cleverness wit or any other kind of intelligent humor"是中性評(píng)價(jià)。我們可以看到,模型能夠正確的處理doesn't的含義,將正面評(píng)價(jià)轉(zhuǎn)變?yōu)樨?fù)面評(píng)價(jià)。
?
計(jì)算
1前向計(jì)算
遞歸神經(jīng)網(wǎng)絡(luò)的輸入是兩個(gè)子節(jié)點(diǎn)(也可以是多個(gè)),輸出就是將這兩個(gè)子節(jié)點(diǎn)編碼后產(chǎn)生的父節(jié)點(diǎn),父節(jié)點(diǎn)的維度和每個(gè)子節(jié)點(diǎn)是相同的。如下圖所示:
分別是表示兩個(gè)子節(jié)點(diǎn)的向量,P是表示父節(jié)點(diǎn)的向量。子節(jié)點(diǎn)和父節(jié)點(diǎn)組成一個(gè)全連接神經(jīng)網(wǎng)絡(luò),也就是子節(jié)點(diǎn)的每個(gè)神經(jīng)元都和父節(jié)點(diǎn)的每個(gè)神經(jīng)元兩兩相連。我們用矩陣W表示這些連接上的權(quán)重,它的維度將是d×2d ,其中,d 表示每個(gè)節(jié)點(diǎn)的維度。父節(jié)點(diǎn)的計(jì)算公式可以寫成:
在上式中,tanh是激活函數(shù)(當(dāng)然也可以用其它的激活函數(shù)),b 是偏置項(xiàng),它也是一個(gè)維度為d 的向量。
然后,我們把產(chǎn)生的父節(jié)點(diǎn)的向量和其他子節(jié)點(diǎn)的向量再次作為網(wǎng)絡(luò)的輸入,再次產(chǎn)生它們的父節(jié)點(diǎn)。如此遞歸下去,直至整棵樹處理完畢。最終,我們將得到根節(jié)點(diǎn)的向量,我們可以認(rèn)為它是對(duì)整棵樹的表示,這樣我們就實(shí)現(xiàn)了把樹映射為一個(gè)向量。在下圖中,我們使用遞歸神經(jīng)網(wǎng)絡(luò)處理一棵樹,最終得到的向量 ,就是對(duì)整棵樹的表示:
舉個(gè)例子,我們使用遞歸神將網(wǎng)絡(luò)將『兩個(gè)外語(yǔ)學(xué)校的學(xué)生』映射為一個(gè)向量,如下圖所示:
最后得到的向量 就是對(duì)整個(gè)句子『兩個(gè)外語(yǔ)學(xué)校的學(xué)生』的表示。由于整個(gè)結(jié)構(gòu)是遞歸的,不僅僅是根節(jié)點(diǎn),事實(shí)上每個(gè)節(jié)點(diǎn)都是以其為根的子樹的表示。比如,在左邊的這棵樹中,向量 是短語(yǔ)『外語(yǔ)學(xué)院的學(xué)生』的表示,而向量 是短語(yǔ)『外語(yǔ)學(xué)院的』的表示。
式1就是遞歸神經(jīng)網(wǎng)絡(luò)的前向計(jì)算算法。它和全連接神經(jīng)網(wǎng)絡(luò)的計(jì)算沒(méi)有什么區(qū)別,只是在輸入的過(guò)程中需要根據(jù)輸入的樹結(jié)構(gòu)依次輸入每個(gè)子節(jié)點(diǎn)。需要特別注意的是,遞歸神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置項(xiàng)在所有的節(jié)點(diǎn)都是共享的。
2 訓(xùn)練
遞歸神經(jīng)網(wǎng)絡(luò)的訓(xùn)練算法和循環(huán)神經(jīng)網(wǎng)絡(luò)類似,兩者不同之處在于,前者需要將殘差δ 從根節(jié)點(diǎn)反向傳播到各個(gè)子節(jié)點(diǎn),而后者是將殘差δ 從當(dāng)前時(shí)刻 反向傳播到初始時(shí)刻 。
誤差項(xiàng)的傳遞
首先,先推導(dǎo)將誤差從父節(jié)點(diǎn)傳遞到子節(jié)點(diǎn)的公式,如下圖:
?
?
?
?
?
?
上圖是在樹型結(jié)構(gòu)中反向傳遞誤差項(xiàng)的全景圖,反復(fù)應(yīng)用式2,在已知 的情況下,我們不難算出 為:
權(quán)重梯度的計(jì)算
根據(jù)加權(quán)輸入的計(jì)算公式:
式3就是第l層權(quán)重項(xiàng)的梯度計(jì)算公式。我們知道,由于權(quán)重W是在所有層共享的,所以和循環(huán)神經(jīng)網(wǎng)絡(luò)一樣,遞歸神經(jīng)網(wǎng)絡(luò)的最終的權(quán)重梯度是各個(gè)層權(quán)重梯度之和。即:
把上式擴(kuò)展為矩陣的形式:
???????????????????????? (式5)
式5是第l層偏置項(xiàng)的梯度,那么最終的偏置項(xiàng)梯度是各個(gè)層偏置項(xiàng)梯度之和,即:
應(yīng)用
自然語(yǔ)言和自然場(chǎng)景解析
?
兩種不同的場(chǎng)景,可以用相同的遞歸神經(jīng)網(wǎng)絡(luò)模型來(lái)實(shí)現(xiàn)。我們以第一個(gè)場(chǎng)景,自然語(yǔ)言解析為例。
https://www.sohu.com/a/128784058_487514
我們希望將一句話逐字輸入到神經(jīng)網(wǎng)絡(luò)中,然后,神經(jīng)網(wǎng)絡(luò)返回一個(gè)解析好的樹。為了做到這一點(diǎn),我們需要給神經(jīng)網(wǎng)絡(luò)再加上一層,負(fù)責(zé)打分。分?jǐn)?shù)越高,說(shuō)明兩個(gè)子節(jié)點(diǎn)結(jié)合更加緊密,分?jǐn)?shù)越低,說(shuō)明兩個(gè)子節(jié)點(diǎn)結(jié)合更松散。如下圖所示:
一旦這個(gè)打分函數(shù)訓(xùn)練好了(也就是矩陣U的各項(xiàng)值變?yōu)楹线m的值),我們就可以利用貪心算法來(lái)實(shí)現(xiàn)句子的解析(貪心算法的基本思路是從問(wèn)題的某一個(gè)初始解出發(fā)一步一步地進(jìn)行,根據(jù)某個(gè)優(yōu)化測(cè)度,每一步都要確保能獲得局部最優(yōu)解。每一步只考慮一個(gè)數(shù)據(jù),他的選取應(yīng)該滿足局部?jī)?yōu)化的條件。若下一個(gè)數(shù)據(jù)和部分最優(yōu)解連在一起不再是可行解時(shí),就不把該數(shù)據(jù)添加到部分解中,直到把所有數(shù)據(jù)枚舉完,或者不能再添加算法停止)。第一步,我們先將詞按照順序兩兩輸入神經(jīng)網(wǎng)絡(luò),得到第一組打分:
我們發(fā)現(xiàn),現(xiàn)在分?jǐn)?shù)最高的是第一組,The cat,說(shuō)明它們的結(jié)合是最緊密的。這樣,我們可以先將它們組合為一個(gè)節(jié)點(diǎn)。然后,再次兩兩計(jì)算相鄰子節(jié)點(diǎn)的打分:
?????
現(xiàn)在,分?jǐn)?shù)最高的是最后一組,the mat。于是,我們將它們組合為一個(gè)節(jié)點(diǎn),再兩兩計(jì)算相鄰節(jié)點(diǎn)的打分。這時(shí),我們發(fā)現(xiàn)最高的分?jǐn)?shù)是on the mat,把它們組合為一個(gè)節(jié)點(diǎn),繼續(xù)兩兩計(jì)算相鄰節(jié)點(diǎn)的打分......最終,我們就能夠得到整個(gè)解析樹:
總結(jié)
- 上一篇: 交通银行商业汇票交易系统成功上线
- 下一篇: 考研数学二(来源于1800和张宇总结)