CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构区别...
神經(jīng)網(wǎng)絡(luò)技術(shù)起源于上世紀(jì)五、六十年代,當(dāng)時(shí)叫感知機(jī)(perceptron),擁有輸入層、輸出層和一個(gè)隱含層。輸入的特征向量通過(guò)隱含層變換達(dá)到輸出層,在輸出層得到分類結(jié)果。早期感知機(jī)的推動(dòng)者是Rosenblatt。(扯一個(gè)不相關(guān)的:由于計(jì)算技術(shù)的落后,當(dāng)時(shí)感知器傳輸函數(shù)是用線拉動(dòng)變阻器改變電阻的方法機(jī)械實(shí)現(xiàn)的,腦補(bǔ)一下科學(xué)家們扯著密密麻麻的導(dǎo)線的樣子…)
但是,Rosenblatt的單層感知機(jī)有一個(gè)嚴(yán)重得不能再嚴(yán)重的問(wèn)題,即它對(duì)稍復(fù)雜一些的函數(shù)都無(wú)能為力(比如最為典型的“異或”操作)。連異或都不能擬合,你還能指望這貨有什么實(shí)際用途么o(╯□╰)o
隨著數(shù)學(xué)的發(fā)展,這個(gè)缺點(diǎn)直到上世紀(jì)八十年代才被Rumelhart、Williams、Hinton、LeCun等人(反正就是一票大牛)發(fā)明的多層感知機(jī)(multilayerperceptron)克服。多層感知機(jī),顧名思義,就是有多個(gè)隱含層的感知機(jī)(廢話……)。好好,我們看一下多層感知機(jī)的結(jié)構(gòu):
多層感知機(jī)可以擺脫早期離散傳輸函數(shù)的束縛,使用sigmoid或tanh等連續(xù)函數(shù)模擬神經(jīng)元對(duì)激勵(lì)的響應(yīng),在訓(xùn)練算法上則使用Werbos發(fā)明的反向傳播BP算法。對(duì),這貨就是我們現(xiàn)在所說(shuō)的神經(jīng)網(wǎng)絡(luò)NN——神經(jīng)網(wǎng)絡(luò)聽起來(lái)不知道比感知機(jī)高端到哪里去了!這再次告訴我們起一個(gè)好聽的名字對(duì)于研(zhuang)究(bi)很重要!
多層感知機(jī)解決了之前無(wú)法模擬異或邏輯的缺陷,同時(shí)更多的層數(shù)也讓網(wǎng)絡(luò)更能夠刻畫現(xiàn)實(shí)世界中的復(fù)雜情形。相信年輕如Hinton當(dāng)時(shí)一定是春風(fēng)得意。
多層感知機(jī)給我們帶來(lái)的啟示是,神經(jīng)網(wǎng)絡(luò)的層數(shù)直接決定了它對(duì)現(xiàn)實(shí)的刻畫能力——利用每層更少的神經(jīng)元擬合更加復(fù)雜的函數(shù)[1]。
(Bengio如是說(shuō):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.)
即便大牛們?cè)缇皖A(yù)料到神經(jīng)網(wǎng)絡(luò)需要變得更深,但是有一個(gè)夢(mèng)魘總是縈繞左右。隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的加深,優(yōu)化函數(shù)越來(lái)越容易陷入局部最優(yōu)解,并且這個(gè)“陷阱”越來(lái)越偏離真正的全局最優(yōu)。利用有限數(shù)據(jù)訓(xùn)練的深層網(wǎng)絡(luò),性能還不如較淺層網(wǎng)絡(luò)。同時(shí),另一個(gè)不可忽略的問(wèn)題是隨著網(wǎng)絡(luò)層數(shù)增加,“梯度消失”現(xiàn)象更加嚴(yán)重。具體來(lái)說(shuō),我們常常使用sigmoid作為神經(jīng)元的輸入輸出函數(shù)。對(duì)于幅度為1的信號(hào),在BP反向傳播梯度時(shí),每傳遞一層,梯度衰減為原來(lái)的0.25。層數(shù)一多,梯度指數(shù)衰減后低層基本上接受不到有效的訓(xùn)練信號(hào)。
2006年,Hinton利用預(yù)訓(xùn)練方法緩解了局部最優(yōu)解問(wèn)題,將隱含層推動(dòng)到了7層[2],神經(jīng)網(wǎng)絡(luò)真正意義上有了“深度”,由此揭開了深度學(xué)習(xí)的熱潮。這里的“深度”并沒(méi)有固定的定義——在語(yǔ)音識(shí)別中4層網(wǎng)絡(luò)就能夠被認(rèn)為是“較深的”,而在圖像識(shí)別中20層以上的網(wǎng)絡(luò)屢見不鮮。為了克服梯度消失,ReLU、maxout等傳輸函數(shù)代替了sigmoid,形成了如今DNN的基本形式。單從結(jié)構(gòu)上來(lái)說(shuō),全連接的DNN和圖1的多層感知機(jī)是沒(méi)有任何區(qū)別的。
值得一提的是,今年出現(xiàn)的高速公路網(wǎng)絡(luò)(highway network)和深度殘差學(xué)習(xí)(deep residual learning)進(jìn)一步避免了梯度消失,網(wǎng)絡(luò)層數(shù)達(dá)到了前所未有的一百多層(深度殘差學(xué)習(xí):152層)[3,4]!具體結(jié)構(gòu)題主可自行搜索了解。如果你之前在懷疑是不是有很多方法打上了“深度學(xué)習(xí)”的噱頭,這個(gè)結(jié)果真是深得讓人心服口服。
我們看到全連接DNN的結(jié)構(gòu)里下層神經(jīng)元和所有上層神經(jīng)元都能夠形成連接,帶來(lái)的潛在問(wèn)題是參數(shù)數(shù)量的膨脹。假設(shè)輸入的是一幅像素為1K*1K的圖像,隱含層有1M個(gè)節(jié)點(diǎn),光這一層就有10^12個(gè)權(quán)重需要訓(xùn)練,這不僅容易過(guò)擬合,而且極容易陷入局部最優(yōu)。另外,圖像中有固有的局部模式(比如輪廓、邊界,人的眼睛、鼻子、嘴等)可以利用,顯然應(yīng)該將圖像處理中的概念和神經(jīng)網(wǎng)絡(luò)技術(shù)相結(jié)合。此時(shí)我們可以祭出題主所說(shuō)的卷積神經(jīng)網(wǎng)絡(luò)CNN。對(duì)于CNN來(lái)說(shuō),并不是所有上下層神經(jīng)元都能直接相連,而是通過(guò)“卷積核”作為中介。同一個(gè)卷積核在所有圖像內(nèi)是共享的,圖像通過(guò)卷積操作后仍然保留原先的位置關(guān)系。兩層之間的卷積傳輸?shù)氖疽鈭D如下: 通過(guò)一個(gè)例子簡(jiǎn)單說(shuō)明卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)。假設(shè)圖3中m-1=1是輸入層,我們需要識(shí)別一幅彩色圖像,這幅圖像具有四個(gè)通道ARGB(透明度和紅綠藍(lán),對(duì)應(yīng)了四幅相同大小的圖像),假設(shè)卷積核大小為100*100,共使用100個(gè)卷積核w1到w100(從直覺來(lái)看,每個(gè)卷積核應(yīng)該學(xué)習(xí)到不同的結(jié)構(gòu)特征)。用w1在ARGB圖像上進(jìn)行卷積操作,可以得到隱含層的第一幅圖像;這幅隱含層圖像左上角第一個(gè)像素是四幅輸入圖像左上角100*100區(qū)域內(nèi)像素的加權(quán)求和,以此類推。同理,算上其他卷積核,隱含層對(duì)應(yīng)100幅“圖像”。每幅圖像對(duì)是對(duì)原始圖像中不同特征的響應(yīng)。按照這樣的結(jié)構(gòu)繼續(xù)傳遞下去。CNN中還有max-pooling等操作進(jìn)一步提高魯棒性。?
轉(zhuǎn)載于:https://www.cnblogs.com/timlong/p/11088469.html
總結(jié)
以上是生活随笔為你收集整理的CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构区别...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MySql为查询结果添加前、后缀
- 下一篇: matlab常用函数——软件常用函数