1、AlexNet 網絡的創新點
AlexNet是發表在《ImageNet Classification with Deep Convolutional Neural Networks》使用了LSVRC-2010競賽中的數據集並取它的子集,對1000個不同的類進行分類,並取得了歷史性的提高。
1.1、使用了ReLU作爲激活函數
相比sigmoid,tanh,ReLu有一下優點:
- 1 計算開銷少,論文中提到非飽和非線性變換(Relu)比飽和非線性變換(Sigmoid、tanh)梯度計算的要更快,(飽和是激活函數有界,而非飽和是指無界)
- 2 訓練收斂速度快,Relu會讓一部分神經元的輸出爲0,這樣就照成了網絡的稀疏性,減少了參數。
激活函數要使用非線性變換,而Relu是一個線性的分段函數,似乎有問題。可以指出,對於每一個樣本ReLU做的是不同線性變換,而對整個樣本集而言着可以理解爲非線性的。
簡單來說,不同訓練樣本中的同樣的特徵,在經過神經網絡學習時,流經的神經元是不一樣的(激活函數值爲0的神經元不會被激活)。這樣,最終的輸出實際上是輸入樣本的非線性變換。
1.2 LRN(局部相應歸一化)
- 可以方便後面數據的處理
- 可以加快程序的收斂
- 保證輸出數據中數值小的值不被吞食
公式:
bx,yi=ax,yi/(k+αj=max(0,i−n/2)∑min(N−1,i+n/2)(ax,yj)2)β
其中:
α、β、n、k是超參數、ax,yi表示第i個卷積核,上的(x,y)位置處的值,N是總通道數,b是歸一化結果
LRN是讓局部響應值大的點,去抑制在局部響應中小的點,來加強特徵對比。在隨後的研究中慢慢地被NP所替代。
1.3 Dropout
- 防止過擬合
隨機刪除網絡中某些節點(讓節點出現概率爲0)達到稀疏化網絡結構,提高網絡的泛化能力。
1.4使用了重疊池化層
採用Overlapping Pooling提升了預測精度,同時一定程度上可以緩解過擬合。
正常池化(步長默認爲卷積核大小,s=2,z=22)
重疊池化(s=2,z=33)
1.5 並行使用了多GPU訓練
- 減少網絡的訓練時間
- 讓訓練大型網絡成爲可以能
論文講網絡拆分成上下兩部分(1,2,3在不同gpu計算,3,4又整合到一個gpu計算,5,6,7,8又分開計算),網絡一共有8層,5層卷積,3層全連接。
2、AlexNet網絡結構
箭頭所指即爲這八層(即8種變換),圖中
224∗224∗3應該是
227∗227∗3 論文中說是227
爲了方便,這裏我直接看成在一個GPU上映射,前5層爲卷積層,後3層全連接:
- 第1 層卷積:
輸入(227,227,3)—>卷積計算(n=96,s=4,size=(11,11,3),p=0)—>(55,55,96)—>LRN(大小不變)—>max pooling(s=2,size=(3,3))—>(27,27,96)
- 第2 層卷積:
輸入(27,27,96)—>卷積計算(n=256,s=1,size=(5,5,96),p=1)—>(27,27,256)—>LRN(大小不變)—>max pooling(s=2,size=(3,3))—>(13,13,256)
- 第3層卷積:
輸入(13,13,256)—>卷積計算(n=384,s=1,size=(3,3,256),p=1)—>(13,13,384)—>無 LRN、max pooling
- 第4層卷積:
輸入(13,13,384)—>卷積計算(n=384,s=1,size=(3,3,256),p=1)—>(13,13,384)—>無 LRN、max pooling
- 第5 層卷積:
輸入(13,13,384)—>卷積計算(n=256,s=1,size=(3,3,384),p=1)—>(13,13,384)—>無 LRN—>max pooling(s=2,size=(3,3))—>(6,6,256)
- 第6、7、8層全連接神經元個數均爲4096
- 輸入(9216,1)特徵向量—>(4096,9216)—>(4096,4096)–>(1000,4096)–>(1000,1) softmax損失函數計算
- 最終輸出(1000,1)一張圖像的所有一千種類可能概率。
上面我對AlexNet網絡筆記,有錯誤地方希望大家指正- -!