CV論文筆記1——Alexnet

記錄一下對Alexnet一些關鍵技術的理解。算法

問題1:網絡設計上Alexnet有什麼新的貢獻?網絡

  1)ReLu激活函數:反向傳播時,通過ReLu的梯度要麼是1要麼是0,不會出現sigmoid函數在兩端梯度變化很小的狀況。直觀的效果使網絡更容易訓練,訓練速度更快。架構

  2)多GPU的訓練架構:在兩塊gpu上各分配一半神經元節點,但只在第3層卷積和全鏈接層進行通訊。多gpu的設計首要是解決算力不足的問題,但意外帶來了精度提高。很好的啓發了mobilenet等網絡,按通道分組計算的設計思路函數

  3)LRN局部歸一化:該算法引入相鄰單元的值,修正當前位置的值。在sigmoid作激活函數的網絡中,一般須要對輸入作歸一化,來減緩其飽和的風險。使用ReLu消除了飽和問題,但對輸入作歸一化依然有增長模型泛化性能的好處。該方法已被BN取代,對輸入數據歸一化,能有效控制輸入數據的分佈,使網絡更容易收斂,同時有減少過擬的做用。性能

  4)重疊池化:kernel的移動步長小於kernel大小。此時相鄰兩個卷積使用的像素會有重疊,這部分冗餘的計算信息對性能的提升是否有必要?(僅有輕微的實踐支持)。目前大部分網絡步長取1,加上必定的padding,這樣在卷積操做後特徵圖大小不會變化,更容易調控網絡。學習

 

問題2:Alexnet採用哪些技術來防止過擬合?測試

  1)數據加強:spa

  擴展數據集。從256x256中,隨機提取224x224的塊,以及其水平鏡像(翻轉),所以訓練集擴展了2048倍,樣本之間高度相關。模型推理時提取四角和中間的patches以及它們的水平鏡像共10張,再取網絡softmax輸出的平均值。(該方式十分耗費計算量,目前不提倡)設計

  RGB像素擾動。對整個訓練圖片集的RGB像素值,作PCA分解。從3x3的RGB矩陣中分解出獨立的基(特徵向量+特徵值),基於該基構造像素值的隨機擾動,添加到原圖的RGB值中。該策略用於捕捉圖片自己的屬性,必定程度排除光照強度和顏色的影響。圖片

  2)Dropout:

  將隱含層神經元按必定機率(有效比例)設置爲0,"失活」的神經元不參與前向和反向傳播。每次提供一個輸入時,神經網絡採樣不一樣的架構進行預測(因爲共享權重,不會增長計算)。該技術減小了神經元之間複雜的「聯合適應性」(co-adaptations),所以一個神經元不會依賴特定的其餘神經元,經過引入更多樣的鏈接方式,會強制網絡學習更魯棒的特徵。

  該策略的直觀效果,至關於測試時合併多個不一樣模型的結果用於減少偏差。另外預測時使用全部神經元,可是將其輸出乘以有效比例,保證和訓練時有一致的容量。

 

問題3:Alexnet總體結構如何設計?

使用5層卷積和3層全鏈接網絡,解決大分辨率圖片識別問題。模型輸入採用224x224的圖片。

  1)Conv_1:kernel大小11x11, 步長4,輸出96維。爲保證輸出圖大小爲55,padding=2,至關於輸入圖228。具體實施時使用兩路gpu每路48個kernel。

  2)Max_p1:kernel=3,步長爲2,padding='valid',輸出圖大小爲27。

  3)Conv_2:kernel大小5x5,步長1,輸出256維。兩路gpu每路128個kernel。

  4)Max_p2:和p1同樣,輸出爲13。

  5)Conv_3:kernel=3, 步長=1,padding='same',維持輸出特徵圖13不變,共輸出382維。兩路gpu每路192維,使用全部256維輸入。

  6)Conv_4:重複Conv_3,不一樣的地方是使用前一層一半的輸出192維做爲輸入。

  7)Conv_5:重複Conv_4,只是輸出維度變成256維

  8)Max_p3:和p1同樣, 輸出維爲6

  9)FC1:直接將特徵圖拉成一維向量,共輸出4096維,兩路gpu每路輸出2048維。FC1是隱含層,以後增長一個dropout層,比例爲0.5。

  10)FC2:同FC1,輸出4096維。FC2也是隱含層,以後增長一個dropout層,比例爲0.5

  11)FC3:同FC1, 輸出1000維。

相關文章
相關標籤/搜索