RNN既能夠表述爲循環神 經網絡(recurrent neural network),也能夠表述爲遞歸神經網絡(recursive neural network),前者通常用於處理以時間序列爲輸入的問題(好比把一個句子當作詞組成的序列),每次向循環神經網絡輸入一個詞,知道整個句子輸入結束。後者通常用於處理圖結構或樹結構問題(好比爲了處理歧義問題,咱們構造語法樹爲輸入,而不是循環輸入每個詞)。網絡
下圖是循環神經網絡的展開函數
圖1工具
下面是一個句子對上圖的應用3d
圖2blog
能夠這樣理解:將全部用到的英文詞向量化以後,the表示爲(0.4,0.3),對應圖1中的x輸入,通過神經元計算以後輸出爲(1,3.5),神經元內部的計算方式爲:遞歸
函數f一般是諸如tanh或者ReLU的非線性函數,U,x,St-1都爲向量且U、V、W都是待訓練參數。輸出O能夠選擇softmax函數,其表達式以下變量
這裏的變量i對應圖1中的變量t,可見神經網絡
也就是說循環神經網絡全部輸出之和爲1,輸出O的計算公式爲network
其中V和St都是向量。也就是說神經元先計算隱狀態St,而後計算輸出Ot循環
下面以樹結構爲例來講明遞歸神經網絡的輸入與計算
1.將句子分詞以後,給每一個詞一個向量,這裏詞的向量化能夠採用one-hot或者其餘一些向量化工具,好比Google的gensim
2.將詞按照樹形結構輸入,以圖3爲例
圖3
2.1 首先計算「兩個」和「外語學院」的父節點的向量,計算方法是:假設「兩個」的詞向量表示爲c1,「外語學院」的詞向量表示爲c2,那麼父節點對應的向量P爲
其中W和b是訓練好的參數,tanh是雙曲正切函數,表達式爲
2.2 依次迭代計算各個父節點對應的向量,最終獲得根節點對應向量。
由於是以語法樹輸入的,因此對於歧義問題有較好的處理能力,好比圖3中的句子也能夠用圖4的語法樹來表示:
圖4
事實上,圖3與圖4對應的根節點向量徹底不一樣,由於詞向量的輸入順序是不同的。
在獲得根節點向量後,咱們就能夠去完成一些更高級的任務,好比計算語義類似度或者情感分析等。