經(jīng)典網(wǎng)絡(luò)
LeNet網(wǎng)絡(luò)
LeNet網(wǎng)絡(luò)的結(jié)構(gòu)如下圖所示惠勒,可以看出赚抡,LeNet網(wǎng)絡(luò)并沒(méi)有使用padding,每進(jìn)行一次卷積纠屋,圖像的高度和寬度都會(huì)縮小涂臣,而通道數(shù)會(huì)一直增加。在全連接層中有400個(gè)節(jié)點(diǎn)售担,每個(gè)極點(diǎn)都有120個(gè)神經(jīng)元赁遗,有時(shí)還會(huì)從這400個(gè)節(jié)點(diǎn)抽取一部分節(jié)點(diǎn)構(gòu)建一個(gè)全連接層署辉,即有兩個(gè)全連接層。在該網(wǎng)絡(luò)中岩四,最后一步就是利用84個(gè)特征得到最后的輸出哭尝,該網(wǎng)絡(luò)剛開(kāi)始使用的是sigmoid
函數(shù)tanh
函數(shù),而現(xiàn)在常常傾向于使用softmax
函數(shù)炫乓。需要注意的是刚夺,LeNet-5網(wǎng)絡(luò)進(jìn)行圖像分類時(shí)献丑,輸入的圖像是單通道的灰度圖像末捣。
AlexNet
AlexNet是以論文第一作者的名字命名的,該網(wǎng)絡(luò)的結(jié)構(gòu)创橄,如下圖所示箩做,該網(wǎng)絡(luò)的輸出層使用了softmax
函數(shù)。AlexNet網(wǎng)絡(luò)比LeNet網(wǎng)絡(luò)規(guī)模更大妥畏,大約有6000萬(wàn)個(gè)參數(shù)邦邦,用于訓(xùn)練圖像和數(shù)據(jù)集時(shí),能夠處理非常相似的基本構(gòu)造模塊醉蚁,這些模塊中包含著大量的隱藏單元燃辖,并且與LeNet網(wǎng)絡(luò)不同的是,該網(wǎng)絡(luò)使用了ReLu的激活函數(shù)网棍。
VGG-16
VGG-16網(wǎng)絡(luò)沒(méi)有太多的超參數(shù)黔龟,這是一種專注于構(gòu)建卷積層的簡(jiǎn)單網(wǎng)絡(luò)。如下圖所示滥玷,該網(wǎng)絡(luò)首先利用64個(gè)過(guò)濾器進(jìn)行了兩次卷積氏身,接著在池化層將輸入圖像壓縮,接著又是128個(gè)過(guò)濾器進(jìn)行兩次卷積惑畴,接著載池化蛋欣。繼續(xù)用256個(gè)過(guò)濾器進(jìn)行3次卷積,再池化如贷,接著再利用512個(gè)過(guò)濾器卷積3次陷虎,再池化,將稍后得到的特征圖進(jìn)行全連接操作杠袱,再進(jìn)softmax
激活尚猿。
殘差網(wǎng)絡(luò)(ResNets:Residual Networks)
由于存在梯度消失和梯度爆炸的原因,深層次的神經(jīng)網(wǎng)絡(luò)是很難訓(xùn)練的霞掺,如果采用一種跳躍連接的方式谊路,即從某一層網(wǎng)絡(luò)層獲取激活,然后迅速反饋給另外一層菩彬,甚至是神經(jīng)網(wǎng)絡(luò)的更深層缠劝。這種利用跳躍連接構(gòu)建的深度神經(jīng)網(wǎng)絡(luò)ResNets潮梯,深度能夠超過(guò)100層
一個(gè)簡(jiǎn)單的兩層神經(jīng)網(wǎng)絡(luò)示例,如下圖所示:
常規(guī)的輸出和輸出之間的關(guān)系可以用如下的公式表示:
如上公式所述惨恭,這是一條神經(jīng)網(wǎng)絡(luò)的主路徑秉馏。如果將的輸入直接到深層的激活函數(shù)之前,此時(shí)脱羡,神經(jīng)網(wǎng)絡(luò)有了一條副路徑萝究,其對(duì)應(yīng)輸出將有公式(5)變成如下所示的公式(6)
此時(shí)的輸入除了原先的輸入外,多了一個(gè)項(xiàng)锉罐,即由于 產(chǎn)生了一個(gè)殘差塊帆竹。
構(gòu)建一個(gè)ResNet網(wǎng)絡(luò)就是將很多這樣的殘差塊堆積在一起,形成一個(gè)深度神經(jīng)網(wǎng)絡(luò)脓规,如下所示:
使用傳統(tǒng)的標(biāo)準(zhǔn)優(yōu)化算法訓(xùn)練一個(gè)網(wǎng)絡(luò)栽连,隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練誤差會(huì)先減小再增加侨舆,隨著網(wǎng)絡(luò)層數(shù)的增加秒紧,優(yōu)化算法會(huì)越難以訓(xùn)練,訓(xùn)練誤差也會(huì)越來(lái)越多挨下。但是熔恢,使用ResNet網(wǎng)絡(luò),能夠有效地避免這種情況臭笆。
對(duì)殘差網(wǎng)絡(luò)的理解
如上所述叙淌,加入殘差網(wǎng)絡(luò)之后,其輸出計(jì)算公式如公式(6)所示耗啦,展開(kāi)這個(gè)公式凿菩,則有:
如果使用L2正則化或者權(quán)重衰減,則會(huì)壓縮權(quán)重參數(shù)的值帜讲,如果參數(shù)和參數(shù)等于0衅谷,其輸出將由公式(7)變成,假定使用ReLU激活函數(shù)似将,則有:
由于殘差網(wǎng)絡(luò)存在的這種跳躍連接获黔,很容易得出以上等式,這意味著在验,即使給神經(jīng)網(wǎng)絡(luò)增加兩層玷氏,但是其效率并不遜色與更簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)。并且由于存在以上恒等式腋舌,使得網(wǎng)絡(luò)學(xué)習(xí)隱藏層的單元的信息更加容易盏触。而普通網(wǎng)絡(luò),隨著網(wǎng)絡(luò)層數(shù)的增加,學(xué)習(xí)參數(shù)會(huì)變得很困難赞辩。
此外雌芽,關(guān)于殘差網(wǎng)絡(luò),如公式(6)所示辨嗽,假設(shè)與具有相同的維度世落,由于ResNets使用了許多same卷積,的維度等于輸出層的維度糟需。如果輸入和輸出具有不同的維度屉佳,可以再增加一個(gè)矩陣,使得和具有相同的維度洲押。而的維度可以通過(guò)0值填充調(diào)節(jié)武花。
1×1的卷積網(wǎng)絡(luò)
在卷積網(wǎng)絡(luò)的架構(gòu)設(shè)計(jì)中,一種有趣的想法是會(huì)使用到1×1的過(guò)濾矩陣诅诱,實(shí)際上髓堪,對(duì)于單通道的圖像而言,1×1的過(guò)濾矩陣娘荡,意義不大,但是驶沼,對(duì)于多通道的圖像而言炮沐,1×1的過(guò)濾矩陣能夠有效減少圖像卷積之后的通道數(shù)量。
根據(jù)卷積和池化的基本知識(shí)回怜,隨著神經(jīng)網(wǎng)絡(luò)層數(shù)的增加大年,圖像的通道數(shù)量會(huì)逐漸增加,采用1×1的過(guò)濾矩陣卷積之后玉雾,可以有效減少圖像的通道數(shù)量翔试,一個(gè)簡(jiǎn)單的示例,如下所示:
假設(shè)有一個(gè)6×6×32的圖片复旬,使用1×1×32的過(guò)濾矩陣進(jìn)行卷積運(yùn)算垦缅,整個(gè)運(yùn)算過(guò)程將會(huì)遍歷36個(gè)單元格,并計(jì)算過(guò)濾矩陣所覆蓋區(qū)域的元素積之和驹碍,將其應(yīng)用到ReLu非線性函數(shù)壁涎,會(huì)得到一個(gè)輸出值。此計(jì)算過(guò)程中志秃,可能會(huì)用到多個(gè)1×1×32的過(guò)濾器怔球,那么,通過(guò)以上計(jì)算會(huì)得到一個(gè)6×6×過(guò)濾器數(shù)量
的矩陣浮还。
Inception網(wǎng)絡(luò)
構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)時(shí)竟坛,有時(shí)會(huì)很難決定過(guò)濾器的大小,而Inception網(wǎng)絡(luò)的引入,卻能很好的解決這個(gè)問(wèn)題担汤。
Inception網(wǎng)絡(luò)的作用就是代替人工確定選擇卷積層的過(guò)濾器類型又官。如下圖所示,對(duì)于一個(gè)多通道圖像漫试,可以使用不同的過(guò)濾矩陣或者池化層六敬,得到不同的輸出,將這些輸出堆積起來(lái)驾荣。
有了如上圖所示的Inception塊外构,最終輸出為32+32+64+128=256,而Inception模塊的輸入為28×28×192播掷,其整個(gè)計(jì)算成本审编,以5×5的過(guò)濾矩陣為例,其乘法的計(jì)算次數(shù)為:28×28×32×5×5×192歧匈,整個(gè)計(jì)算次數(shù)超過(guò)了1.2億次垒酬。而如果使用如下所示的優(yōu)化計(jì)算方法,則可以有效減少計(jì)算量件炉。
如果利用1×1的過(guò)濾器勘究,將輸入矩陣的通道減少至16,則可以有效減少計(jì)算量斟冕,如下所示:
如上圖所示的價(jià)格中口糕,整個(gè)網(wǎng)絡(luò)的運(yùn)算次數(shù)為:28×28×192×16+28×28×32×5×5×16=1240萬(wàn),整個(gè)計(jì)算成本降低至原來(lái)的十分之一磕蛇。而景描,通過(guò)1×1×192過(guò)濾器卷積得到的這個(gè)網(wǎng)絡(luò)層被稱之為瓶頸層。
如上秀撇,所示超棺,可以給每一個(gè)非1×1的卷積層之前,加入一個(gè)1×1的瓶頸層呵燕,就可以構(gòu)建一個(gè)基本的inception模塊了棠绘,如下圖所示:
而一個(gè)inception網(wǎng)絡(luò)就是多個(gè)Inception模塊連接起來(lái),如下圖所示:
事實(shí)上虏等,以上網(wǎng)絡(luò)中弄唧,還存在一些分支,如編號(hào)1所示霍衫,這些分支就是全連接層候引,而全連接層之后就是一個(gè)softmax層用于預(yù)測(cè)。又如分支2所示敦跌,包含一些隱藏層(編號(hào)3)澄干,通過(guò)全連接層和softmax進(jìn)行預(yù)測(cè)逛揩。這些分支結(jié)構(gòu)能夠確保,即使是隱藏層和中間層也參與了特征計(jì)算麸俘,并且也能夠預(yù)測(cè)圖片的分類辩稽。這種做法能夠有效避免網(wǎng)絡(luò)過(guò)擬合。
數(shù)據(jù)增強(qiáng)
對(duì)于計(jì)算機(jī)視覺(jué)領(lǐng)域而言从媚,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練可能需要大量的數(shù)據(jù)逞泄,但是當(dāng)數(shù)據(jù)量有限時(shí),可以通過(guò)數(shù)據(jù)增強(qiáng)來(lái)實(shí)現(xiàn)數(shù)據(jù)量的擴(kuò)充拜效,以提高系統(tǒng)的魯棒性喷众,具體的數(shù)據(jù)增強(qiáng)方法如下所示:
- 鏡像翻轉(zhuǎn)
- 隨機(jī)裁剪
- 顏色轉(zhuǎn)換(RGB通道增加不同的失真值)
除了以上三種數(shù)據(jù)增強(qiáng)的方法外,更多的數(shù)據(jù)增強(qiáng)方法和實(shí)現(xiàn)可以參考圖像數(shù)據(jù)增強(qiáng)
數(shù)據(jù)增強(qiáng)可以利用計(jì)算機(jī)多線程實(shí)現(xiàn)紧憾,一個(gè)線程用來(lái)實(shí)現(xiàn)加載數(shù)據(jù)到千,實(shí)現(xiàn)數(shù)據(jù)增強(qiáng),其他線程可以訓(xùn)練這些數(shù)據(jù)以加快整體的運(yùn)算速度赴穗。