VGG和GoogLeNet inception

介绍

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所示:

VGG和GoogLeNet inception_第1张图片
表1.vgg模型

GoogLeNet

与VGG不同的是,Goog[2]做了更大胆的网络上的尝试,为了获得高质量的模型,它也从增加模型的深度(层数)或者是其宽度(层核或者神经元数)这两方面考虑了,但是在这种思路下会出现两个缺陷(1.参数太多,容易过拟合,若训练数据集有限;2.网络越大计算复杂度越大,难以应用;3.网络越深,梯度越往后穿越容易消失,难以优化模型)。而GoogLeNet通过新的结构设计,在增加深度和宽度的同时避免了以上问题:

1.深度
GoogLeNet采用了22层网络,为了避免上述提到的梯度消失问题,GoogLeNet巧妙的在不同深度处增加了两个loss来保证梯度回传消失的现象。结构如图1所示:

VGG和GoogLeNet inception_第2张图片
图1.GoogLeNet网络模型

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和GoogLeNet inception_第3张图片
图2.Inception结构

总结

综上所述,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.

https://www.cs.unc.edu/~wliu/papers/GoogLeNet.pdf

你可能感兴趣的:(VGG和GoogLeNet inception)