1. 程式人生 > >Alexnet學習筆記

Alexnet學習筆記

一、摘要

AlexNet是2012年ImageNet專案的大規模視覺識別挑戰(ILSVRC)中的勝出者。AlexNet解決了影象分類的問題,輸入是1000個不同型別影象(如貓、狗等)中的一個影象,輸出是1000個數字的向量。輸出向量的第i個元素即為輸入影象屬於第i類影象的概率。因此,輸出向量的所有元素之和為1。

二、AlexNet的網路結構

AlexNet由5個卷積層和3個全連線層組成,如下圖所示。 在這裡插入圖片描述 多個卷積核心(a.k.a過濾器)可以提取影象中有趣的特徵。通常,同一卷積層中核心的大小是相同的。例如,AlexNet的第一個Conv層包含96個大小為11x11x3的核心。值得注意的是,核心的寬度和高度通常是相同的,深度與通道的數量是相同的。 前兩個卷積層後面是重疊的最大池層,第三個、第四個和第五個卷積層都是直接相連的。第5個卷積層後面是一個重疊的最大池層,它的輸出會進入兩個全連線層。第二個全連線層可以給softmax分類器提供1000類標籤。 在所有的卷積層和全連線層之後,都應用了ReLU非線性函式。首先第一和第二個卷積層都應用ReLU非線性函式,然後進行區域性標準化,最後執行pooling操作方法。但後來研究人員發現標準化並不是很有用,所以這裡不詳細論述。

三、AlexNet對於資料的處理方法

  1. 初步處理 AlexNet的輸入是一個大小為256×256的RGB影象。因此所有的訓練集影象和測試影象的大小都要為256×256。

    如果輸入影象的大小不是256×256,那麼用它來訓練神經網路之前需要將其轉換成256×256的大小。為了實現這一轉換,將影象尺寸縮小成256,最終剪裁獲得一個大小為256×256的影象。

    如果輸入影象為灰度影象,可以通過複製單個通道將其轉換成一個3通道的RGB影象。由256×256的影象可產生隨機大小的影象,其中大小為227×227的影象來填充AlexNet的第一層。

    所有圖片的每個畫素值都需減去均值,均值採用訓練資料按照RGB三分量分別求得。

  2. 訓練資料處理 這樣使原始資料增加了(256-224)*(256-224)*2 = 2048倍 對RGB空間做PCA,然後對主成分做(0,0.1)的高斯擾動,結果使錯誤率下降1%。

  3. 測試資料處理 抽取影象4個角和中心的224*224大小的影象以及其映象翻轉共10張影象利用softmax進行預測,對所有預測取平均作為最終的分類結果

四、AlexNet的設計

  • 採用ReLU啟用函式 AlexNet的另一個重要特性就是使用了ReLU(整流線性單元)的非線性。Tanh或sigmoid啟用函式曾是訓練神經網路模型的常用方法。與使用像tanh或sigmoid這樣的飽和啟用函式相比,使用ReLU非線性可以使深度CNNs訓練更快。本文的下圖顯示,與使用tanh(點線)的等效網路相比,使用ReLUs(solid曲線)的AlexNet能以6倍快的速度到達25%的訓練錯誤率。這是在CIFAR-10資料集中完成的測試。

    在這裡插入圖片描述 為什麼用ReLUs訓練得更快?ReLU函式為f(x)= max(0,x)。
    在這裡插入圖片描述

    上面是tanh和ReLU兩個函式的圖。tanh函式在z值很高或很低時飽和,且函式的斜率接近於0,有助於減緩梯度下降。另一方面,當z為較大的正值時ReLU函式的斜率不接近於零,有助於最優化收斂得更快。z為負值時斜率為零,但是神經網路中的大多數神經元最終都具有正值。sigmoid函式也因為同樣的原因,稍遜於ReLU。

  • 採用LRN層 因為後面的網路用的不多,所以不再贅述

  • 重疊池化

    池化操作(Pooling)用於卷積操作之後,其作用在於特徵融合和降維,其實也是一種類似卷積的操作,只是池化層的所有引數都是超引數,都是不用學習得到的。

    在CNN中使用重疊的最大池化。此前CNN中普遍使用平均池化,AlexNet全部使用最大池化,避免平均池化的模糊化效果。並且AlexNet中提出讓步長比池化核的尺寸小,這樣池化層的輸出之間會有重疊和覆蓋,提升了特徵的豐富性。Alexnet設定s=2,z=3,這個方案分別降低了top-1 0.4%,top5 0.3%的錯誤率。且論文提到重疊池化的模型更難過擬合。

  • 採用Dropout

    訓練時使用Dropout隨機忽略一部分神經元,以避免模型過擬合。Dropout雖有單獨的論文論述,但是AlexNet將其實用化,通過實踐證實了它的效果。在AlexNet中主要是最後幾個全連線層使用了Dropout。樸素思想:以0.5的概率讓隱藏層的輸出為0,失活的神經元不再進行前向傳播且不參與反向傳播

    alexnet:前兩個全連線層使用dropout,會減少過擬合,但會使訓練迭代次數翻一倍

  • 2個GPU平行計算

五、總結