【經典算法必讀】圖片分類系列之(二): AlexNet

歡迎關注個人我的微信公衆號:小紙屑,致力於分享優秀AI論文算法

若是不喜歡看文章的,能夠觀看視頻講解:官方視頻講解 免費視頻講解微信

AlexNet是劃時代的,能夠說掀起了機器學習的一場革命,標誌着神經網絡的鳳凰涅槃、浴火重生,標誌着深度學習大一統時代的來臨,標誌着通用人工智能又一次觸手可及,也標誌着一個超大級的人工智能泡沫的起點。網絡

今天,就讓咱們以崇敬的心態,重溫劃時代之做AlexNet,具體論文是《ImageNet Classification with Deep Convolutional Neural Networks》。app

模型結構

AlexNet的模型結構以下圖。框架

是否是不太直觀?改爲以下圖會容易懂一些。dom

能夠看出,AlexNet模型主要有如下幾個主要特色:機器學習

1)更深(8層,LeNet5層), 參數更多(比LeNet多1000倍)

AlexNet網絡更深,共有8層(5層卷積層+3層全鏈接層),提出卷積神經網絡的LeNet總共5層(2層卷積層+3層全鏈接層)。ide

AlexNet另外一個革命性的特色是,參數特別多,多達6000萬左右的參數,是LeNet的1000多倍。函數

2)Conv(特徵層)+ FC(輸出層)的組合配置

通過多層的Conv層提取特徵後,利用FC層整合特徵再輸出,是早期卷積神經網絡的經典配置。LeNet開創了這種配置,AlexNet保持了這種配置。post

3)FC層佔據絕對多數的模型參數

AlexNet 96%的參數都集中在3層全鏈接層中,卷積層只佔據4%。(因全鏈接層參數太多,如今通常儘可能避免全鏈接層,改用全卷積+GlobalAvgPooling)

4)卷積層與Pooling層交替

從而每隔一個stage,feature map的分辨率就減半。這種pattern是LeNet提出的,AlexNet及如今全部的網絡模型都沿用這個pattern。

5)當分辨率(HW)減小時,要增長通道數,保證有效特徵數量。

這種pattern也是LeNet提出的,AlexNet及如今全部的網絡模型都沿用這個pattern。

6)多卷積核尺度

卷積核尺寸多樣,大體層數越深,卷積核尺寸越小,11x11,5x5,3x3。(如今通常使用多層小卷積核代替大卷積核,這樣參數變少深度變深,效果更好)

Training tricks

AlexNet的模型參數很是巨大,必須使用一些訓練技巧才能收斂,下圖給出了,AlexNet在訓練過程當中使用到的主要Tricks。

從輸入到輸出,依次使用的技巧是:

1)多GPU訓練和分組卷積

因爲AlexNet的參數多,數據規模大,爲了有效的訓練,做者開創了使用GPU訓練的先河。這個是革命性的。

2012年尚未成熟的深度學習框架,做者爲了訓練更大的模型,採用了分組卷積(group=2),至關於直接把模型等分爲兩個獨立模型,在兩個GPU上單獨訓練,在第三個卷積層和最後的三個全鏈接層作特徵交流。

2)data augmentation

i) 使用了random crop和horizontal reflection

因爲ImageNet中圖片分辨率不固定,做者先將每張圖片的最短邊resize到256,並保持圖片長寬比例,再裁取圖片正中部分的256x256,再從這256x256中隨機裁取224x224的patch,這也是爲何模型輸入是224x224分辨率的來源,總共有32x32種patch。再加上horizontal reflection,總共會有32x32x2=2048種patch。

ii) 圖片像素值的PCA

一張圖片有3個通道,RGB。3個通道間的3x3協方差矩陣,求出其特徵值λi和特徵向量Pi,λi再乘以一個服從高斯分佈N(0;0.1)的隨機數αi的到λi * αi(i=1,2,3)。再利用下式,就能夠求出RGB每一個通道不隨圖片灰度值變化的重要特性object identity。

每一個通道加上上述相應的特性值。

3)Local Response Normalization

每個卷積層的輸出形狀爲[B, H, W, C],以第一個卷積層爲例,batch_size取32,則輸出爲[32, 55, 55, 96],取定b, h, w, c,假如b=5, h=10, w=10, c=30,Local Response Normalization的意思是將b,h,w相同,c附近n個結果作歸一化,即[5, 10, 10, 30-n/2~30+n/2]的元素歸一化做爲[5, 10, 10, 30]的結果。具體的計算公式以下:

下圖的示意比較直觀:

4)ReLU激活函數

激活函數ReLU的發明是偉大的,這是神經網絡可以再次崛起的重要因素之一。ReLU有效解決了數學上看似完美的非線性激活函數sigmoid和tanh的易飽和的問題,大大加快了收斂速度,大概提升6倍。以下圖,相同的網絡,只是激活函數不一樣(實線爲ReLU,虛線爲tanh),在CIFAR10上,ReLU的收斂速度顯著加快6-7倍。

5)Overlapping Pooling

當下採樣的kernel size大於stride,下采樣之間就是有重疊的。AlexNet的全部Maxpooling kernel size=3x3,stride=2,均爲overlapping pooling。

6)dropout

dropout在BatchNormalization以前是經常使用且很是有效的正則化技巧,但BatchNormalization出世以後,基本就銷聲匿跡了。AlexNet第一第二個全鏈接層使用了dropout rate=0.5的dropout。

7)weight decay

使用了0.0005的weight decay。

上述大部分trick均可以看作是爲了防止過擬合,包括:

1)data augmentation

2)Local Response Normalization

3)dropout

4)weight decay

結果

下圖是上文中的標準模型在2010年ImageNet測試集上的Top-1和Top-5準確度 ,提高至關明顯,說明了深度學習性能的優越性。

下圖是單模型、多模型集成,有無預訓練等的結果對比,能夠看出一下幾點: 1)效果提高超10個點,質的提高,說明了深度學習性能的優越性 2)預訓練是有效的 3)多模型繼承是有效的

下圖第一列是test set中的5張照片,右邊是訓練集中,模型最後一個隱藏層FC4096,與第一列中的照片歐式距離最近的6張。能夠看出,訓練集中的照片與測試集的照片姿態變化挺大的,說明模型能學習到物體有效特徵。

下圖是第一層卷積神經網絡的96個11x11x3卷積核的可視化,上面48個是在GPU1上學習的,下面48個是在GPU2上學習的,GPU1上學習的都是與顏色無關的特徵,GOU2上學習的大部分都是與顏色相關的特徵。

革命性的啓示

1)證實了大型神經網絡,配合各類技巧,在大規模數據上的收斂性

2)證實了大型神經網絡,在大規模數據上,相較於傳統機器學習算法的巨大性能優點

3)證實了GPU訓練的高效性

結論

AlexNet是偉大的,表明着質的飛躍,表明着新時代的來臨。

往期文章回顧:

  1. 【經典算法必讀】圖片分類系列之(一): 你真的瞭解圖片分類(Image Classification)嗎?

  2. AlexNet論文連接

相關文章
相關標籤/搜索