介紹
googlenet和vggnet這兩個模型是在AlexNet后人工神經網絡方面研究的又一里程碑,也是許多論文和博客中用來和提出的新方法進行對比的baseline。理解這兩個網絡并且明白它們的優劣對走在機器學習之路上的小伙伴們來說是非常重要的。這兩類模型結構有一個共同特點是Go deeper,但是在具體實現上卻有很大差異
VGG
vgg[1]繼承了lenet以及alexnet的一些框架,尤其是跟alexnet框架非常像,vgg也是5個group的卷積、2層fc圖像特征、一層fc分類特征,可以看做和alexnet一樣總共8個part,vgg論文中給出了A~E這五種配置,卷積層數從8到16遞增。由于VGG-Net的所有 convolutional layer 使用同樣大小的 convolutional filter,大小為 3 x 3,所以它的深度比較容易擴展,同時結構也比較簡單。其具體結構參數如表1所示:
GoogLeNet
與VGG不同的是,Goog[2]做了更大膽的網絡上的嘗試,為了獲得高質量的模型,它也從增加模型的深度(層數)或者是其寬度(層核或者神經元數)這兩方面考慮了,但是在這種思路下會出現兩個缺陷(1.參數太多,容易過擬合,若訓練數據集有限;2.網絡越大計算復雜度越大,難以應用;3.網絡越深,梯度越往后穿越容易消失,難以優化模型)。而GoogLeNet通過新的結構設計,在增加深度和寬度的同時避免了以上問題:
1.深度
GoogLeNet采用了22層網絡,為了避免上述提到的梯度消失問題,GoogLeNet巧妙的在不同深度處增加了兩個loss來保證梯度回傳消失的現象。結構如圖1所示:
2.寬度
Inception的網絡,將1x1,3x3,5x5的conv和3x3的pooling,stack在一起,一方面增加了網絡的width,另一方面增加了網絡對尺度的適應性,但是如果簡單的將這些應用到feature map上的話,concat起來的feature map厚度將會很大,所以為了避免這一現象提出的inception具有如下結構,在3x3前,5x5前,max pooling后分別加上了1x1的卷積核起到了降低feature map厚度的作用,這也使得雖然googlenet有22層但是參數個數要少于alexnet和vgg。inception的具體結構如圖2所示。
總結
綜上所述,vgg網絡更簡單粗暴,在Alexnet的基礎上不停地加卷基層,擴展神經網絡的深度,并且取得了較好的效果,也讓人們認識到加深網絡是提高模型質量的一個有效途徑。但它同時也面臨著參數太多,訓練較慢,梯度消失等問題。而GoogLeNet則通過增加在不同層算loss和提出inception結構兩種方式,不僅加深了網絡,同時也加寬了網絡,并且減少了參數個數。
Reference:
[1]Very deep convolutional networks for large-scale image recognization. https://arxiv.org/pdf/1409.1556v6.pdf
[2]Going deeper with convolutions.