深度學習網絡之RNN(遞歸神經網絡)

2021-02-13 pytorch玩轉深度學習

 遞歸神經網絡(recursive neural network)是具有樹狀階層結構且網絡節點按其連接順序對輸入信息進行遞歸的人工神經網絡,是深度學習算法之一。

       遞歸神經網絡提出於1990年,被視為循環神經網絡(recurrent neural network)的推廣。當遞歸神經網絡的每個父節點都僅與一個子節點連接時,其結構等價於全連接的循環神經網絡。遞歸神經網絡可以引入門控機制(gated mechanism)以學習長距離依賴。遞歸神經網絡具有靈活的拓撲結構且權重共享,適用於包含結構關係的機器學習任務,在自然語言處理(Natural Language Processing, NLP)領域有重要應用。

因為神經網絡的輸入層單元個數是固定的,因此必須用循環或者遞歸的方式來處理長度可變的輸入。循環神經網絡實現了前者,通過將長度不定的輸入分割為等長度的小塊,然後再依次的輸入到網絡中,從而實現了神經網絡對變長輸入的處理。一個典型的例子是,當我們處理一句話的時候,我們可以把一句話看作是詞組成的序列,然後,每次向循環神經網絡輸入一個詞,如此循環直至整句話輸入完畢,循環神經網絡將產生對應的輸出。如此,我們就能處理任意長度的句子了。然而,有時候把句子看做是詞的序列是不夠的,比如下面這句話『兩個外語學院的學生』:

上圖顯示了這句話的兩個不同的語法解析樹。可以看出來這句話有歧義,不同的語法解析樹則對應了不同的意思。一個是『兩個外語學院的/學生』,也就是學生可能有許多,但他們來自於兩所外語學校;另一個是『兩個/外語學院的學生』,也就是只有兩個學生,他們是外語學院的。為了能夠讓模型區分出兩個不同的意思,我們的模型必須能夠按照樹結構去處理信息,而不是序列,這就是遞歸神經網絡的作用。當面對按照樹/圖結構處理信息更有效的任務時,遞歸神經網絡通常都會獲得不錯的結果。

遞歸神經網絡可以把一個樹/圖結構信息編碼為一個向量,也就是把信息映射到一個語義向量空間中。這個語義向量空間滿足某類性質,比如語義相似的向量距離更近。也就是說,如果兩句話(儘管內容不同)它的意思是相似的,那麼把它們分別編碼後的兩個向量的距離也相近;反之,如果兩句話的意思截然不同,那麼編碼後向量的距離則很遠。如下圖所示:

從上圖我們可以看到,遞歸神經網絡將所有的詞、句都映射到一個2維向量空間中。句子『the country of my birth』和句子『the place where I was born』的意思是非常接近的,所以表示它們的兩個向量在向量空間中的距離很近。另外兩個詞『Germany』和『France』因為表示的都是地點,它們的向量與上面兩句話的向量的距離,就比另外兩個表示時間的詞『Monday』和『Tuesday』的向量的距離近得多。這樣,通過向量的距離,就得到了一種語義的表示。

上圖還顯示了自然語言可組合的性質:詞可以組成句、句可以組成段落、段落可以組成篇章,而更高層的語義取決於底層的語義以及它們的組合方式。遞歸神經網絡是一種表示學習,它可以將詞、句、段、篇按照他們的語義映射到同一個向量空間中,也就是把可組合(樹/圖結構)的信息表示為一個個有意義的向量。比如上面這個例子,遞歸神經網絡把句子"the country of my birth"表示為二維向量[1,5]。有了這個『編碼器』之後,我們就可以以這些有意義的向量為基礎去完成更高級的任務(比如情感分析等)。如下圖所示,遞歸神經網絡在做情感分析時,可以比較好的處理否定句,這是勝過其他一些模型的。

在下圖中,藍色表示正面評價,紅色表示負面評價。每個節點是一個向量,這個向量表達了以它為根的子樹的情感評價。比如"intelligent humor"是正面評價,而"care about cleverness wit or any other kind of intelligent humor"是中性評價。我們可以看到,模型能夠正確的處理doesn't的含義,將正面評價轉變為負面評價。

 

計算

1前向計算

遞歸神經網絡的輸入是兩個子節點(也可以是多個),輸出就是將這兩個子節點編碼後產生的父節點,父節點的維度和每個子節點是相同的。如下圖所示:

 分別是表示兩個子節點的向量,P是表示父節點的向量。子節點和父節點組成一個全連接神經網絡,也就是子節點的每個神經元都和父節點的每個神經元兩兩相連。我們用矩陣W表示這些連接上的權重,它的維度將是d×2d ,其中,d 表示每個節點的維度。父節點的計算公式可以寫成:

在上式中,tanh是激活函數(當然也可以用其它的激活函數),b 是偏置項,它也是一個維度為d 的向量。

然後,我們把產生的父節點的向量和其他子節點的向量再次作為網絡的輸入,再次產生它們的父節點。如此遞歸下去,直至整棵樹處理完畢。最終,我們將得到根節點的向量,我們可以認為它是對整棵樹的表示,這樣我們就實現了把樹映射為一個向量。在下圖中,我們使用遞歸神經網絡處理一棵樹,最終得到的向量 ,就是對整棵樹的表示:

舉個例子,我們使用遞歸神將網絡將『兩個外語學校的學生』映射為一個向量,如下圖所示:

最後得到的向量 就是對整個句子『兩個外語學校的學生』的表示。由於整個結構是遞歸的,不僅僅是根節點,事實上每個節點都是以其為根的子樹的表示。比如,在左邊的這棵樹中,向量 是短語『外語學院的學生』的表示,而向量 是短語『外語學院的』的表示。

式1就是遞歸神經網絡的前向計算算法。它和全連接神經網絡的計算沒有什麼區別,只是在輸入的過程中需要根據輸入的樹結構依次輸入每個子節點。需要特別注意的是,遞歸神經網絡的權重和偏置項在所有的節點都是共享的。

2 訓練

遞歸神經網絡的訓練算法和循環神經網絡類似,兩者不同之處在於,前者需要將殘差δ 從根節點反向傳播到各個子節點,而後者是將殘差δ 從當前時刻 反向傳播到初始時刻 。

誤差項的傳遞

首先,先推導將誤差從父節點傳遞到子節點的公式,如下圖:

 

 

 

 

 

 

上圖是在樹型結構中反向傳遞誤差項的全景圖,反覆應用式2,在已知 的情況下,我們不難算出 為:

權重梯度的計算

根據加權輸入的計算公式:

式3就是第l層權重項的梯度計算公式。我們知道,由於權重W是在所有層共享的,所以和循環神經網絡一樣,遞歸神經網絡的最終的權重梯度是各個層權重梯度之和。即:

把上式擴展為矩陣的形式:

                         (式5)

式5是第l層偏置項的梯度,那麼最終的偏置項梯度是各個層偏置項梯度之和,即:

應用

自然語言和自然場景解析

 

兩種不同的場景,可以用相同的遞歸神經網絡模型來實現。我們以第一個場景,自然語言解析為例。

我們希望將一句話逐字輸入到神經網絡中,然後,神經網絡返回一個解析好的樹。為了做到這一點,我們需要給神經網絡再加上一層,負責打分。分數越高,說明兩個子節點結合更加緊密,分數越低,說明兩個子節點結合更鬆散。如下圖所示:

一旦這個打分函數訓練好了(也就是矩陣U的各項值變為合適的值),我們就可以利用貪心算法來實現句子的解析(貪心算法的基本思路是從問題的某一個初始解出發一步一步地進行,根據某個優化測度,每一步都要確保能獲得局部最優解。每一步只考慮一個數據,他的選取應該滿足局部優化的條件。若下一個數據和部分最優解連在一起不再是可行解時,就不把該數據添加到部分解中,直到把所有數據枚舉完,或者不能再添加算法停止)。第一步,我們先將詞按照順序兩兩輸入神經網絡,得到第一組打分:

我們發現,現在分數最高的是第一組,The cat,說明它們的結合是最緊密的。這樣,我們可以先將它們組合為一個節點。然後,再次兩兩計算相鄰子節點的打分:

     

現在,分數最高的是最後一組,the mat。於是,我們將它們組合為一個節點,再兩兩計算相鄰節點的打分。這時,我們發現最高的分數是on the mat,把它們組合為一個節點,繼續兩兩計算相鄰節點的打分.最終,我們就能夠得到整個解析樹:

相關焦點

  • 零基礎入門深度學習 |最終篇:遞歸神經網絡
    本文介紹一種更為強大、複雜的神經網絡:遞歸神經網絡 (Recursive Neural Network, RNN),以及它的訓練算法BPTS (Back Propagation Through Structure)。顧名思義,遞歸神經網絡(巧合的是,它的縮寫和循環神經網絡一樣,也是RNN)可以處理諸如樹、圖這樣的遞歸結構。在文章的最後,我們將實現一個遞歸神經網絡,並介紹它的幾個應用場景。
  • RNN遞歸神經網絡原理介紹+數字識別應用
    +圖片識別應用(附源碼)BP神經網絡+TensorFlow做圖片識別前言:自己學習研究完CNN卷積神經網絡後,很久的一段時間因為要完成自己的畢業設計就把更新博客給耽擱了。介紹CNN卷積神經網絡和RNN遞歸神經網絡都是由BP神經網絡演化而來的。CNN卷積神經網絡主要應用在圖像識別領域;而RNN遞歸神經網絡的改進版LSTM網絡主要應用於自然語言處理中;為什麼我介紹RNN是叫——遞歸神經網絡?這之前是一個困擾我很久的問題。
  • 循環神經網絡(RNN) 基礎淺析
    讓小編自言自語一會關於RNN多麼有用,小編就不需要多嘴了,相信每天刷AI技術群、AI公眾號的看官都知道「雲知聲將LSTM的深度學習技術應用到了雲知聲語音識別
  • 理解神經網絡:從神經元到RNN、CNN、深度學習
    神經網絡是目前最流行的機器學習算法之一。隨著時間的推移,證明了神經網絡在精度和速度方面,比其他的算法性能更好。並且形成了很多種類,像CNN(卷積神經網絡),RNN,自編碼,深度學習等等。學習權值的算法叫做反向傳播,其中的細節超過了本文的範圍。 具有超過一個隱藏層的神經網絡通常被叫做深度神經網絡。 卷積神經網絡(CNN) 卷積神經網絡(CNN)是神經網絡的一種,在計算機視覺領域應用非常廣泛。
  • 《神經網絡和深度學習》系列文章四:神經網絡的結構
    本節譯者:哈工大SCIR碩士生 徐偉 (https://github.com/memeda)聲明:我們將在每周一,周四,周日定期連載該書的中文翻譯,如需轉載請聯繫wechat_editors@ir.hit.edu.cn,未經授權不得轉載。
  • 教程 | 如何用PyTorch實現遞歸神經網絡?
    這些模型大多數將語言視為單調的單詞或字符序列,並使用一種稱為循環神經網絡(recurrent neural network/RNN)的模型來處理該序列。但是許多語言學家認為語言最好被理解為具有樹形結構的層次化詞組,一種被稱為遞歸神經網絡(recursive neural network)的深度學習模型考慮到了這種結構,這方面已經有大量的研究。
  • 知識卡片 遞歸神經網絡
    word embedding 詞嵌入是一種處理詞向量的方法,將一個向量映射到一個一個低維連續向量。即使兩句話的字面內容不同,遞歸神經網絡可以根據詞向量間的距離,來判斷相似度,也就是語義上的相似性。循環神經網絡和遞歸神經網絡神經網絡的輸入層單元個數是固定的,因此必須用循環或者遞歸的方式來處理長度可變的輸入。
  • 詳解:遞歸神經網絡和LSTM網絡那些事兒
    【IT168 編譯】遞歸神經網絡是最先進的順序數據算法之一,在蘋果Siri和Google語音搜索中都使用到的算法。這是因為它是第一個記憶它的輸入的算法,由於內部存儲器,這使得它非常適合涉及順序數據的機器學習問題。它是過去幾年Deep Learning的驚人成就背後的算法之一。在這篇文章中,你將學習遞歸神經網絡如何工作的基本概念,最大的問題是什麼以及如何解決它們。
  • 【深度學習】循環神經網絡(RNN)簡易教程
    我們從以下問題開始循環神經網絡能解決人工神經網絡和卷積神經網絡存在的問題。假設我們正在寫一條信息「Let’s meet for___」,我們需要預測下一個單詞是什麼。下一個詞可以是午餐、晚餐、早餐或咖啡。我們更容易根據上下文作出推論。
  • 神經網絡解析|RNN(循環神經網絡)
    RNN是兩種神經網絡模型的縮寫,一種是遞歸神經網絡(Recursive Neural Network),一種是循環神經網絡(Recurrent Neural Network)。雖然這兩種神經網絡有著千絲萬縷的聯繫,但是本文主要討論的是第二種神經網絡模型——循環神經網絡(Recurrent Neural Network)。
  • 想了解遞歸神經網絡?這裡有一份入門教程
    遞歸神經網絡入門教程引言遞歸神經網絡是一類人工神經網絡,可用於識別諸如文本、基因組、手寫字跡、語音等序列數據的模式,也可用於識別傳感器、股票市場、政府機構產生的數值型時間序列數據。隨後,梯度下降的學習算法會用這些偏導數對權重進行上下調整以減少誤差。遞歸網絡則使用反向傳播的一種擴展方法,名為沿時間反向傳播,或稱BPTT。在這裡,時間其實就表示為一系列定義完備的有序計算,將時間步依次連接,而這些計算就是反向傳播的全部內容。無論遞歸與否,神經網絡其實都只是形如f(g(h(x)))的嵌套複合函數。
  • 神經網絡和深度學習簡史(全)
    讓我告訴你,說來話長——這不僅僅是一個有關神經網絡的故事,也不僅僅是一個有關一系列研究突破的故事,這些突破讓深度學習變得比「大型神經網絡」更加有趣,而是一個有關幾位不放棄的研究員如何熬過黑暗數十年,直至拯救神經網絡,實現深度學習夢想的故事。
  • 循環神經網絡(RNN)入門帖:向量到序列,序列到序列,雙向RNN,馬爾科夫化
    作者:David 9地址:http://nooverfit.com/rnn似乎更擅長信息的保存和更新,而cnn似乎更擅長精確的特徵提取;rnn輸入輸出尺寸靈活,而cnn尺寸相對刻板。聊到循環神經網絡RNN,我們第一反應可能是:時間序列 (time sequence)。
  • 神經網絡與深度學習
    之後大數據興起,計算資源也迅速跟上,加之2012年ImageNet競賽冠軍採用的AlexNet卷積神經網絡一舉將圖像分類的Top5錯誤率降至16.4%,震驚了當時的學界和業界。從此之後,原本處於研究邊緣狀態的神經網絡又迅速火熱了起來,深度學習也逐漸佔據了計算機視覺的主導地位。
  • TensorFlow練手 | 使用循環神經網絡(RNN)實現影評情感分類
    2.使用LSTM作為循環神經網絡的基本單元長短時記憶網絡(LSTM)能夠自動完成前文信息的「記憶」和「遺忘」,在循環神經網絡中表現良好,已經成為在循環神經網絡中大部分人的首選這裡我選擇使用LSTM作為循環神經網絡的基本單元。
  • LSTM、GRU與神經圖靈機:詳解深度學習最熱門的循環神經網絡
    參與:熊貓循環神經網絡是當前深度學習熱潮中最重要和最核心的技術之一。為神經網絡添加狀態的好處是它們將能在序列預測問題中明確地學習和利用背景信息(context),這類問題包括帶有順序或時間組件的問題。在這篇文章中,你將踏上了解用於深度學習的循環神經網絡的旅程。在讀完這篇文章後,你將了解:用於深度學習的頂級循環神經網絡的工作方式,其中包括 LSTM、GRU 和 NTM。
  • CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構有什麼區別?
    在實際應用中,所謂的深度神經網絡DNN,往往融合了多種已知的結構,包括卷積層或是LSTM單元。這裡的DNN應該特指全連接的神經元結構,並不包含卷積單元或是時間上的關聯。因此,如果一定要將DNN、CNN、RNN等進行對比,也未嘗不可。其實,如果我們順著神經網絡技術發展的脈絡,就很容易弄清這幾種網絡結構發明的初衷,和他們之間本質的區別,希望對大家有所幫助。
  • 遞歸的藝術 - 深度遞歸網絡在序列式推薦的應用
    本文是深度學習在個性化推薦實踐應用的第二篇,在第一篇中,我詳述了如何利用歷史沉澱數據挖掘用戶的隱藏特徵,本文在上一篇的基礎上進行延伸,詳細分析如何利用LSTM,即長短時記憶網絡來進行序列式的推薦。    根據用戶的長期歷史數據來挖掘隱特徵是協同過濾常用的方法,典型的算法有基於神經網絡的受限玻爾茲曼機 (RBM),基於矩陣分解的隱語義模型等。
  • 今日Paper|從純圖像重建世界;層次遞歸網絡序列;注意力神經網絡...
    目錄層次遞歸網絡序列標註的轉移學習注意力神經網絡序列標記模型中的特徵基於雙向LSTM-CNNs的命名實體識別通過雙向LSTM-CNNs-CRF進行端到端序列標記更好的物體表徵,更好地從純圖像重建世界層次遞歸網絡序列標註的轉移學習論文名稱:TRANSFER LEARNING FOR SEQUENCE TAGGING WITH HIERARCHICAL RECURRENT NETWORKS
  • 遞歸神經網絡不可思議的有效性(下)
    深度學習是朝著更大更複雜的網絡發展,所以在複雜圖算法中花費的時間會成倍增加。重要的是,長時間或者是在開發階段不進行編譯所帶來的影響是非常巨大的。而且,進行編譯的話就會丟失可解釋性和有效進行日誌記錄/調試的能力。如果為提高效率在圖算法開發好後立即編譯,那麼這樣做是可取的。