本文主要目的是为自己梳理知识,以便日后复习。
- 网络结构
- 堆积 3×3 的作用
- 实验的方法
VGG
Very Deep Convolutional Networks for Large-Scale Image Recognition
https://arxiv.org/abs/1409.1556
VGG-16 的16表示网络中共有16层含有参数(pool没有)。 孙剑说过,神经网络有众多超参,但深度是影响性能最大的一个。VGG 这篇论文主要就是研究深度在卷积网络结构设计中的影响,给我们自己设计网络有重要的启发。(例如我们要获取 32×32 矩阵所有位置的信息,在加 padding 的情况下用 3×3 的核只需15层就卷完了)
文章着重探索深度,因此对比实验时固定其他超参,只添加卷积层增加网络深度,且除了 C 中有1×1的核外,每一层都使用3×3的核。网络结构如下
![vgg](https://i-blog.csdnimg.cn/blog_migrate/d59486e3a459f4640d4fba7949557431.png)
- 全网络使用了3×3的卷积核和2×2的最大池化核
- 滤波器个数从 64,64->128,128>256,256->512,512
对比实验的网络结构如下
![vgg](https://i-blog.csdnimg.cn/blog_migrate/01c14488fcf6933fc3bbd6468476220d.png)
这里有三个重点,也是我们设计网络结构非常实用的点
-
为什么用 3×3 的核? 因为是包含上下左右位置信息的最小单元
-
为什么用堆积的 3×3 的核?因为两层 3×3 的感受野等于单层 5×5(不加 padding 的情况下),但学习的参数更少, 2 ( 3 2 C 2 ) < 5 2 C 2 2(3^2C^2)<5^2C^2 2(32C2)<52C2,并且效果更好(后面做了对比实验)。为什么两层 3×3 的感受野等于单层 5×5?自己画个图想想,或者看看信号处理中的卷积
-
为什么用 1×1 的核?因为等同给网络添加了一个非线性函数,从而减少或保持输入层中的通道数不变,Inception 中把这一点发挥得是淋淋尽致!
EVALUATION
SINGLE SCALE
![evaluation](https://i-blog.csdnimg.cn/blog_migrate/56fc4c8eb61be8ad90341f9e1f35c3b7.png)
- LRN 没提高网络性能(A,A-LRN 组)
- 深度增加分类误差减小(B比A好; C和D比B好; D比E好)
- 1×1 的核有作用,实质是增加了一层非线性变换,讲道理模型复杂了,效果提升也是正常的(C比B好)
- 3×3 感受野大一点的核效果更好,但参数也增多了(D比C好)
- 尺度扰动能使误差减小,数据增强的手段之一,可以 capturing multi-scale image statistics
论文中还提及
- 当深度达到19层时,错误率达到饱和,但是更大的数据集使用更深的模型会更好。
- 作者用网络 B 与一个 5x5 的浅卷积网络(B中堆积的 3×3 换成 5×5)进行了比较,浅层网络的top-1错误率比B(在中心裁剪图像上)高了7%,证明了 a deep net with small filters outperforms a shallow net with larger filters
以上
参考
Simonyan. Very Deep Convolutional Networks for Large-Scale Image Recognition. 2014
Ng. Deep Learning Specialization. CNN-Classic networks