99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁精彩閱讀深度學(xué)習(xí)之卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典模型
深度學(xué)習(xí)之卷積神經(jīng)網(wǎng)絡(luò)經(jīng)典模型
2019-06-18
收藏
<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

LeNet-5模型

在CNN的應(yīng)用中,文字識(shí)別系統(tǒng)所用的LeNet-5模型是非常經(jīng)典的模型。LeNet-5模型是1998年,Yann LeCun教授提出的,它是第一個(gè)成功大規(guī)模應(yīng)用在手寫數(shù)字識(shí)別問題的卷積神經(jīng)網(wǎng)絡(luò),在MNIST數(shù)據(jù)集中的正確率可以高達(dá)99.2%。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

下面詳細(xì)介紹一下LeNet-5模型工作的原理。

LeNet-5模型一共有7層,每層包含眾多參數(shù),也就是卷積神經(jīng)網(wǎng)絡(luò)中的參數(shù)。雖然層數(shù)只有7層,這在如今龐大的神經(jīng)網(wǎng)絡(luò)中可是說是非常少的了,但是包含了卷積層,池化層,全連接層,可謂麻雀雖小五臟俱全了。為了方便,我們把卷積層稱為C層,下采樣層叫做下采樣層。

首先,輸入層輸入原始圖像,原始圖像被處理成32×32個(gè)像素點(diǎn)的值。然后,后面的隱層計(jì)在卷積和子抽樣之間交替進(jìn)行。C1層是卷積層,包含了六個(gè)特征圖。每個(gè)映射也就是28x28個(gè)神經(jīng)元。卷積核可以是5x5的十字形,這28×28個(gè)神經(jīng)元共享卷積核權(quán)值參數(shù),通過卷積運(yùn)算,原始信號(hào)特征增強(qiáng),同時(shí)也降低了噪聲,當(dāng)卷積核不同時(shí),提取到圖像中的特征不同;C2層是一個(gè)池化層,池化層的功能在上文已經(jīng)介紹過了,它將局部像素值平均化來實(shí)現(xiàn)子抽樣。

池化層包含了六個(gè)特征映射,每個(gè)映射的像素值為14x14,這樣的池化層非常重要,可以在一定程度上保證網(wǎng)絡(luò)的特征被提取,同時(shí)運(yùn)算量也大大降低,減少了網(wǎng)絡(luò)結(jié)構(gòu)過擬合的風(fēng)險(xiǎn)。因?yàn)榫矸e層與池化層是交替出現(xiàn)的,所以隱藏層的第三層又是一個(gè)卷積層,第二個(gè)卷積層由16個(gè)特征映射構(gòu)成,每個(gè)特征映射用于加權(quán)和計(jì)算的卷積核為10x10的。第四個(gè)隱藏層,也就是第二個(gè)池化層同樣包含16個(gè)特征映射,每個(gè)特征映射中所用的卷積核是5x5的。第五個(gè)隱藏層是用5x5的卷積核進(jìn)行運(yùn)算,包含了120個(gè)神經(jīng)元,也是這個(gè)網(wǎng)絡(luò)中卷積運(yùn)算的最后一層。

之后的第六層便是全連接層,包含了84個(gè)特征圖。全連接層中對(duì)輸入進(jìn)行點(diǎn)積之后加入偏置,然后經(jīng)過一個(gè)激活函數(shù)傳輸給輸出層的神經(jīng)元。最后一層,也就是第七層,為了得到輸出向量,設(shè)置了十個(gè)神經(jīng)元來進(jìn)行分類,相當(dāng)于輸出一個(gè)包含十個(gè)元素的一維數(shù)組,向量中的十個(gè)元素即0到9。

AlexNet模型

AlexNet簡介

2012年Imagenet圖像識(shí)別大賽中,Alext提出的alexnet網(wǎng)絡(luò)模型一鳴驚人,引爆了神經(jīng)網(wǎng)絡(luò)的應(yīng)用熱潮,并且贏得了2012屆圖像識(shí)別大賽的冠軍,這也使得卷積神經(jīng)網(wǎng)絡(luò)真正意義上成為圖像處理上的核心算法。上文介紹的LeNet-5出現(xiàn)在上個(gè)世紀(jì),雖然是經(jīng)典,但是迫于種種復(fù)雜的現(xiàn)實(shí)場(chǎng)景限制,只能在一些領(lǐng)域應(yīng)用。不過,隨著SVM等手工設(shè)計(jì)的特征的飛速發(fā)展,LeNet-5并沒有形成很大的應(yīng)用狀況。隨著ReLU與dropout的提出,以及GPU帶來算力突破和互聯(lián)網(wǎng)時(shí)代大數(shù)據(jù)的爆發(fā),卷積神經(jīng)網(wǎng)絡(luò)帶來歷史的突破,AlexNet的提出讓深度學(xué)習(xí)走上人工智能的最前端。

圖像預(yù)處理

AlexNet的訓(xùn)練數(shù)據(jù)采用ImageNet的子集中的ILSVRC2010數(shù)據(jù)集,包含了1000類,共1.2百萬的訓(xùn)練圖像,50000張驗(yàn)證集,150000張測(cè)試集。在進(jìn)行網(wǎng)絡(luò)訓(xùn)練之前我們要對(duì)數(shù)據(jù)集圖片進(jìn)行預(yù)處理。首先我們要將不同分辨率的圖片全部變成256x256規(guī)格的圖像,變換方法是將圖片的短邊縮放到 256像素值,然后截取長邊的中間位置的256個(gè)像素值,得到256x256大小的圖像。除了對(duì)圖片大小進(jìn)行預(yù)處理,還需要對(duì)圖片減均值,一般圖像均是由RGB三原色構(gòu)成,均值按RGB三分量分別求得,由此可以更加突出圖片的特征,更方便后面的計(jì)算。

此外,對(duì)了保證訓(xùn)練的效果,我們?nèi)孕鑼?duì)訓(xùn)練數(shù)據(jù)進(jìn)行更為嚴(yán)苛的處理。在256x256大小的圖像中,截取227x227大小的圖像,在此之后對(duì)圖片取鏡像,這樣就使得原始數(shù)據(jù)增加了(256-224)x(256-224)x2= 2048倍。最后對(duì)RGB空間做PCA,然后對(duì)主成分做(0,0.1)的高斯擾動(dòng),結(jié)果使錯(cuò)誤率下降1%。對(duì)測(cè)試數(shù)據(jù)而言,抽取以圖像4個(gè)角落的大小為224224的圖像,中心的224224大小的圖像以及它們的鏡像翻轉(zhuǎn)圖像,這樣便可以獲得10張圖像,我們便可以利用softmax進(jìn)行預(yù)測(cè),對(duì)所有預(yù)測(cè)取平均作為最終的分類結(jié)果。

ReLU激活函數(shù)

之前我們提到常用的非線性的激活函數(shù)是sigmoid,它能夠把輸入的連續(xù)實(shí)值全部確定在0和1之間。但是這帶來一個(gè)問題,當(dāng)一個(gè)負(fù)數(shù)的絕對(duì)值很大時(shí),那么輸出就是0;如果是絕對(duì)值非常大的正數(shù),輸出就是1。這就會(huì)出現(xiàn)飽和的現(xiàn)象,飽和現(xiàn)象中神經(jīng)元的梯度會(huì)變得特別小,這樣必然會(huì)使得網(wǎng)絡(luò)的學(xué)習(xí)更加困難。此外,sigmoid的output的值并不是0為均值,因?yàn)檫@會(huì)導(dǎo)致上一層輸出的非0均值信號(hào)會(huì)直接輸入到后一層的神經(jīng)元上。所以AlexNet模型提出了ReLU函數(shù),公式:f(x)=max(0,x)f(x)=max(0,x)。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

用ReLU代替了Sigmoid,發(fā)現(xiàn)使用 ReLU 得到的SGD的收斂速度會(huì)比 sigmoid快很多,這成了AlexNet模型的優(yōu)勢(shì)之一。

Dropout

AlexNet模型提出了一個(gè)有效的模型組合方式,相比于單模型,只需要多花費(fèi)一倍的時(shí)間,這種方式就做Dropout。在整個(gè)神經(jīng)網(wǎng)絡(luò)中,隨機(jī)選取一半的神經(jīng)元將它們的輸出變成0。這種方式使得網(wǎng)絡(luò)關(guān)閉了部分神經(jīng)元,減少了過擬合現(xiàn)象。同時(shí)訓(xùn)練的迭代次數(shù)也得以增加。當(dāng)時(shí)一個(gè)GTX580 GPU只有3GB內(nèi)存,這使得大規(guī)模的運(yùn)算成為不可能。但是,隨著硬件水平的發(fā)展,當(dāng)時(shí)的GPU已經(jīng)可以實(shí)現(xiàn)并行計(jì)算了,并行計(jì)算之后兩塊GPU可以互相通信傳輸數(shù)據(jù),這樣的方式充分利用了GPU資源,所以模型設(shè)計(jì)利用兩個(gè)GPU并行運(yùn)算,大大提高了運(yùn)算效率。

模型分析

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

AlexNet模型共有8層結(jié)構(gòu),其中前5層為卷積層,其中前兩個(gè)卷積層和第五個(gè)卷積層有池化層,其他卷積層沒有。后面3層為全連接層,神經(jīng)元約有六十五萬個(gè),所需要訓(xùn)練的參數(shù)約六千萬個(gè)。

圖片預(yù)處理過后,進(jìn)過第一個(gè)卷積層C1之后,原始的圖像也就變成了55x55的像素大小,此時(shí)一共有96個(gè)通道。模型分為上下兩塊是為了方便GPU運(yùn)算,48作為通道數(shù)目更加適合GPU的并行運(yùn)算。上圖的模型里把48層直接變成了一個(gè)面,這使得模型看上去更像一個(gè)立方體,大小為55x55x48。在后面的第二個(gè)卷積層C2中,卷積核的尺寸為5x5x48,由此再次進(jìn)行卷積運(yùn)算。在C1,C2卷積層的卷積運(yùn)算之后,都會(huì)有一個(gè)池化層,使得提取特征之后的特征圖像素值大大減小,方便了運(yùn)算,也使得特征更加明顯。而第三層的卷積層C3又是更加特殊了。第三層卷積層做了通道的合并,將之前兩個(gè)通道的數(shù)據(jù)再次合并起來,這是一種串接操作。第三層后,由于串接,通道數(shù)變成256。全卷積的卷積核尺寸也就變成了13×13×25613×13×256。一個(gè)有4096個(gè)這樣尺寸的卷積核分別對(duì)輸入圖像做4096次的全卷積操作,最后的結(jié)果就是一個(gè)列向量,一共有4096個(gè)數(shù)。這也就是最后的輸出,但是AlexNet最終是要分1000個(gè)類,所以通過第八層,也就是全連接的第三層,由此得到1000個(gè)類輸出。

Alexnet網(wǎng)絡(luò)中各個(gè)層發(fā)揮了不同的作用,ReLU,多個(gè)CPU是為了提高訓(xùn)練速度,重疊pool池化是為了提高精度,且不容易產(chǎn)生過擬合,局部歸一化響應(yīng)是為了提高精度,而數(shù)據(jù)增益與dropout是為了減少過擬合

VGG net

在ILSVRC-2014中,牛津大學(xué)的視覺幾何組提出的VGGNet模型在定位任務(wù)第一名和分類任務(wù)第一名[[i]]。如今在計(jì)算機(jī)視覺領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)的良好效果深得廣大開發(fā)者的喜歡,并且上文提到的AlexNet模型擁有更好的效果,所以廣大從業(yè)者學(xué)習(xí)者試圖將其改進(jìn)以獲得更好地效果。而后來很多人經(jīng)過驗(yàn)證認(rèn)為,AlexNet模型中所謂的局部歸一化響應(yīng)浪費(fèi)了計(jì)算資源,但是對(duì)性能卻沒有很大的提升。VGG的實(shí)質(zhì)是AlexNet結(jié)構(gòu)的增強(qiáng)版,它側(cè)重強(qiáng)調(diào)卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)中的深度。將卷積層的深度提升到了19層,并且在當(dāng)年的ImageNet大賽中的定位問題中獲得了第一名的好成績。整個(gè)網(wǎng)絡(luò)向人們證明了我們是可以用很小的卷積核取得很好地效果,前提是我們要把網(wǎng)絡(luò)的層數(shù)加深,這也論證了我們要想提高整個(gè)神經(jīng)網(wǎng)絡(luò)的模型效果,一個(gè)較為有效的方法便是將它的深度加深,雖然計(jì)算量會(huì)大大提高,但是整個(gè)復(fù)雜度也上升了,更能解決復(fù)雜的問題。雖然VGG網(wǎng)絡(luò)已經(jīng)誕生好幾年了,但是很多其他網(wǎng)絡(luò)上效果并不是很好地情況下,VGG有時(shí)候還能夠發(fā)揮它的優(yōu)勢(shì),讓人有意想不到的收獲。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

與AlexNet網(wǎng)絡(luò)非常類似,VGG共有五個(gè)卷積層,并且每個(gè)卷積層之后都有一個(gè)池化層。當(dāng)時(shí)在ImageNet大賽中,作者分別嘗試了六種網(wǎng)絡(luò)結(jié)構(gòu)。這六種結(jié)構(gòu)大致相同,只是層數(shù)不同,少則11層,多達(dá)19層。網(wǎng)絡(luò)結(jié)構(gòu)的輸入是大小為224*224的RGB圖像,最終將分類結(jié)果輸出。當(dāng)然,在輸入網(wǎng)絡(luò)時(shí),圖片要進(jìn)行預(yù)處理。

VGG網(wǎng)絡(luò)相比AlexNet網(wǎng)絡(luò),在網(wǎng)絡(luò)的深度以及寬度上做了一定的拓展,具體的卷積運(yùn)算還是與AlexNet網(wǎng)絡(luò)類似。我們主要說明一下VGG網(wǎng)絡(luò)所做的改進(jìn)。第一點(diǎn),由于很多研究者發(fā)現(xiàn)歸一化層的效果并不是很好,而且占用了大量的計(jì)算資源,所以在VGG網(wǎng)絡(luò)中作者取消了歸一化層;第二點(diǎn),VGG網(wǎng)絡(luò)用了更小的3x3的卷積核,而兩個(gè)連續(xù)的3x3的卷積核相當(dāng)于5x5的感受野,由此類推,三個(gè)3x3的連續(xù)的卷積核也就相當(dāng)于7x7的感受野。這樣的變化使得參數(shù)量更小,節(jié)省了計(jì)算資源,將資源留給后面的更深層次的網(wǎng)絡(luò)。第三點(diǎn)是VGG網(wǎng)絡(luò)中的池化層特征池化核改為了2x2,而在AlexNet網(wǎng)絡(luò)中池化核為3x3。這三點(diǎn)改進(jìn)無疑是使得整個(gè)參數(shù)運(yùn)算量下降,這樣我們?cè)谟邢薜挠?jì)算平臺(tái)上能夠獲得更多的資源留給更深層的網(wǎng)絡(luò)。由于層數(shù)較多,卷積核比較小,這樣使得整個(gè)網(wǎng)絡(luò)的特征提取效果很好。其實(shí)由于VGG的層數(shù)較多,所以計(jì)算量還是相當(dāng)大的,卷積層比較多成了它最顯著的特點(diǎn)。另外,VGG網(wǎng)絡(luò)的拓展性能比較突出,結(jié)構(gòu)比較簡潔,所以它的遷移性能比較好,遷移到其他數(shù)據(jù)集的時(shí)候泛化性能好。到現(xiàn)在為止,VGG網(wǎng)絡(luò)還經(jīng)常被用來提出特征。所以當(dāng)現(xiàn)在很多較新的模型效果不好時(shí),使用VGG可能會(huì)解決這些問題。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

GoogleNet

谷歌于2014年Imagenet挑戰(zhàn)賽(ILSVRC14)憑借GoogleNet再次斬獲第一名。這個(gè)通過增加了神經(jīng)網(wǎng)絡(luò)的深度和寬度獲得了更好地效果,在此過程中保證了計(jì)算資源的不變。這個(gè)網(wǎng)絡(luò)論證了加大深度,寬度以及訓(xùn)練數(shù)據(jù)的增加是現(xiàn)有深度學(xué)習(xí)獲得更好效果的主要方式。但是增加尺寸可能會(huì)帶來過擬合的問題,因?yàn)樯疃扰c寬度的加深必然會(huì)帶來過量的參數(shù)。此外,增加網(wǎng)絡(luò)尺寸也帶來了對(duì)計(jì)算資源侵占過多的缺點(diǎn)。為了保證計(jì)算資源充分利用的前提下去提高整個(gè)模型的性能,作者使用了Inception模型,這個(gè)模型在下圖中有展示,可以看出這個(gè)有點(diǎn)像金字塔的模型在寬度上使用并聯(lián)的不同大小的卷積核,增加了卷積核的輸出寬度。因?yàn)槭褂昧溯^大尺度的卷積核增加了參數(shù)。使用了1*1的卷積核就是為了使得參數(shù)的數(shù)量最少。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型
<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

Inception模塊

上圖表格為網(wǎng)絡(luò)分析圖,第一行為卷積層,輸入為224×224×3 ,卷積核為7x7,步長為2,padding為3,輸出的維度為112×112×64,這里面的7x7卷積使用了 7×1 然后 1×7 的方式,這樣便有(7+7)×64×3=2,688個(gè)參數(shù)。第二行為池化層,卷積核為3×33×3,滑動(dòng)步長為2,padding為 1 ,輸出維度:56×56×64,計(jì)算方式:1/2×(112+2×1?3+1)=56。第三行,第四行與第一行,第二行類似。第 5 行 Inception module中分為4條支線,輸入均為上層產(chǎn)生的 28×28×192 結(jié)果:第 1 部分,1×1 卷積層,輸出大小為28×28×64;第 2 部分,先1×1卷積層,輸出大小為28×28×96,作為輸入進(jìn)行3×3卷積層,輸出大小為28×28×128;第 3部分,先1×1卷積層,輸出大小為28×28×32,作為輸入進(jìn)行3×3卷積層,輸出大小為28×28×32;而第3 部分3×3的池化層,輸出大小為輸出大小為28×28×32。第5行的Inception module會(huì)對(duì)上面是個(gè)結(jié)果的輸出結(jié)果并聯(lián),由此增加網(wǎng)絡(luò)寬度。

ResNet

2015年ImageNet大賽中,MSRA何凱明團(tuán)隊(duì)的ResidualNetworks力壓群雄,在ImageNet的諸多領(lǐng)域的比賽中上均獲得了第一名的好成績,而且這篇關(guān)于ResNet的論文Deep Residual Learning for Image Recognition也獲得了CVPR2016的最佳論文,實(shí)至而名歸。

上文介紹了的VGG以及GoogleNet都是增加了卷積神經(jīng)網(wǎng)絡(luò)的深度來獲得更好效果,也讓人們明白了網(wǎng)絡(luò)的深度與廣度決定了訓(xùn)練的效果。但是,與此同時(shí),寬度與深度加深的同時(shí),效果實(shí)際會(huì)慢慢變差。也就是說模型的層次加深,錯(cuò)誤率提高了。模型的深度加深,以一定的錯(cuò)誤率來換取學(xué)習(xí)能力的增強(qiáng)。但是深層的神經(jīng)網(wǎng)絡(luò)模型犧牲了大量的計(jì)算資源,學(xué)習(xí)能力提高的同時(shí)不應(yīng)當(dāng)產(chǎn)生比淺層神經(jīng)網(wǎng)絡(luò)更高的錯(cuò)誤率。這個(gè)現(xiàn)象的產(chǎn)生主要是因?yàn)殡S著神經(jīng)網(wǎng)絡(luò)的層數(shù)增加,梯度消失的現(xiàn)象就越來越明顯。所以為了解決這個(gè)問題,作者提出了一個(gè)深度殘差網(wǎng)絡(luò)的結(jié)構(gòu)Residual:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

上圖就是殘差網(wǎng)絡(luò)的基本結(jié)構(gòu),可以看出其實(shí)是增加了一個(gè)恒等映射,將原本的變換函數(shù)H(x)轉(zhuǎn)換成了F(x)+x。示意圖中可以很明顯看出來整個(gè)網(wǎng)絡(luò)的變化,這樣網(wǎng)絡(luò)不再是簡單的堆疊結(jié)構(gòu),這樣的話便很好地解決了由于網(wǎng)絡(luò)層數(shù)增加而帶來的梯度原來越不明顯的問題。所以這時(shí)候網(wǎng)絡(luò)可以做得很深,到目前為止,網(wǎng)絡(luò)的層數(shù)都可以上千層,而能夠保證很好地效果。并且,這樣的簡單疊加并沒有給網(wǎng)絡(luò)增加額外的參數(shù)跟計(jì)算量,同時(shí)也提高了網(wǎng)絡(luò)訓(xùn)練的效果與效率。

在比賽中,為了證明自己觀點(diǎn)是正確的,作者控制變量地設(shè)計(jì)幾個(gè)實(shí)驗(yàn)。首先作者構(gòu)建了兩個(gè)plain網(wǎng)絡(luò),這兩個(gè)網(wǎng)絡(luò)分別為18層跟34層,隨后作者又設(shè)計(jì)了兩個(gè)殘差網(wǎng)絡(luò),層數(shù)也是分別為18層和34層。然后對(duì)這四個(gè)模型進(jìn)行控制變量的實(shí)驗(yàn)觀察數(shù)據(jù)量的變化。下圖便是實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)中,在plain網(wǎng)絡(luò)上觀測(cè)到明顯的退化現(xiàn)象。實(shí)驗(yàn)結(jié)果也表明,在殘差網(wǎng)絡(luò)上,34層的效果明顯要好于18層的效果,足以證明殘差網(wǎng)絡(luò)隨著層數(shù)增加性能也是增加的。不僅如此,殘差網(wǎng)絡(luò)的在更深層的結(jié)構(gòu)上收斂性能也有明顯的提升,整個(gè)實(shí)驗(yàn)大為成功。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

除此之外,作者還做了關(guān)于shortcut方式的實(shí)驗(yàn),如果殘差網(wǎng)絡(luò)模塊的輸入輸出維度不一致,我們?nèi)绻咕S度統(tǒng)一,必須要對(duì)維數(shù)較少的進(jìn)行増維。而增維的最好效果是用0來填充。不過實(shí)驗(yàn)數(shù)據(jù)顯示三者差距很小,所以線性投影并不是特別需要。使用0來填充維度同時(shí)也保證了模型的復(fù)雜度控制在比較低的情況下。

隨著實(shí)驗(yàn)的深入,作者又提出了更深的殘差模塊。這種模型減少了各個(gè)層的參數(shù)量,將資源留給更深層數(shù)的模型,在保證復(fù)雜度很低的情況下,模型也沒有出現(xiàn)梯度消失很明顯的情況,因此目前模型最高可達(dá)1202層,錯(cuò)誤率仍然控制得很低。但是層數(shù)如此之多也帶來了過擬合的現(xiàn)象,不過諸多研究者仍在改進(jìn)之中,畢竟此時(shí)的ResNet已經(jīng)相對(duì)于其他模型在性能上遙遙領(lǐng)先了。

殘差網(wǎng)絡(luò)的精髓便是shortcut。從一個(gè)角度來看,也可以解讀為多種路徑組合的一個(gè)網(wǎng)絡(luò)。如下圖:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

ResNet可以做到很深,但是從上圖中可以體會(huì)到,當(dāng)網(wǎng)絡(luò)很深,也就是層數(shù)很多時(shí),數(shù)據(jù)傳輸?shù)穆窂狡鋵?shí)相對(duì)比較固定。我們似乎也可以將其理解為一個(gè)多人投票系統(tǒng),大多數(shù)梯度都分布在論文中所謂的effective path上。

DenseNet

在Resnet模型之后,有人試圖對(duì)ResNet模型進(jìn)行改進(jìn),由此便誕生了ResNeXt模型。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

這是對(duì)上面介紹的ResNet模型結(jié)合了GoogleNet中的inception模塊思想,相比于Resnet來說更加有效。隨后,誕生了DenseNet模型,它直接將所有的模塊連接起來,整個(gè)模型更加簡單粗暴。稠密相連成了它的主要特點(diǎn)。

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型
<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

我們將DenseNet與ResNet相比較:

<a href='/map/shenduxuexi/' style='color:#000;font-size:inherit;'>深度學(xué)習(xí)</a>之卷積<a href='/map/shenjingwangluo/' style='color:#000;font-size:inherit;'>神經(jīng)網(wǎng)絡(luò)</a>經(jīng)典模型

從上圖中可以看出,相比于ResNet,DenseNet參數(shù)量明顯減少很多,效果也更加優(yōu)越,只是DenseNet需要消耗更多的內(nèi)存。

總結(jié)

上面介紹了卷積神經(jīng)網(wǎng)絡(luò)發(fā)展史上比較著名的一些模型,這些模型非常經(jīng)典,也各有優(yōu)勢(shì)。在算力不斷增強(qiáng)的現(xiàn)在,各種新的網(wǎng)絡(luò)訓(xùn)練的效率以及效果也在逐漸提高。從收斂速度上看,VGG>Inception>DenseNet>ResNet,從泛化能力來看,Inception>DenseNet=ResNet>VGG,從運(yùn)算量看來,Inception<DenseNet< ResNet<VGG,從內(nèi)存開銷來看,Inception<ResNet< DenseNet<VGG。在本次研究中,我們對(duì)各個(gè)模型均進(jìn)行了分析,但從效果來看,ResNet效果是最好的,優(yōu)于Inception,優(yōu)于VGG,所以我們第四章實(shí)驗(yàn)中主要采用谷歌的Inception模型,也就是GoogleNet。

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }