GoogLeNet 网络
GoogLeNet 是由谷歌为了参加 ILSVRC 2014 大赛而开发的,并在挑战赛上获得了冠军,将 Top5 的错误率降低到 6.67%,总体上是一个 22 层的深度网络 。
一般来说,提升网络性能最直接的办法就是增加网络深度和宽度,但这也意味着更多的参数,这容易带来过拟合,也大大增加了计算量。GoogLeNet 论文认为解决上述两个缺点的根本方法是将全连接层甚至一般的卷积都转化为稀疏连接,对于大规模稀疏的神经网络,可以通过分析激活值的统计特性和对高度相关的输出进行聚类来逐层构建出一个最优网络。所以,为了既能保持网络结构的稀疏性,又能利用密集矩阵的高计算性能,论文提出了inception的结构!
GoogLeNet 的进化顺序为:
- Inception V1
->
Inception V2->
Inception V3->
Inception V4
Inception V1
Inception 结构的主要思路是用密集成分来近似最优的局部稀疏结构,坐着首先提出如下的的基本结构:
对上图的解释为:
- 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合
- 卷积核大小采用 1,3,5,主要是为了方便对齐。设定卷积步长 stride=1 后,这要分别设定 padding=0, 1, 2,就可以在卷积后得到相同维度的特征,然后将这些特征拼接在一起
- 网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3 x 3 和 5 x 5 卷积的比例也要增加。
一、1 x 1 卷积
使用 1 x 1 卷积实现降维
- 1 x 1 卷积实现的是 “同一个像素点上” 的各个通道的值的线性组合,如图所示
- f ( a 11 x 1 + a 12 x 2 + . . . + a 1 c x c ) = y 1 f(a_{11}x_1+a_{12}x_2+...+a_{1c}x_c)=y_1 f(a11x1+a12x2+...+a1cxc)=y1
- f ( a 21 x 1 + a 22 x 2 + . . . + a 2 c x c ) = y 2 f(a_{21}x_1+a_{22}x_2+...+a_{2c}x_c)=y_2 f(a21x1+a22x2+...+a2cxc)=y2
- . . . . . . ...... ......
- f ( a k 1 x 1 + a k 2 x 2 + . . . + a k c x c ) = y k f(a_{k1}x_1+a_{k2}x_2+...+a_{kc}x_c)=y_k f(ak1x1+ak2x2+...+akcxc)=yk
1 x 1 卷积有两个方面的作用:
- 实现了跨通道的交互和信息整合
- 进行卷积核通道数的降维和升维
二、使用 1x1 卷积改进
使用 5 x 5 卷积核仍然会有极大的计算量,因此引入了 1 x 1 来进行降维:举例来说,假设上一层输出为 100 x 100 x 128,经过具有 256 个 5 x 5 卷积核的卷积层(stride=1, pad=2)之后,输出数据为 100 x 100 x 256,这时卷积层的参数为 128 x 5 x 5 x 256。
此时,如果上一层输出先经过具有 32 个输出的 1 x 1 卷积层,再经过具有 256 个输出的 5 x 5 卷积层,那么最终输出数据仍是 100 x 100 x 256,但卷积层参数数量减少为 128 x 1 x 1 x 32 + 32 x 5 x 5 x 256,大约减少了 4 倍。
改进后的 Inception Module 如下图
三、取消全连接层和全局平均池化
全连接层本质上是全尺寸的卷积层,占用了大量的参数,因此改用全局平均池化代替,全局平均池化没有 size,它针对的是整张 feature map
- 输入:7 x 7 x 1024
- 输出:1 x 1 x 1024
取消全连接层也是后期网络结构发展的一大趋势。
四、两个辅助分类器
如图所示,Inception V1 网络其实是非常深的,梯度回传到最初几层,存在严重消失问题,在训练过程中使用两个辅助分类器能有效加速收敛,测试阶段不使用。
Inception V2
一、把大的卷积核用若干个小的串联起来
大尺寸的卷积核可以带来更大的感受野,但也意味着更多的参数,因此作者提出用两个连续的的 3 x 3 卷积层组成的小网络代替单个 5 x 5 卷积层。
网络结构对比
二、核心组件:Batch Normalization (批归一化)
- 白化:使每一层的输出都规范化到 N ( 0 , 1 ) N(0, 1) N(0,1)
- 允许较高的学习率
- 取代部分 Dropout
最新的论文认为批归一化起作用的原理是使 “解空间” 更加平滑。
在 batch 范围内,对每个特征通道分别进行归一化,所有图片,所有像素点
Inception V3
核心组件
- 非对称卷积
- N x N 分解成 1 x N
->
N x 1 - 降低参数数量和计算量
Inception V3 有三种不同结构,如下图,这些结构只在网络的后部出现,前部还是普通的卷积层。
Inception V4
这个版本主要研究 Inception Module 结合残差连接,结合 ResNet 可以极大加速训练,并提升性能,Inception V4 是在构建 Inception ResNet 的同时设计的一个更深更优化的模型, 首先查看整体的结构图:
其中 Stem 模块为: