天天看點

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

從廣義上來說,nn(或是更美的dnn)确實可以認為包含了cnn、rnn這些具體的變種形式。在實際應用中,所謂的深度神經網絡dnn,往往融合了多種已知的結構,包括卷積層或是lstm單元。但是就題主的意思來看,這裡的dnn應該特指全連接配接的神經元結構,并不包含卷積單元或是時間上的關聯。

是以,題主一定要将dnn、cnn、rnn等進行對比,也未嘗不可。 其實,如果我們順着神經網絡技術發展的脈絡,就很容易弄清這幾種網絡結構發明的初衷,和他們之間本質的差別。 神經網絡技術起源于上世紀五、六十年代,當時叫感覺機(perceptron),擁有輸入層、輸出層和一個隐含層。輸入的特征向量通過隐含層變換達到輸出層,在輸出層得到分類結果。

早期感覺機的推動者是rosenblatt。(扯一個不相關的:由于計算技術的落後,當時感覺器傳輸函數是用線拉動變阻器改變電阻的方法機械實作的,腦補一下科學家們扯着密密麻麻的導線的樣子…) 但是,rosenblatt的單層感覺機有一個嚴重得不能再嚴重的問題,即它對稍複雜一些的函數都無能為力(比如最為典型的“異或”操作)。

連異或都不能拟合,你還能指望這貨有什麼實際用途麼o(╯□╰)o 随着數學的發展,這個缺點直到上世紀八十年代才被rumelhart、williams、hinton、lecun等人(反正就是一票大牛)發明的多層感覺機(multilayer perceptron)克服。多層感覺機,顧名思義,就是有多個隐含層的感覺機(廢話……)。好好,我們看一下多層感覺機的結構:

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖1上下層神經元全部相連的神經網絡——多層感覺機

多層感覺機可以擺脫早期離散傳輸函數的束縛,使用sigmoid或tanh等連續函數模拟神經元對激勵的響應,在訓練算法上則使用werbos發明的反向傳播bp算法。

對,這貨就是我們現在所說的神經網絡nn——神經網絡聽起來不知道比感覺機高端到哪裡去了!這再次告訴我們起一個好聽的名字對于研(zhuang)究(bi)很重要! 多層感覺機解決了之前無法模拟異或邏輯的缺陷,同時更多的層數也讓網絡更能夠刻畫現實世界中的複雜情形。

相信年輕如hinton當時一定是春風得意。 多層感覺機給我們帶來的啟示是,神經網絡的層數直接決定了它對現實的刻畫能力——利用每層更少的神經元拟合更加複雜的函數[1]。 (bengio如是說:functions that can be compactly represented by a depth k architecture might require an exponential number of computational elements to be represented by a depth k − 1 architecture.)

即便大牛們早就預料到神經網絡需要變得更深,但是有一個夢魇總是萦繞左右。随着神經網絡層數的加深,優化函數越來越容易陷入局部最優解,并且這個“陷阱”越來越偏離真正的全局最優。利用有限資料訓練的深層網絡,性能還不如較淺層網絡。

同時,另一個不可忽略的問題是随着網絡層數增加,“梯度消失”現象更加嚴重。具體來說,我們常常使用sigmoid作為神經元的輸入輸出函數。對于幅度為1的信号,在bp反向傳播梯度時,每傳遞一層,梯度衰減為原來的0.25。層數一多,梯度指數衰減後低層基本上接受不到有效的訓練信号。

2006年,hinton利用預訓練方法緩解了局部最優解問題,将隐含層推動到了7層[2],神經網絡真正意義上有了“深度”,由此揭開了深度學習的熱潮。這裡的“深度”并沒有固定的定義——在語音識别中4層網絡就能夠被認為是“較深的”,而在圖像識别中20層以上的網絡屢見不鮮。

為了克服梯度消失,relu、maxout等傳輸函數代替了sigmoid,形成了如今dnn的基本形式。單從結構上來說,全連接配接的dnn和圖1的多層感覺機是沒有任何差別的。 值得一提的是,今年出現的高速公路網絡(highway network)和深度殘差學習(deep residual learning)進一步避免了梯度消失,網絡層數達到了前所未有的一百多層(深度殘差學習:152層)[3,4]!

具體結構題主可自行搜尋了解。如果你之前在懷疑是不是有很多方法打上了“深度學習”的噱頭,這個結果真是深得讓人心服口服。

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖2縮減版的深度殘差學習網絡,僅有34層,終極版有152層

如圖1所示,我們看到全連接配接dnn的結構裡下層神經元和所有上層神經元都能夠形成連接配接,帶來的潛在問題是參數數量的膨脹。假設輸入的是一幅像素為1k*1k的圖像,隐含層有1m個節點,光這一層就有10^12個權重需要訓練,這不僅容易過拟合,而且極容易陷入局部最優。

另外,圖像中有固有的局部模式(比如輪廓、邊界,人的眼睛、鼻子、嘴等)可以利用,顯然應該将圖像進行中的概念和神經網絡技術相結合。此時我們可以祭出題主所說的卷積神經網絡cnn。 對于cnn來說,并不是所有上下層神經元都能直接相連,而是通過“卷積核”作為中介。同一個卷積核在所有圖像内是共享的,圖像通過卷積操作後仍然保留原先的位置關系。

兩層之間的卷積傳輸的示意圖如下:

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖3卷積神經網絡隐含層

通過一個例子簡單說明卷積神經網絡的結構。假設圖3中m-1=1是輸入層,我們需要識别一幅彩色圖像,這幅圖像具有四個通道argb(透明度和紅綠藍,對應了四幅相同大小的圖像),假設卷積核大小為100*100,共使用100個卷積核w1到w100(從直覺來看,每個卷積核應該學習到不同的結構特征)。

用w1在argb圖像上進行卷積操作,可以得到隐含層的第一幅圖像;這幅隐含層圖像左上角第一個像素是四幅輸入圖像左上角100*100區域内像素的權重求和,以此類推。

同理,算上其他卷積核,隐含層對應100幅“圖像”。每幅圖像對是對原始圖像中不同特征的響應。按照這樣的結構繼續傳遞下去。cnn中還有max-pooling等操作進一步提高魯棒性。

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖4一個典型的卷積神經網絡結構

注意到最後一層實際上是一個全連接配接層,在這個例子裡,我們注意到輸入層到隐含層的參數瞬間降低到了100*100*100=10^6個!這使得我們能夠用已有的訓練資料得到良好的模型。題主所說的适用于圖像識别,正是由于cnn模型限制參數了個數并挖掘了局部結構的這個特點。順着同樣的思路,利用語音語譜結構中的局部資訊,cnn照樣能應用在語音識别中。

全連接配接的dnn還存在着另一個問題——無法對時間序列上的變化進行模組化。然而,樣本出現的時間順序對于自然語言處理、語音識别、手寫體識别等應用非常重要。對了适應這種需求,就出現了題主所說的另一種神經網絡結構——循環神經網絡rnn。

在普通的全連接配接網絡或cnn中,每層神經元的信号隻能向上一層傳播,樣本的處理在各個時刻獨立,是以又被成為前向神經網絡(feed-forward neural networks)。而在rnn中,神經元的輸出可以在下一個時間戳直接作用到自身,即第i層神經元在m時刻的輸入,除了(i-1)層神經元在該時刻的輸出外,還包括其自身在(m-1)時刻的輸出!表示成圖就是這樣的:

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖5 rnn網絡結構

我們可以看到在隐含層節點之間增加了互連。為了分析友善,我們常将rnn在時間上進行展開,得到如圖6所示的結構:

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖6 rnn在時間上進行展開

cool,(t+1)時刻網絡的最終結果o(t+1)是該時刻輸入和所有曆史共同作用的結果!這就達到了對時間序列模組化的目的。 不知題主是否發現,rnn可以看成一個在時間上傳遞的神經網絡,它的深度是時間的長度!正如我們上面所說,“梯度消失”現象又要出現了,隻不過這次發生在時間軸上。

對于t時刻來說,它産生的梯度在時間軸上向曆史傳播幾層之後就消失了,根本就無法影響太遙遠的過去。是以,之前說“所有曆史”共同作用隻是理想的情況,在實際中,這種影響也就隻能維持若幹個時間戳。

為了解決時間上的梯度消失,機器學習領域發展出了長短時記憶單元lstm,通過門的開關實作時間上記憶功能,并防止梯度消失,一個lstm單元長這個樣子:

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖7 lstm的模樣

除了題主疑惑的三種網絡,和我之前提到的深度殘差學習、lstm外,深度學習還有許多其他的結構。舉個例子,rnn既然能繼承曆史資訊,是不是也能吸收點未來的資訊呢?

因為在序列信号分析中,如果我能預知未來,對識别一定也是有所幫助的。是以就有了雙向rnn、雙向lstm,同時利用曆史和未來的資訊。

一文讀懂 CNN、DNN、RNN 内部網絡結構差別

圖8雙向rnn

事實上,不論是那種網絡,他們在實際應用中常常都混合着使用,比如cnn和rnn在上層輸出之前往往會接上全連接配接層,很難說某個網絡到底屬于哪個類别。不難想象随着深度學習熱度的延續,更靈活的組合方式、更多的網絡結構将被發展出來。

盡管看起來千變萬化,但研究者們的出發點肯定都是為了解決特定的問題。題主如果想進行這方面的研究,不妨仔細分析一下這些結構各自的特點以及它們達成目标的手段。

入門的話可以參考:

歡迎大家繼續推薦補充。

參考文獻:

[1] bengio y. learning deep architectures for ai[j]. foundations & trends® in machine learning, 2009, 2(1):1-127.

[2] hinton g e, salakhutdinov r r. reducing the dimensionality of data with neural networks[j]. science, 2006, 313(5786):504-507.

[3] he k, zhang x, ren s, sun j. deep residual learning for image recognition. arxiv:1512.03385, 2015.

[4] srivastava r k, greff k, schmidhuber j. highway networks. arxiv:1505.00387, 2015.

作者:科言君

來源:51cto

繼續閱讀