VGGNet 《VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION》学习笔记
1.INTRODUCTION
在文章的开头部分,作者明确指出VGG模型的一个显著特点是其深度。这背后的原因是什么呢?其核心原因在于卷积核尺寸相对较小。
2.卷积结构
输入是224*224的RGB图像,预处理是对于每个RGB值减掉了训练集的均值。
卷积核尺寸设定为3\times 3(即三乘三),这种设置能够反映上下、左右以及中心位置等关键信息的基本维度关系。同时,在该网络架构中采用了1\times 1尺寸的卷积层作为辅助结构
step size is set to 1. padding is determined based on the requirement that output dimensions match input dimensions. for a 3×3 convolution kernel, padding is typically set to 1.
max-pooling是2*2大小,stride = 2.
全连接层由三层构成,在最后一层输出向量具有1000个维度,并通过应用softmax函数进行归一化处理。所有涉及的神经网络架构(如包含多个VGG系列模型)均采用了相同的全连接层设计。
所有非线性函数都采用了ReLU作为激活函数;仅有一个网络采用了LRN激活函数;作者指出这种结构并没有实质作用,并且造成了较大的内存占用与计算负担;幽默地说,“啥都没用”。上一篇博客中提到过AlexNet被吹捧为现代卷积神经网络(CNN)的鼻祖级人物;而现在这相当于要在性能上与AlexNet展开竞争。
整个结构的表格描述如下

从A到E每一列都是一种网络,主要是用VGG-16(D)和VGG-19(E)
整个网络的主要特点在于其采用小尺寸的卷积核和stride设计。通过多层连续的convolution操作替代单一层convolution的方式实现,在C、D、E三个模块中第五个convolution模块由三层连续应用(分别为3×3、3×3、4×4)组成。
作者认为更多的卷积层可以增大感受野(receptive fields)
比如用一个3*3的卷积核对
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
执行卷积运算后生成的第一个左上方3×3的小块是否会占据整个5×5区域?接着说更多的卷积层确实能够扩大感受野范围。
此外,这样增多了非线性操作(ReLU),然后减少了参数的数量。
虽然1 \times 1卷积核仅能实现一次线性变换, 但在其后紧跟一个ReLU激活层能够有效提升模型的非线性特性, 因此在实际应用中建议尝试这种方法可能会带来不错的效果
3 CLASSIFICATION FRAMEWORK
大致上可以理解为损失函数基于softmax进行计算,并且在网络上有一个详细的解释。

采用了基于批量的小批量梯度下降法( mini-batch gradient descent),其中设置 batch size 为 256,并结合动量因子设为 0.9;同时对 L2 正则项系数设定值进行了调整至 5×1e-⁴,并采用 Dropout 比率设为 0.5;初始学习率设定值取作 0.01;整个训练过程与 AlexNet 结构一致,在测试误差下降幅度触发阈值时将学习率除以十;共计降低了三次 learning rate;经过了 74 个 epoch 的训练过程。尽管模型参数数量有所增加;但整体收敛速度更快:这是因为更深层的网络架构和更小尺寸的卷积核带来了隐含的正则化效果;而对于某些中间层进行了预训练处理。
网络参数的初始化至关重要,在不加考虑的情况下容易导致过拟合现象;作者的整体思路大致如下:首先通过建立基础模型实现浅层特征提取,并在此基础上逐步引入更深一层结构进行优化;然而,在完成这些步骤后发现似乎可以直接进行参数化设计而无需其他复杂的操作;这未免太简单了啊!
以获取尺寸为224×224的图像目标,作者实施了随机裁剪与缩放操作,并进行了数据增强处理。鉴于细节过于繁多,我不打算逐条翻译。
后面还提到对于多个网络做结果的融合会效果更好。
总结:
相较于AlexNet而言,VGG主要采用较小尺寸的卷积核和stride来以更深层的方式构建网络结构。这种设计的优点在于:
1.更多的卷积核叠加可以增加感受野。
2.加入了更多的非线性单元
3. 隐含了正则的作用
