Ø 引入Inception结构
Ø 应用average pooling代替FC(但是在最后添加了一个线性层)
自2012年Alexnet的提出以来,直到Googlenet提出来之前,大家的主流的效果突破大致是网络更深,网络更宽。但是纯粹的增大网络有两个缺点——过拟合和计算量的增加。解决这两个问题的方法当然就是增加网络深度和宽度的同时减少参数。为了减少参数,那么自然全连接就需要变成稀疏连接,但是在实现上,全连接变成稀疏连接后实际计算量并不会有质的提升,因为大部分硬件是针对密集矩阵计算优化的,稀疏矩阵虽然数据量少,但是所耗的时间却是很难缺少。
2. Inception
Inception结构的主要思想是怎样用密集成分来近似最优的局部稀疏结构?
论文首先提出如图1所示的基本结构:

针对结构图做以下说明:
1) 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合;
2)之所以卷积核大小采用1、3和5,主要是为了方便对齐。设定卷积步长stride=1之后,只要分别设定pad=0、1、2,那么卷积之后便可以得到相同维度的特征,然后这些特征就可以直接拼接在一起了;
3) 论文表明pooling有效,所以Inception里面也嵌入;
4)网络越到后面,特征越抽象,而且每个特征所涉及的感受野也更大了,因此随着层数的增加,3x3和5x5卷积的比例也要增加;

3. Googlenet结构
针对论文提出的Inception结构设计出了Googlenet结构如图3所示。后续的训练和测试到时候实践时可以跑此网络框架时在细看和深入研究原论文。
1) 显然GoogLeNet采用了模块化的结构,方便增添和修改;
2) 网络最后采用了average pooling来代替全连接层,想法来自NIN,事实证明可以将TOP1 accuracy提高0.6%。但是,实际在最后还是加了一个全连接层,主要是为了方便以后大家finetune;
3) 虽然移除了全连接,但是网络中依然使用了Dropout ;
4) 为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。文章中说这两个辅助的分类器的loss应该加一个衰减系数,但看caffe中的model也没有加任何衰减。此外,实际测试的时候,这两个额外的softmax会被去掉。
1.包括Inception模块的所有卷积,都用了修正线性单元(ReLU);
2.网络的感受野大小是224x224,采用RGB彩色通道,且减去均值;
3.#3x3 reduce和#5x5 reduce分别表示3x3和5x5的卷积前缩减层中1x1滤波器的个数;pool proj表示嵌入的max-pooling之后的投影层中1x1滤波器的个数;缩减层和投影层都要用ReLU;
4.网络包含22个带参数的层(如果考虑pooling层就是27层),独立成块的层总共有约有100个;
5.网络中间的层次生成的特征会非常有区分性,给这些层增加一些辅助分类器。这些分类器以小卷积网络的形式放在Inception(4a)和Inception(4b)的输出上。在训练过程中,损失会根据折扣后的权重(折扣权重为0.3)叠加到总损失中。
