AlexNet :ImageNet Classification with Deep Convolution Neural Networks

網(wǎng)絡(luò)架構(gòu):


網(wǎng)絡(luò)架構(gòu)

整個網(wǎng)絡(luò)一共有八層,包括5層卷積層,3層全連接層,最后一層為輸出層,輸出1000維的vector,表示該image在1000類圖像的分布情況。

每一卷積層和全連接層的都與激活層相連。第一,第二層卷積層之后,緊連著局部響應(yīng)歸一化層(Local Response Normalization),之后為池化層(下采樣,MaxPooling)。第五層卷積層,緊連著池化層。

各層策略:

Local Response Normalization:

將當(dāng)前神經(jīng)元的輸出與其鄰近的n個神經(jīng)元做歸一化,對輸出做一個尺度變換,(使得每個輸出分布更集中,加快收斂,泛化性能)。ai表示第i個神經(jīng)元輸出,bi表示歸一化后的神經(jīng)元輸出,k,a,n為常量,為超參數(shù)。


Local Response Normalization

Maxpooling層:

Max Pooling對得到的結(jié)果進行下采樣,縮小輸出結(jié)構(gòu)。以往的池化層,采取無重疊池化。在AlexNet中,作者采用有重疊池化。實驗結(jié)果表明,有重疊池化較無重疊池化更難于過擬合。假設(shè)輸入為I,pooling區(qū)域大小為F,步長為stride,則輸出大小為:(I - F)/stride? + 1

當(dāng)無重疊池化時,F(xiàn)=stride,即 I/stride - F/stride + 1 = I/stride。

文中取F = 3,stride =2 即 (I - 3)/2 + 1


non-overlapping



overlapping

個人感覺重疊池化做法,與HOG特征生成過程中的歸一化有點類似,歸一化過程 ,block之間是有重疊的。重疊池化,考慮周圍特征,把局部最顯著的特征留下。

激活層(激活函數(shù)的選擇):


tanh Vs ReLu

文中從收斂速度角度對比了tanh與ReLu激活函數(shù),如圖(實線表示ReLu,虛線表示tanh)。從圖可看到,以tanh為激活函數(shù),需要經(jīng)過更多個epoch才能達到0.25的錯誤率。以ReLu為激活函數(shù),模型收斂速度更快。

整體架構(gòu):

input(224 * 224 *3)

first layer:


first,second layer

Conv(Filter : 11*11*96,stride=4): (224 - 11)/4 +1 = 55? , 55*55 * 96? ?(拆成 55*55 * 48,,55*55*48便于兩塊CPU并行工作)

maxpooling: (55 - 3) /2 +1 = 27

second layer:

Conv (Filter:3*3*256,stride = 1,zero padding,padding = 1):(27+2 - 3)/1 +1 = 27, 27*27*256? (拆成 27*27 * 128,,27*27*128)

maxpooling: (27 - 3) /2 +1 = 13

thrid layer:


third,fourth layer

Conv (Filter:3*3*384,stride = 1,zero padding,padding = 1):(13+2 - 3)/1 +1 = 13, 13*13*384? (拆成 13*13* 192,,13*13*192)

fourth layer:

Conv (Filter:3*3*384,stride = 1,zero padding,padding = 1):(13+2 - 3)/1 +1 = 13, 13*13*384 (拆成 13*13 * 192,,13*13*192)

Fifth layer:


fifth layer

Conv (Filter:3*3*256,stride = 1,zero padding,padding = 1):(13+2 - 3)/1 +1 = 13, 13*13*256? (拆成 13*13 * 128,,13*13*128)

maxpooling: (13 - 3) /2 +1 = 6


全連接層

全連接層可看成上一層特征與同等大小的卷積核卷積得到。

第六層:

輸入為: 6*6*128

濾波器:6*6 * 4096(4096個濾波器,每個濾波器有128個卷積核,每個卷積核大小 6*6) 得到 1*1*4096

下一層:1*1* 4096

最后一層:1*1*1000(1000個濾波器,每個濾波器有4096個卷積核,每個卷積核大小 1*1)




訓(xùn)練及優(yōu)化:

減少過擬合風(fēng)險:

數(shù)據(jù)增強(data argumentation):

對現(xiàn)有的數(shù)據(jù)進行一定的變換,用于訓(xùn)練。變換需是有意義的變換

1.對一256*256的圖像,隨機采樣得到224*224的圖片,并變換得到其水平反射圖像,訓(xùn)練的樣本增加2048倍((256-224)**2 * 2)

2.原本圖像加上主成分特征向量與特征值和一個隨機變量的乘積。

PCA數(shù)據(jù)變換
注釋

dropout:以0.5的概率將一些的神經(jīng)元輸出設(shè)為0。

訓(xùn)練:

訓(xùn)練策略:用隨機梯度下降的動量形式訓(xùn)練模型。

參數(shù)更新

參數(shù)初始化:

以均值為0,標(biāo)準(zhǔn)差為0.01的高斯分布初始化參數(shù)w。

學(xué)習(xí)率的改變:

初始化為0.01,當(dāng)驗證集錯誤率停止上升時,學(xué)習(xí)速率除以10,學(xué)習(xí)速率減小。


問題:為什么歸一化層只在前兩層?激活層:從線性到非線性的映射。濾波器3*3?maxpooling,3,4,5層的作用。從卷積層到最后輸出采用全連接層的作用。

歸一化的作用?

overlapping Pooling?

ReLu負(fù)半軸為0,未能激活?

代碼:https://github.com/kratzert/finetune_alexnet_with_tensorflow

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容