」CNN是空間上的深度網路,RNN是時間上的深度網路「這句話怎麼理解?
本人之前用過 Convolutional Neural Network(CNN)做圖像特徵提取,也用過Recurrent Neural Network(RNN)做一些自然語言處理的問題。感覺這兩個網路也是有很多相似的地方(如權值共享,訓練方法等),然後後面也看到了這麼一句話」CNN是空間上的深度網路,RNN是時間上的深度網路「,覺得說的很有道理,但不知道是不是正確,還望知乎大神不吝賜教,發表見解,最好是有英文資料佐證。多謝多謝。
最近無意間又搜到了recursive neural network(遞歸神經網路),這又有點蒙了。
卷積神經網路--介紹 - 知乎專欄
循環神經網路--介紹 - 知乎專欄
區別:網路先驗知識的不同:
FCNN(fully-connected):並行,迭代
CNN:FCNN的基礎上加入 空間結構參數共享
RNN:FCNN的基礎上加入 時間結構參數共享
如果用前饋層處理時序信號,需要將前後所發生事物狀態並成一個更大的向量。這樣每一個維度的權重都需要學習,即使很多維度都是無關緊要的。並且這樣的方式只能處理固定長度的時序信號,長度不足時需要補零。
但如果告訴你,不同的時刻的狀態都是由相同的規則進行處理的,那麼一個時序序列中,每個時刻的狀態都可以為權重的學習提供幫助。
比如在前饋層中,三個時刻只能對Wxh進行一次學習;但是在循環層中,三個時刻能對Wxh和Whh進行三次學習。
不同時刻的狀態都是由相同規則進行處理的,就是循環層加入的一條可以降低訓練數據量同時排除噪音規律干擾的先驗知識。
應用這種處理方式的原因是因為世界上很多的數據都符合時間共享的規律。
比如你在演奏音樂,每個樂器的物理特性在時間維度上是不變的,並不會這個時刻是笛子的物理特性,而下一時刻變成了二胡的物理特性。
同時需要注意的是,循環層中有兩個因素流,一個是從輸入流得到的。另一個信息流是從上一個時刻的狀態得到的,都是時間共享。所以你可以看到循環層有兩個權重Whh和Wxh。
用前饋層做時序預測,相當於徒手捏陶瓷,耗時耗力不說,又無法保證各個角度都相同。
而用循環層做時序預測,相當於使用轉盤,擺出一個手型後,每個角度都是以這種手型去捏制的。
人們常說循環神經網路,比前饋神經網路要好的原因在於可以考慮更長的歷史信息。但我曾經做過實驗,使用相同長度的歷史信息,將二者進行比較後。循環神經網路依然比前饋網路效果要好。一定程度上驗證了共享的作用。
另外雙向循環神經網路是兩個循環層的堆疊,而堆疊後有兩種合併方法,一種是相加,一種是合成並更長的向量。我做過的所有實驗中,相加的效果都比合併要好。可能也是因為第二個方向起到了限制作用。只有那些既可以在正向產生此種規律,又可以在反向產生另一種規律的關聯f才會被我們採用。
上述提到的是時間共享,還有空間共享的卷積層。前饋層同樣可以進行畫面識別,
但如果用前饋層,那麼在這個例子中,就需要學習81個權重,而如果知道這些權重在空間下是共享的,那麼可能只需要學習9個權重。
我們眼睛在觀察時並非將整個圖片全部收入眼帘。而是一個區域,一個區域掃描。每個區域掃描的規則是共享的,你的眼球不會在掃描這個區域時是人眼,而在掃描下個區域時卻成了貓的眼睛。
具體的請看鏈接的文章。
這種說法是不嚴謹的
CNN是空間卷積模塊,RNN是時域記憶模塊(有點像IIR濾波器),深度是指層數深。這三者並沒有什麼關聯。
推薦閱讀:
TAG:機器學習 | 神經網路 | 深度學習DeepLearning |