網(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ù)。

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


個人感覺重疊池化做法,與HOG特征生成過程中的歸一化有點類似,歸一化過程 ,block之間是有重疊的。重疊池化,考慮周圍特征,把局部最顯著的特征留下。
激活層(激活函數(shù)的選擇):

文中從收斂速度角度對比了tanh與ReLu激活函數(shù),如圖(實線表示ReLu,虛線表示tanh)。從圖可看到,以tanh為激活函數(shù),需要經(jīng)過更多個epoch才能達到0.25的錯誤率。以ReLu為激活函數(shù),模型收斂速度更快。
整體架構(gòu):
input(224 * 224 *3)
first 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:

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:

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.原本圖像加上主成分特征向量與特征值和一個隨機變量的乘積。


dropout:以0.5的概率將一些的神經(jīng)元輸出設(shè)為0。
訓(xùn)練:
訓(xùn)練策略:用隨機梯度下降的動量形式訓(xùn)練模型。

參數(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