如何有效的區分和理解RNN循環神經網路與遞歸神經網路?

recurrent neural network(循環神經網路)

recursive neural network(遞歸神經網路)


試答:

recurrent: 時間維度的展開,代表信息在時間維度從前往後的的傳遞和積累,可以類比markov假設,後面的信息的概率建立在前面信息的基礎上,在神經網路結構上表現為後面的神經網路的隱藏層的輸入是前面的神經網路的隱藏層的輸出;

recursive: 空間維度的展開,是一個樹結構,比如nlp里某句話,用recurrent neural network來建模的話就是假設句子後面的詞的信息和前面的詞有關,而用recurxive neural network來建模的話,就是假設句子是一個樹狀結構,由幾個部分(主語,謂語,賓語)組成,而每個部分又可以在分成幾個小部分,即某一部分的信息由它的子樹的信息組合而來,整句話的信息由組成這句話的幾個部分組合而來。


卷積神經網路--介紹 - 知乎專欄

循環神經網路--介紹 - 知乎專欄

區別:網路先驗知識的不同:

FCNN(fully-connected):並行,迭代

CNN:FCNN的基礎上加入 空間結構參數共享

RNN:FCNN的基礎上加入 時間結構參數共享

如果用前饋層處理時序信號,需要將前後所發生事物狀態並成一個更大的向量。這樣每一個維度的權重都需要學習,即使很多維度都是無關緊要的。並且這樣的方式只能處理固定長度的時序信號,長度不足時需要補零。

但如果告訴你,不同的時刻的狀態都是由相同的規則進行處理的,那麼一個時序序列中,每個時刻的狀態都可以為權重的學習提供幫助。

比如在前饋層中,三個時刻只能對Wxh進行一次學習;但是在循環層中,三個時刻能對Wxh和Whh進行三次學習。

不同時刻的狀態都是由相同規則進行處理的,就是循環層加入的一條可以降低訓練數據量同時排除噪音規律干擾的先驗知識。

應用這種處理方式的原因是因為世界上很多的數據都符合時間共享的規律。

比如你在演奏音樂,每個樂器的物理特性在時間維度上是不變的,並不會這個時刻是笛子的物理特性,而下一時刻變成了二胡的物理特性。

同時需要注意的是,循環層中有兩個因素流,一個是從輸入流得到的。另一個信息流是從上一個時刻的狀態得到的,都是時間共享。所以你可以看到循環層有兩個權重Whh和Wxh。

用前饋層做時序預測,相當於徒手捏陶瓷,耗時耗力不說,又無法保證各個角度都相同。

而用循環層做時序預測,相當於使用轉盤,擺出一個手型後,每個角度都是以這種手型去捏制的。

人們常說循環神經網路,比前饋神經網路要好的原因在於可以考慮更長的歷史信息。但我曾經做過實驗,使用相同長度的歷史信息,將二者進行比較後。循環神經網路依然比前饋網路效果要好。一定程度上驗證了共享的作用。

另外雙向循環神經網路是兩個循環層的堆疊,而堆疊後有兩種合併方法,一種是相加,一種是合成並更長的向量。我做過的所有實驗中,相加的效果都比合併要好。可能也是因為第二個方向起到了限制作用。只有那些既可以在正向產生此種規律,又可以在反向產生另一種規律的關聯f才會被我們採用。

上述提到的是時間共享,還有空間共享的卷積層。前饋層同樣可以進行畫面識別,

但如果用前饋層,那麼在這個例子中,就需要學習81個權重,而如果知道這些權重在空間下是共享的,那麼可能只需要學習9個權重。

我們眼睛在觀察時並非將整個圖片全部收入眼帘。而是一個區域,一個區域掃描。每個區域掃描的規則是共享的,你的眼球不會在掃描這個區域時是人眼,而在掃描下個區域時卻成了貓的眼睛。

具體的請看鏈接的文章。


作者:許鐵-巡洋艦科技

鏈接:知乎專欄

來源:知乎

著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。

首先, 要看RNN和對於圖像等靜態類變數處理立下神功的卷積網路CNN的結構區別來看, 「循環」兩個字,已經點出了RNN的核心特徵, 即系統的輸出會保留在網路里, 和系統下一刻的輸入一起共同決定下一刻的輸出。這就把動力學的本質體現了出來, 循環正對應動力學系統的反饋概念,可以刻畫複雜的歷史依賴。另一個角度看也符合著名的圖靈機原理。 即此刻的狀態包含上一刻的歷史,又是下一刻變化的依據。 這其實包含了可編程神經網路的核心概念,即, 當你有一個未知的過程,但你可以測量到輸入和輸出, 你假設當這個過程通過RNN的時候,它是可以自己學會這樣的輸入輸出規律的, 而且因此具有預測能力。 在這點上說, RNN是圖靈完備的。

圖: 圖1即CNN的架構, 圖2到5是RNN的幾種基本玩法。圖2是把單一輸入轉化為序列輸出,例如把圖像轉化成一行文字。 圖三是把序列輸入轉化為單個輸出, 比如情感測試,測量一段話正面或負面的情緒。 圖四是把序列轉化為序列, 最典型的是機器翻譯,
注意輸入和輸出的「時差」。 圖5是無時差的序列到序列轉化, 比如給一個錄像中的每一幀貼標籤。 圖片來源 The unreasonable
effective RNN。

我們用一段小巧的python代碼讓你重新理解下上述的原理:

classRNN:

# ...

def step(self, x):

# update the hidden state

self.h = np.tanh(np.dot(self.W_hh, self.h) + np.dot(self.W_xh, x))

# compute the output vector

y = np.dot(self.W_hy, self.h)

return y

這裡的h就是hidden variable 隱變數,即整個網路每個神經元的狀態,x是輸入, y是輸出, 注意著三者都是高維向量。隱變數h,就是通常說的神經網路本體,也正是循環得以實現的基礎, 因為它如同一個可以儲存無窮歷史信息(理論上)的水庫,一方面會通過輸入矩陣W_xh吸收輸入序列x的當下值,一方面通過網路連接W_hh進行內部神經元間的相互作用(網路效應,信息傳遞),因為其網路的狀態和輸入的整個過去歷史有關, 最終的輸出又是兩部分加在一起共同通過非線性函數tanh。 整個過程就是一個循環神經網路「循環」的過程。 W_hh理論上可以可以刻畫輸入的整個歷史對於最終輸出的任何反饋形式,從而刻畫序列內部,或序列之間的時間關聯, 這是RNN強大的關鍵。

那麼CNN似乎也有類似的功能? 那麼CNN是不是也可以當做RNN來用呢? 答案是否定的,RNN的重要特性是可以處理不定長的輸入,得到一定的輸出。當你的輸入可長可短, 比如訓練翻譯模型的時候, 你的句子長度都不固定,你是無法像一個訓練固定像素的圖像那樣用CNN搞定的。而利用RNN的循環特性可以輕鬆搞定。

圖, CNN(左)和RNN(右)的結構區別, 注意右圖中輸出和隱變數網路間的雙向箭頭不一定存在,往往只有隱變數到輸出的箭頭。


查到了答案: 在一定程度上可以認為Recurrent NN是Recursive NN的一種變體。Recursive NN更general。

後來看斯坦福cs224d課程中找到了答案


本質上就不同啊

recursive nn是feed forward nn,無環圖

recurrent nn是feed back nn,有環圖


Recurrent networks (Elman, 1990) are designed to model sequences, while recursive networks (Goller Küchler, 1996) are generalizations of recurrent networks that can handle trees.

---Yoav Goldberg 《A Primer on Neural Network Models for Natural Language Processing》


Recurrent neural networks are recursive artificial neural networks with a certain structure: that of a linear chain. Whereas recursive neural networks operate on any hierarchical structure,combining child representations into parent representations, recurrent neural networks operate on the linear progression of time, combining the previous time step and a hidden representation into the representation for the current time step. --Wikipedia


這幾年,rnn專指recurrent neural network,至於怎麼翻譯,循環神經網路和遞歸神經網路隨便。

與rnn對立的就是cnn,專指convolutional neural network,翻譯卷積神經網路。

其他的類型的網路千奇百怪種類繁多,用不到的話,沒必要去了解。很多不work。題主問的recursive neural network,研究的文獻貌似不多。


推薦閱讀:

人工神經網路與人類神經網路有關係嗎?
ICCV2017有什麼令人關注的文章?
機器如何去理解一個「概念」?
學習機器學習演算法一定要做到會手寫編程實現嗎?還是只要拿到數據後知道使用哪個演算法調用numpy的包就行?
如何理解機器學習中雜訊影響模型複雜度問題?

TAG:人工智慧 | 機器學習 | 自然語言處理 | 神經網路 | 深度學習DeepLearning |