AlexNet :ImageNet Classification with Deep Convolution Neural Networks

網絡架構:


網絡架構

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

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

各層策略:

Local Response Normalization:

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


Local Response Normalization

Maxpooling層:

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

當無重疊池化時,F=stride,即 I/stride - F/stride + 1 = I/stride。

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


non-overlapping



overlapping

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

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


tanh Vs ReLu

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

整體架構:

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)




訓練及優化:

減少過擬合風險:

數據增強(data argumentation):

對現有的數據進行一定的變換,用于訓練。變換需是有意義的變換

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

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

PCA數據變換
注釋

dropout:以0.5的概率將一些的神經元輸出設為0。

訓練:

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

參數更新

參數初始化:

以均值為0,標準差為0.01的高斯分布初始化參數w。

學習率的改變:

初始化為0.01,當驗證集錯誤率停止上升時,學習速率除以10,學習速率減小。


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

歸一化的作用?

overlapping Pooling?

ReLu負半軸為0,未能激活?

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容