深入瞭解AlexNet網絡

該文章系本人所寫

    在圖像分類領域不得不提的就是ImageNet大規模視覺挑戰賽(ILSVRC),它被稱爲深度學習在圖像分類任務研究方面進展的標杆。AlexNet網絡參加了ILSVRC2012年大賽,以高出第二名10%的性能優勢取得了冠軍。AlexNet網絡也是VGGNet、GoogLeNet、ResNet、DenseNet等經典網絡的基礎和開端。

    常見的卷積方式有三種,即Full卷積、SAME卷積和Vaild卷積。如果輸入的圖片像素爲,卷積核的尺寸爲。使用Valid卷積時,輸出信號的大小爲:

    使用另一種卷積方式SAME卷積,輸出信號的尺寸爲:

    Alex Krizhevsky等在imageNet classification with deep convolutional neural networks中提出了AlexNet網絡。Krizhevsky等使用兩個GITX 580 3GB GPU訓練得到基於ImageNet訓練集的卷積神經網絡的訓練,並且取得了很高的精度。他們還指出只需有性能更好的GPU和更大的數據集可以得到性能更好的網絡。

    在該文中提出的AlexNet網絡是一個8層網絡,含有5層卷積層(其中第一、第二、第五卷積層附加上了最大池化層)和3層全連接層(最後一層包含1000路softmax分類器)。AlexNet網絡分配在兩個GPU上,GPU只在固定層進行交換數據。使用交叉並行技術把卷積核平均分配到兩個GPU上,使兩塊GPU中網絡的結構相同。選取兩塊GPU視作一個整體進行分析,其結構圖見第三張圖,圖中沒有畫出局部響應歸一化和dropout等對數據尺寸變化沒有影響的操作。該網絡使用的卷積方式是Valid。尺寸的輸入與輸出關係公式見第一張圖。

    第二、第四和第五卷積層卷積核都只和同一GPU中上一層的卷積核映射連接。第三卷積層卷積核映射連接到第二層中所有卷積核。全連接層中的神經元和前一層中所有神經元相連。響應歸一化操作層會在第一個和第二個卷積層之後進行。最大匯合層是跟隨在響應歸一化層和第五的卷積層之後。Relu激活函數在每個卷積和全連接層的輸出。 

 

    第一個卷積層輸入尺寸爲227×227×3的圖像,使用96個尺寸爲11×11×3、步長4的卷積核。第二卷積層將第一卷積層的輸出作爲輸入,並用256個尺寸爲5×5×48的卷積核進行卷積。第三,第四和第五卷積層彼此連接而沒有任何池化層或歸一化層。第三卷積層連接到第二卷積層(池化,歸一化)的輸出,第三卷積層有384個尺寸爲3×3×256的卷積核。第四卷積層有384個大小爲3×3×192的卷積核,第五卷積層有256個大小爲3×3×192的卷積核。全連接的每層有4096個神經元。這是我見過的對AlexNet網絡最簡練的描述。

    還有一種採用SAME卷積的網絡結構。在網絡結構相同的情況下,輸入數據的尺寸會發生變化。第四張圖所示,局部響應歸一化和dropout等對數據尺寸變化沒有影響的操作沒有在圖中畫出。

    詳細分析如下,第五張圖是conv1階段的數據流圖。

 

    本文把第一個卷積層、第一個池化層和第一個局部響應歸一化操作都看作conv1階段。第一個卷積層輸入圖像通過resize得到固定大小爲224×224×3 的圖像。然後使用11×11×3的卷積核與輸入的圖像進行卷積運算,選擇的卷積方法是SAME卷積。每次卷積在特徵圖上都生成一個新的像素點,卷積核沿向右向下的方向對原始圖像中的像素點依次進行卷積,每次移動的步長是4個像素。當原始圖像的像素點不足時,使用zero padding補零。在每一行,卷積核的移動會在特徵圖上生成 56個新的像素點,行和列的56×56個像素點形成對原始圖像卷積之後的特徵圖。Conv1階段得到尺寸爲56×56×96的特徵圖。這些特徵圖經過relu單元的處理,其尺寸仍爲56×56×96。第一個池化層的處理是把第一個卷積層輸出的特徵圖進行池化運算。補零的方式與第一卷積層的方式相同,即SAME卷積。則池化後輸出圖像的寬或高爲 26個像素點。即池化後數據的尺寸爲26×26×96。最後是局部響應歸一化處理。數據的尺寸不會發生變化。把輸出的數據輸入conv2階段,重複卷積和池化過程,由於其他卷積層與conv1階段相似,不再贅述。

    雖然第五張圖中的AlexNet網絡中沒有畫上局部響應歸一化操作,但是AlexNet中每個池化層之後都有局部響應歸一化層。歸一化層的目的是避免隨着層級的加深而導致的信息出現逐層遞減的趨勢,起到加快神經網絡收斂速度的作用。但是,近些年來的研究表明,局部響應歸一化層對神經網絡的訓練過程起到的幫助很小,所以就漸漸不再被使用了。

    第六張圖是分析fc6階段的數據流圖。

    AlexNet的第六層是全連接層。輸入數據的尺寸是7×7×256,然後使用具有相同尺寸的卷積覈對數據進行卷積運算。每個7×7×256尺寸的卷積核與輸入數據進行卷積運算得到一個卷積結果。fc6層中共有4096個神經元,每個神經元輸出一個卷積結果,共輸出4096個卷積結果。卷積結果通過relu激活函數,然後通過隨機失活運算,每次保留50%的神經元。最後輸出fc6階段的數據,其尺寸爲4096。

    在fc6階段的運算過程中,採用的卷積核的尺寸與待處理的特徵圖的尺寸都爲7×7×256,即卷積核中的每個參數只與特徵圖中的一個像素值相乘。但在其它卷積層中,每個卷積核的係數對應多個像素值,這就是全連接層的由來。

    第六張圖中使用的隨機失活策略可以有效地防止過擬合,其原理是在每個訓練批次中,隨機使隱含層的某些神經元不參與工作,但這些神經元的權值依然得到了保留。隨機失活策略總結來說就是通過減少神經元之間的相互依賴關係來提高神經網絡的性能。

    而fc7階段與fc6階段相同。fc6層輸出的數據與fc7的4096個神經元進行全連接,然後經由relu激活函數,再經過隨機失活處理後輸出尺寸爲4096的數據。fc7階段與第八層Softmax層的10個神經元進行全連接,經過訓練後輸出10類目標的概率值。

    AlexNet網絡有兩點重要的意義,首先是AlexNet網絡使用的諸多項設置成爲卷積神經網絡常見的默認設置,仍被廣泛應用。此外,它也使研究者們意識到GPU高度優化的2維卷積功能足夠支持大型高分辨率數據集上大型CNN網絡的訓練。

    AlexNet網絡具有十分重大的里程碑式的意義。就梯度下降訓練時間而言,飽和非線性函數:sigmoid函數或tanh函數比非飽和非線性函數:ReLU函數用時長。AlexNet網絡的激活函數使用ReLU函數,加快了神經網絡的訓練速度。現在ReLU函數幾乎成爲深度網絡默認使用的激活函數。使用數據增強策略和隨機失活策略(dropout) 防止訓練數據過擬合,至今被很多網絡借鑑。AlexNet網絡採用連續卷積結合匯合層,最後是全連接層的方式,仍然是現今最先進網絡的基礎。

到我的公衆號查看原始文章吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章