日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AlexNet结构详解(引用MrGiovanni博士)

發(fā)布時(shí)間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AlexNet结构详解(引用MrGiovanni博士) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Reference.

Krizhevsky A, Sutskever I, Hinton G E. ImageNet Classification with Deep Convolutional Neural Networks [J]. Advances in Neural Information Processing Systems, 2012, 25(2):2012.
https://code.google.com/p/cuda-convnet/


說(shuō)來(lái)慚愧,看了深度學(xué)習(xí)快五個(gè)月了,前幾周的Paper Review上剛剛注意到AlexNet,那果斷用啊,話說(shuō)LeNet雖然好用,那也是快20年以前的網(wǎng)絡(luò)結(jié)構(gòu)了,AlexNet是2012年的結(jié)構(gòu),不管怎么說(shuō)肯定好呀。貼一張網(wǎng)絡(luò)結(jié)構(gòu)的歷史


鬧,這個(gè)AlexNet就是我今天要講的東西


@Feifei Li真是厲害呀,弄了一個(gè)免費(fèi)的ImageNet,又開(kāi)始弄分類(lèi)比賽,省了一大筆廣告費(fèi)就把自己的團(tuán)隊(duì)推到研究的最前沿,第一時(shí)間掌握到最新的科研動(dòng)態(tài),而且自己的引用率又急劇飆升,你看現(xiàn)在哪個(gè)圖像分類(lèi)研究團(tuán)隊(duì)要是沒(méi)有引用到她的ImageNet或者相關(guān)的研究成果都不好意思投頂級(jí)期刊。
不說(shuō)Feifei女神了,就說(shuō)AlexNet也是一個(gè)比較舊舊的網(wǎng)絡(luò)結(jié)構(gòu)了,2014年的ImageNet冠亞軍GoogLeNet和VGG也是現(xiàn)在特別熱門(mén)的網(wǎng)絡(luò)結(jié)構(gòu)了,2015年的百度(媽逼居然給我來(lái)個(gè)學(xué)術(shù)造假,我擦百度趕緊去死吧!!!丟死人了知道嗎!!!全世界都知道了!!!),接下來(lái)的深度學(xué)習(xí)研究方向主要就是

1)Fine-Tuning,
2)大規(guī)模GPU并行加速和
3)把CNN嵌入移動(dòng)端來(lái)使用。
(當(dāng)然還有好多研究方向我不知道嘍。。)

  • 大規(guī)模GPU加速這個(gè)事兒很燒錢(qián)的,一般就是那種大公司(Google,[Baidu]<-這貨死了,Microsoft等)會(huì)去做,我們這種本科生用一塊特斯拉的GPU就算很不錯(cuò)了。
  • 因此,Fine-Tuning是最近的研究人員主要的攻關(guān)方向,思路很簡(jiǎn)單啊,既然Feifei女神把廣義上的圖像分類(lèi)做絕了,那我們就做小范圍的圖像分類(lèi),類(lèi)比一下就像[Baidu]<-這貨死了把搜索引擎做絕了,那并不是搜索就沒(méi)得做了,像淘寶,它也做了搜索引擎,只是僅限于商品,那請(qǐng)問(wèn)現(xiàn)在要搜商品你會(huì)去[Baidu]<-這貨死了的搜索框還是淘寶的搜索框呢,相信你已經(jīng)懂了。在學(xué)術(shù)上,淘寶上這種搜索叫做“垂直搜索”,其他垂直搜索就比如說(shuō)是校園網(wǎng)的站內(nèi)搜索,你可以很精準(zhǔn)地搜到和學(xué)校相關(guān)的信息,當(dāng)然你也不是去[Baidu]<-這貨死了那兒搜的。Fine-Tuning的意思就是用現(xiàn)有的學(xué)習(xí)完的廣義圖像網(wǎng)絡(luò)參數(shù)作為新網(wǎng)絡(luò)的初始化,然后扔進(jìn)去一些你要做的圖像的訓(xùn)練集去訓(xùn)練,得到一個(gè)你要的特異性的網(wǎng)絡(luò)。舉例子:我想用CNN來(lái)做礦泉水品牌的分類(lèi),那就在CIFAR訓(xùn)練完的網(wǎng)絡(luò)作為初始網(wǎng)絡(luò),然后用各個(gè)品牌的礦泉水來(lái)訓(xùn)練,訓(xùn)練一個(gè)只對(duì)“礦泉水品牌分類(lèi)”問(wèn)題超級(jí)好的網(wǎng)絡(luò)。這兒注意哦,CIFAR里頭肯定也有礦泉水,但是沒(méi)這么細(xì),我做的就是將原來(lái)這個(gè)非特異性的網(wǎng)絡(luò)訓(xùn)練成了一個(gè)對(duì)礦泉水敏感的網(wǎng)絡(luò)。
  • 把CNN嵌入到移動(dòng)端要做的就是剪枝唄,把訓(xùn)練完的網(wǎng)絡(luò)盡量用很少的內(nèi)存來(lái)存儲(chǔ),因?yàn)槭謾C(jī)慢嘛,方法可以用到很多哦,比如哈希編碼,Deep compression,Squeeze net?什么的,這個(gè)里面比較有說(shuō)頭,接下來(lái)就是安卓、iOS編程的事兒了。

就這個(gè)套路,要是你想發(fā)一個(gè)弱弱國(guó)內(nèi)期刊的話怎么辦知道嗎,找一個(gè)冷門(mén)的分類(lèi)問(wèn)題,超多的其實(shí),舉例:1)用CNN根據(jù)姨媽紅的顏色判斷來(lái)事兒第幾天了,2)用CNN來(lái)判斷臉上的是青春痘還是痔瘡,或者3)用CNN來(lái)判斷Baidu做了這么多缺德事該不該滾蛋 等等,都是很不錯(cuò)的題材,你去收集一堆(海量哦)訓(xùn)練集,用Fine-Tuning的方法訓(xùn)練一個(gè)網(wǎng)絡(luò),寫(xiě)論文稍微包裝一下,okay,完事兒。你會(huì)發(fā)現(xiàn)現(xiàn)在一些很水的深度學(xué)習(xí)論文就是這樣做的。呵呵。:)


好了,不吐槽了,說(shuō)正經(jīng)的。AlexNet是2012年ImageNet競(jìng)賽冠軍獲得者Alex Krizhevsky設(shè)計(jì)的,這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)和LeNet有什么區(qū)別呢?

1 卷積神經(jīng)網(wǎng)絡(luò)的組成部分

套路是一樣的,先介紹一下深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)(ConvNet)的組成吧。

1.1 卷積層(Convolutional Layer)

這個(gè)不多說(shuō),學(xué)過(guò)信號(hào)的都大概知道卷積是個(gè)什么玩意兒,不懂的話可以參考額。。。別參考了,好好學(xué)基礎(chǔ)知識(shí)去吧~要說(shuō)明的一點(diǎn)是這個(gè)卷積的過(guò)程很好地模擬了人的視覺(jué)神經(jīng)系統(tǒng)的過(guò)程,聽(tīng)老師說(shuō)人眼看東西也就是一個(gè)卷積的過(guò)程哦,這個(gè)我可不能保證哦~


卷積的動(dòng)態(tài)過(guò)程

1.2 降采樣層(Pooling Layer)

降采樣就是用一個(gè)值來(lái)代替一塊區(qū)域,這個(gè)值可以是區(qū)域的平均值,最大值,最小值等等,反正有代表性就好了,這個(gè)層的目的就是減少數(shù)據(jù)量。


降采樣過(guò)程

1.3 激活函數(shù)層(Activation Layer)

激活函數(shù)的作用是把卷積后的結(jié)果壓縮到某一個(gè)固定的范圍,這樣可以一直保持一層一層下去的數(shù)值范圍是可控的。比如一些常見(jiàn)的激活函數(shù)

  • sigmoid:控制在[0, 1]
  • tanh:控制在[-1, 1]
  • ReLU:控制在[0, 正無(wú)窮]
  • 還有好多新的激活函數(shù),這兒就不舉例了,知道它們的作用就OK

    我用的是ReLU激活函數(shù)

1.4 標(biāo)準(zhǔn)化層(Normalization Layer)


沒(méi)什么大不了的,就用了個(gè)公式來(lái)標(biāo)準(zhǔn)化一下

1.5 全連接層(Full Connected Layer)

全連接層給人的感覺(jué)就是人工神經(jīng)網(wǎng)絡(luò)的那樣,把所有的網(wǎng)絡(luò)結(jié)點(diǎn)都用一些帶權(quán)重的值連接起來(lái)。這個(gè)層一般出現(xiàn)在CNN的后面部分,這個(gè)層很長(zhǎng),可以作為圖像的特征向量來(lái)用,也有論文是把全連接層放到SVM,RF,Adaboost,ANN等傳統(tǒng)的分類(lèi)器里頭分類(lèi),來(lái)代替CNN最后的softmax層,那我也做過(guò)這個(gè)實(shí)驗(yàn),得到的結(jié)果并不好,我不知道這些大牛是怎么弄的。這兒打個(gè)問(wèn)號(hào)?


顧名思義,所有的結(jié)點(diǎn)都是連接起來(lái)的,這兒的權(quán)重會(huì)特別多,因?yàn)槿B接了嘛

1.6 扔掉層(Dropout Layer)

這個(gè)層我不知道怎么翻,反正作用就是把一些沒(méi)用的結(jié)點(diǎn)給扔掉。

  • 這個(gè)思路參考了人的大腦的實(shí)際運(yùn)行狀態(tài),研究表明大腦在分析圖像的過(guò)程中真正被激活的神經(jīng)元并不多,具體哪些被激活靠得就是先前的學(xué)習(xí),和留下來(lái)的記憶。那如果沒(méi)有這個(gè)dropout層,我們的CNN在判斷所有的圖像是相當(dāng)于所有的結(jié)點(diǎn)都激活了,這樣和現(xiàn)實(shí)的情況不符,所以我們要模擬大腦,把一下沒(méi)什么用的結(jié)點(diǎn)給扔掉。
  • 這個(gè)層的作用是加快運(yùn)算速度,防止過(guò)擬合,讓網(wǎng)絡(luò)更加的普適,更加有所謂的“魯棒性”——裝個(gè)逼,其實(shí)就是更好哈哈:)
  • 實(shí)現(xiàn)的方法是設(shè)置一個(gè)閾值,如果這個(gè)結(jié)點(diǎn)與結(jié)點(diǎn)之間的權(quán)重高于這個(gè)值,那么說(shuō)明這是強(qiáng)關(guān)系,我們保留,如果權(quán)重低于這個(gè)值,說(shuō)明關(guān)系不大,我們把它扔掉得了。!!這個(gè)實(shí)現(xiàn)方法說(shuō)錯(cuò)了,特別感謝@hzzzol同學(xué)的指正,正確的解釋?xiě)?yīng)該是:
  • Dropout是在訓(xùn)練過(guò)程中以一定概率1-p將隱含層節(jié)點(diǎn)的輸出值清0,而用bp更新權(quán)值時(shí),不再更新與該節(jié)點(diǎn)相連的權(quán)值。什么意思,就是這個(gè)就是個(gè)概率問(wèn)題,和權(quán)值的大小,激活程度無(wú)關(guān)哦,被抽中的結(jié)點(diǎn)無(wú)條件被丟掉。(Dropout簡(jiǎn)單理解、DropConnect簡(jiǎn)單理解)

由于權(quán)重太多,那我們就把一些沒(méi)用的扔掉
  • 這個(gè)層常常出現(xiàn)在全連接層的地方,因?yàn)槿B接層中的結(jié)點(diǎn)與結(jié)點(diǎn)連接太多了,消耗了CNN中絕大多數(shù)的內(nèi)存資源,而這中間有一大部分是沒(méi)有必要的。

    你看,最后幾層多浪費(fèi)!

2 LeNet與AlexNet

以上是對(duì)CNN的一個(gè)簡(jiǎn)單的闡述,當(dāng)然啰,比較瑣碎,一個(gè)完整的CNN結(jié)構(gòu)是由多個(gè)1)卷積層,2)降采樣層,3)激活函數(shù)層,4)標(biāo)準(zhǔn)化層,5)全連接層和6)扔掉層 有序地拼接而成的,那么又來(lái)了這個(gè)問(wèn)題,LeNet和AlexNet的拼法到底有什么不同呢?

2.1 LeNet

再次祭出這幅經(jīng)典的LeNet圖


太經(jīng)典啦!


LeNet的成功應(yīng)用案例是手寫(xiě)字體的識(shí)別,就是給一堆手寫(xiě)的阿拉伯?dāng)?shù)字,用網(wǎng)絡(luò)來(lái)判斷這是個(gè)什么字。應(yīng)用的就是當(dāng)時(shí)的郵局等地方,還有門(mén)牌號(hào)。其實(shí)傳統(tǒng)的分類(lèi)器已經(jīng)可以做到很好的水平了(正確率在96%吧大概),那LeNet作為新起之秀,正確率達(dá)到了98%,那在當(dāng)時(shí)就很有名啊,賺了好多好多錢(qián)呢,然后卷積神經(jīng)網(wǎng)絡(luò)的研究就開(kāi)始火了呀。到了2012出現(xiàn)AlexNet,以卷積神經(jīng)網(wǎng)絡(luò)為核心的深度學(xué)習(xí)就開(kāi)始燙了哈哈。
我們可以看到LeNet中有1)卷積層,2)降采樣層(就是Subsampling),和3)全連接層,當(dāng)然嘍,應(yīng)該是由激活函數(shù)層的,只是圖中沒(méi)有畫(huà),當(dāng)時(shí)用的應(yīng)該是sigmoid函數(shù)吧,反正現(xiàn)在不用了。你可以發(fā)現(xiàn)剛剛提到的扔掉層(dropout)和標(biāo)準(zhǔn)化層沒(méi)有用誒,為什么呢,因?yàn)?br /> 當(dāng)時(shí)還沒(méi)有這個(gè)啊==b
可以注意到LeNet的

  • 輸入尺寸是32*32像素
  • 卷積層:3個(gè)
  • 降采樣層:2個(gè)
  • 全連接層:1個(gè)
  • 輸出:10個(gè)類(lèi)別(數(shù)字0-9的概率)

然后softmax根據(jù)網(wǎng)絡(luò)輸出,也就是這個(gè)圖像是0-9的概率值大小來(lái)判斷輸入的是多少,比如輸出的是個(gè)結(jié)點(diǎn),4的值是0.9,其他都是0.001這樣的,那么就是說(shuō)這個(gè)輸入的圖像就是4了,然后根據(jù)這個(gè)輸出的概率,我們可以排列一下輸入圖像輸入某一類(lèi)的概率值,從大到小,取3個(gè)比如,ImageNet競(jìng)賽的規(guī)則就是這三個(gè)里頭有一個(gè)是對(duì)的就當(dāng)你的網(wǎng)絡(luò)預(yù)測(cè)是對(duì)的,不然就是預(yù)測(cè)錯(cuò)誤。

2.2 AlexNet

我個(gè)人的感覺(jué)是AlexNet更強(qiáng)調(diào)了全連接層的作用,它用了兩個(gè)全連接層,那么為了減少權(quán)重的數(shù)目,才引出了dropout這個(gè)概念,其他的區(qū)別其實(shí)不能叫做區(qū)別

  • 輸入尺寸:227*227像素(因?yàn)楦?jìng)賽的需要)
  • 卷積層:好多(因?yàn)檩斎氤叽绲男枰?#xff09;
  • 降采樣層:好多(因?yàn)檩斎氤叽绲男枰?#xff09;
  • 標(biāo)準(zhǔn)化層:這個(gè)反正就是一個(gè)公式
  • 輸出:1000個(gè)類(lèi)別(因?yàn)楦?jìng)賽的需要)

這兒要說(shuō)明一下:不要以為卷積層的個(gè)數(shù)、降采樣層的個(gè)數(shù)、卷積核的尺寸、卷積核的個(gè)數(shù)這些網(wǎng)絡(luò)細(xì)節(jié)會(huì)對(duì)最后的訓(xùn)練結(jié)果產(chǎn)生什么了不得的影響,這些就按照你的輸入圖像的尺寸來(lái)就行了。沒(méi)有什么說(shuō)頭,你也可以去參考現(xiàn)在已經(jīng)有的網(wǎng)絡(luò)結(jié)構(gòu)去設(shè)計(jì),都可以的。這些參數(shù)大多都是手動(dòng)調(diào)的,依據(jù)就是看看學(xué)習(xí)的結(jié)果如何。

放一下AlexNet的結(jié)構(gòu)圖


整體AlexNet結(jié)構(gòu)圖

卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)并不是各個(gè)層的簡(jiǎn)單組合,它是由一個(gè)個(gè)“模塊”有機(jī)組成的,在模塊內(nèi)部,各個(gè)層的排列是有講究的。比如AlexNet的結(jié)構(gòu)圖,它是由八個(gè)模塊組成的。


模塊一
模塊二

模塊一和模塊二是CNN的前面部分,

卷積-激活函數(shù)-降采樣-標(biāo)準(zhǔn)化

構(gòu)成了一個(gè)計(jì)算模塊,這個(gè)可以說(shuō)是一個(gè)卷積過(guò)程的標(biāo)配,CNN的結(jié)構(gòu)就是這樣,從宏觀的角度來(lái)看,就是一層卷積,一層降采樣這樣循環(huán)的,中間適當(dāng)?shù)夭迦胍恍┖瘮?shù)來(lái)控制數(shù)值的范圍,以便后續(xù)的循環(huán)計(jì)算。


模塊三、四

模塊三和四也是兩個(gè)卷積過(guò)程,差別是少了降采樣,原因就跟輸入的尺寸有關(guān),特征的數(shù)據(jù)量已經(jīng)比較小了,所以沒(méi)有降采樣,這個(gè)都沒(méi)有關(guān)系啦。


模塊五

模塊五也是一個(gè)卷積過(guò)程,和模塊一、二一樣事兒的,就是重復(fù)重復(fù)。好了,可以總結(jié)一下,模塊一到五其實(shí)都是在做卷積運(yùn)算,根據(jù)輸入的圖像尺寸在適當(dāng)決定哪幾層要用降采樣。然后再加上一些必要的函數(shù)來(lái)控制數(shù)值,就可以了。模塊五輸出的其實(shí)已經(jīng)是6\6的小塊兒了(一般我設(shè)計(jì)都是到1\1的小塊,由于ImageNet的圖像大,所以6\6也正常的。)
為什么原來(lái)輸入的227\227像素的圖像會(huì)變成6\*6這么小呢,主要原因是歸功于降采樣,當(dāng)然啰,卷積層也會(huì)讓圖像變小,如圖,一層層的下去,圖像越來(lái)越小


CNN過(guò)程
模塊六
模塊七、八

模塊六和七就是所謂的全連接層了,全連接層就和人工神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)一樣的,結(jié)點(diǎn)數(shù)超級(jí)多,連接線也超多,所以這兒引出了一個(gè)dropout層,來(lái)去除一部分沒(méi)有足夠激活的層,其實(shí)我記的沒(méi)錯(cuò)的話這個(gè)思想在ANN里頭早就有了。
模塊八就是一個(gè)輸出的結(jié)果,結(jié)合上softmax做出分類(lèi)。有幾類(lèi),輸出幾個(gè)結(jié)點(diǎn),每個(gè)結(jié)點(diǎn)保存的是屬于該類(lèi)別的概率值。:)

總結(jié)

以上是生活随笔為你收集整理的AlexNet结构详解(引用MrGiovanni博士)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。