LeNet
LeNet-5是一種經典的卷積神經網路結構,於1998年投入實際使用中。該網路最早應用於手寫體字元識別應用中。普遍認為,卷積神經網路的出現開始於LeCun等提出的LeNet網路,可以說LeCun等是CNN的締造者,而LeNet則是LeCun等創造的CNN經典之作網路結構圖由下圖所示:
LeNet網路總共有六層網路(不包含輸入輸出層),其中卷積層C3輸入:S2中6個特徵圖組合。
其中輸出特徵圖尺寸大小為:N=(W-F+2P)/S +1
其中:N為輸出尺寸大小,W為輸入尺寸大小,F為卷積核尺寸,P為填充值大小,S為步長。
Output層也是全連線層,共有10個節點,分別代表數字0到9。如果第i個節點的值為0,則表示網路識別的結果是數字i。採用的是徑向基函式(RBF)的網路連線方式。
ImageNet Classification with Deep Convolutional Neural Networks卷積神經網路經典回顧之AlexNet
AlexNet是由Alex Krizhevsky等人在2012年ImageNet影像分類競賽中提出的一種經典的卷積神經網路。當時,AlexNet在 ImageNet 大規模視覺識別競賽中取得了優異的成績,把深度學習模型在比賽中的正確率提升到一個前所未有的高度。 文章中的模型參加的競賽是ImageNet LSVRC-2010,該ImageNet資料集有1.2 million幅高解析度影像,總共有1000個類別。測試集分為top-1和top-5,並且分別拿到了37.5%和17%的錯誤率。這樣的結果在當時已經超過了之前的工藝水平。AlexNet網路結構在整體上類似於LeNet,都是先卷積然後在全連線。但在細節上有很大不同。AlexNet更為複雜因此,它的出現對深度學習發展具有里程碑式的意義。AlexNet是在LeNet的基礎上加深了網路的結構,學習更豐富更高維的影像特徵。
AlexNet輸入為RGB三通道的224 × 224 × 3大小的影像(也可填充為227 × 227 × 3 )。AlexNet 共包含5 個卷積層(包含3個池化)和 3 個全連線層。其中,每個卷積層都包含卷積核、ReLU啟用函式和區域性響應歸一化(LRN)模組。第1、2、5個卷積層後面都跟著一個最大池化層,後三個層為全連線層。最終輸出層為softmax,將網路輸出轉化為機率值,用於預測影像的類別。
1、ReLU Nonlinearity(Rectified Linear Unit)
如圖是使用ReLUs和tanh作為啟用函式的典型四層網路的在資料集CIFAR-10s實驗中,錯誤率收斂到0.25時的收斂曲線,可以很明顯的看到收斂速度的差距。虛線為tanh,實線是ReLUs。AlexNet 首次使用了修正線性單元(ReLU)這一非線性啟用函式。相比於傳統的 sigmoid 和 tanh 函式,ReLU 能夠在保持計算速度的同時,有效地解決了梯度消失問題,從而使得訓練更加高效。
2、Local Response Normalization(區域性響應歸一化)
區域性響應歸一化(LRN):LRN是在卷積層和池化層之間新增的一種歸一化操作。在卷積層中,每個卷積核都對應一個特徵圖(feature map),LRN就是對這些特徵圖進行歸一化。具體來說,對於每個特徵圖上的每個位置,計算該位置周圍的畫素的平方和,然後將當前位置的畫素值除以這個和。計算過程可以用以下公式表示:
LRN本質是抑制鄰近神經元的響應,從而增強了神經元的較大響應。這種技術在一定程度上能夠避免過擬合,並提高網路的泛化能力。
3、Overlapping Pooling(覆蓋的池化操作)
一般的池化層因為沒有重疊,所以pool_size 和 stride一般是相等的,例如8 × 8 的一個影像,如果池化層的尺寸是2×2,那麼經過池化後的操作得到的影像是 4 × 4大小,這種設定叫做不覆蓋的池化操作,如果 stride < pool_size, 那麼就會產生覆蓋的池化操作,這樣可以得到更準確的結果。在top-1,和top-5中使用覆蓋的池化操作分別將錯誤率降低了0.4%和0.3%。論文中說,在訓練模型過程中,覆蓋的池化層更不容易過擬合。
4、防止過擬合的方法
(1)Data Augmentation(資料擴張,就是對原始資料做一些變化) 資料擴充是防止過擬合的最簡單的方法,只需要對原始的資料進行合適的變換,就會得到更多有差異的資料集,防止過擬合。 AlexNet中對資料做了以下操作: 1、隨機裁剪,對256×256的圖片進行隨機裁剪到227×227,然後進行水平翻轉。測試的時候,對左上、右上、左下、右下、中間分別做了5次裁剪,然後翻轉,共10個裁剪,之後對結果求平均。 2、對RGB空間做PCA(主成分分析),然後對主成分做一個(0, 0.1)的高斯擾動,也就是對顏色、光照作變換,結果使錯誤率又下降了1%。
(2)Dropout
Dropout背後有很多有意思的東西,但是在這裡我們不需要了解太深,只需要知道Dropout是在全連線層中去掉了一些神經節點,達到防止過擬合的目的,我們可以看上面的圖在第六層和第七層都設定了Dropout。
VGG (VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION)
牛津大學的視覺幾何組(Visual Geometry Group)設計了 VGGNet(也稱為 VGG),一種經典的卷積神經網路 (CNN) 架構。主要工作是證明了增加網路的深度能夠在一定程度上影響網路最終的效能。VGG有兩種結構,分別是VGG16和VGG19,兩者只是網路深度不一樣。 VGG16相比AlexNet的一個改進是採用連續的幾個3x3的卷積核代替AlexNet中的較大卷積核(11x11,7x7,5x5)。對於給定的感受野(與輸出有關的輸入圖片的區域性大小),採用堆積的小卷積核是優於採用大的卷積核,因為多層非線性層可以增加網路深度來保證學習更復雜的模式,而且引數更少。
VGG 具有 16 層(VGG-16)和 19 層(VGG-19)的卷積神經網路。VGG-16 由 13 個卷積層和 3 個全連線層組成(層數是計算全連線層的卷積層個數)。 VGG16相比之前網路的改進是3個3*3卷積核來代替7x7卷積核,2個3*3卷積核來代替5*5卷積核,這樣做的主要目的是在保證具有相同感知野的條件下,減少引數,提升了網路的深度。
假設輸入輸出通道都為C(也就是C個卷積核):
3個3*3卷積核引數數量: 3(3*3*C*C)= 27C^2 感受野 3*3 再乘一個通道數C,再乘卷積層數C
1個7*7卷積核引數數量: 7*7*C*C = 49C^2
VGG優點 :
VGGNet的結構非常簡潔,整個網路都使用了同樣大小的卷積核尺寸(3x3)和最大池化尺寸(2x2)。 幾個小濾波器(3x3)卷積層的組合比一個大濾波器(5x5或7x7)卷積層好: 驗證了透過不斷加深網路結構可以提升效能。
VGG缺點:
VGG耗費更多計算資源,並且使用了更多的引數,導致更多的記憶體佔用(140M)。其中絕大多數的引數都是來自於第一個全連線層。 PS:有的文章稱:發現這些全連線層即使被去除,對於效能也沒有什麼影響,這樣就顯著降低了引數數量。