虽然AlexNet证明深层神经网络卓有成效,但它没有提供一个通用的模板来指导后续的研究人员设计新的网络。于是出现了使用块的思想,通过使用循环和子程序,可以很容易地在任何现代深度学习框架的代码中实现这些重复的架构。
VGGNet网络结构简洁,迁移到其他图片数据上的泛化性能非常好。VGGNet现在依然经常被用来提取图像特征,该网络训练后的模型参数在其官网上开源了,可以用来在图像分类任务上进行在训练,即:提供了非常好的初始化权重,使用较为广泛。
一个VGG块与经典卷积神经网络的基本组成部分类似,由一系列卷积层组成,后面再加上用于空间下采样的最大池化层。在最初的VGG论文中,作者使用了带有3×3卷积核、填充为1(保持高度和宽度)的卷积层,和带有2×2池化窗口、步幅为2(每个块后的分辨率减半)的最大池化层。
- 一个大卷积核分解成连续多个小卷积核
- 核分解: 7x7核 → 3个3x3核(由ReLU连接)
- 参数数量: 49C² → 27C²
- 减少参数,降低计算,增加深度
- 继承AlexNet结构特点:简单,有效
为什么选择带有3×3卷积核、填充为1(保持高度和宽度)的卷积层,而不是5×5卷积核、填充为2呢?
同样的计算量下,更多的3X3计算比少量的5X5计算更好, 再进一步说,2个3X3卷积层的感受野等于5X5卷积层的感受野,且训练参数更少,网络更深且窄。(便宜且效果好)
与AlexNet、LeNet一样,VGG网络可以分为两部分:第一部分主要由卷积层和池化层组成,第二部分由全连接层组成。如下图中所示。
- VGG-11使用可复用的卷积块构造网络。不同的VGG模型可通过每个块中卷积层数量和输出通道数量的差异来定义。
- 块的使用使得网络定义的非常简洁。使用块可以有效地设计复杂的网络。
- 我们发现深层且窄的卷积(即3×3)比较浅层且宽的卷积更有效。
- 不同的超参数可以得到不同复杂度的变种。
- 三类网络对比:
LeNet:2卷积+池化/2全连接
AlexNet:更大更深的LeNet,ReLU+Dropout+数据增强
VGG:更大更深的AlexNet,重复的VGG块