Table of Contents

 

深度学习模型火的原因?

网络模型命名规则

最古老的的CNN

谷歌系列 :Inception v1到v4(2015年-2017年)

Inception v1模型

Inception v2模型(BN-Inception)

Smaller convolutions

Asymmetric Convoluitons

Auxiliary Classifiers

Grid Size Reduction

Label Smoothing


深度学习模型火的原因?

  1. 大量数据,Deep Learning领域应该感谢李飞飞团队搞出来如此大的标注数据集合ImageNet;
  2. GPU,这种高度并行的计算神器确实助了洪荒之力,没有神器在手,Alex估计不敢搞太复杂的模型;
  3. 算法的改进,包括网络变深、数据增强、ReLU、Dropout等。

网络模型命名规则

1.人名。LeNet以其作者名字LeCun命名,这种命名方式类似的还有AlexNet

2.机构名。GoogLeNet、VGG。

3.核心算法命名。ResNet。

最古老的的CNN

LeNet之前其实还有一个更古老的CNN模型。1985年,Rumelhart和Hinton等人提出了后向传播(Back Propagation,BP)算法[1](也有说1986年的,指的是他们另一篇paper:Learning representations by back-propagating errors),使得神经网络的训练变得简单可行,这篇文章在Google Scholar上的引用次数达到了19000多次。

几年后,LeCun利用BP算法来训练多层神经网络用于识别手写邮政编码[2],这个工作就是CNN的开山之作,模型多处用到了5*5的卷积核,但在这篇文章中LeCun只是说把5*5的相邻区域作为感受野,并未提及卷积或卷积神经网络。关于CNN最原始的雏形感兴趣的读者也可以关注一下文献[3]。

ILSVRC竞赛历年的佼佼者,下表具体比较AlexNet、VGG、GoogLeNet、ResNet四个模型。

网络模型之模型总结

谷歌系列 :Inception v1到v4(2015年-2017年)

网络模型的相关论文以及下载地址:
   
[v1] [2015 CVPR] [GoogLeNet / Inception-v1][Going Deeper with Convolutions][6.67% test error]
https://arxiv.org/abs/1409.4842
[v2] [2015 ICML] [BN-Inception / Inception-v2] [Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift][4.8% test error] 
https://arxiv.org/abs/1502.03167
[v3] [2016 CVPR] [Inception-v3][Rethinking the Inception Architecture for Computer Vision][3.5% test error] 
https://arxiv.org/abs/1512.00567
[v4][2017 AAAI] [Inception-v4][Inception-ResNet and the Impact of Residual Connections on Learning][3.08% test error]
https://arxiv.org/abs/1602.07261

CNN结构演化图:

网络模型之模型总结

图片参考

Inception v1模型

Inception v1的网络,将1x1,3x3,5x5的conv和3x3的pooling,堆叠在一起,一方面增加了网络的width,另一方面增加了网络对尺度的适应性; 

网络模型之模型总结

 

网络模型之模型总结

第一张图是论文中提出的最原始的版本,所有的卷积核都在上一层的所有输出上来做,那5×5的卷积核所需的计算量就太大了,造成了特征图厚度很大。为了避免这一现象提出的inception具有如下结构,在3x3前,5x5前,max pooling后分别加上了1x1的卷积核起到了降低特征图厚度的作用,也就是Inception v1的网络结构。 

GoogLeNet的模型参数详细如下:

网络模型之模型总结
GoogLeNet的结构模型如下: 

网络模型之模型总结

需要注意的是,为了避免梯度消失,网络额外增加了2个辅助的softmax用于向前传导梯度。文章中说这两个辅助的分类器的loss应该加一个衰减系数,实际测试的时候,这两个额外的softmax会被去掉。

Inception v2模型(BN-Inception)

参考本人博客:https://mp.csdn.net/postedit/86653765

  • 深度网络为什么难训练?

  因为internal covariate shift。因此提出了一种改善该问题的机制(Batch Normalization(归一化,即固定每一层数据输入的均值和方差))。Batch Norm可谓深度学习中非常重要的技术,不仅可以使训练更深的网络变容易,加速收敛,还有一定正则化的效果,可以防止模型过拟合。

Q: 如果数据的分布不发生改变,真的会是的网络的训练变得更简单吗? 
A: 首先,考虑机器学习领域中的一个很重要的假设:

  • IID独立同分布假设:如果训练数据与测试数据满足相同的分布,那么通过神经网络训练出来的模型,能够在测试集上同样取得很好的效果。
  • 同样,在训练的过程中,如果每一层的数据输入保持稳定的数据分布,那么对于网络的训练肯定是有帮助的。
  • 在机器学习中,常用的数据处理的方法“白化操作”(whiten),例如PCA降维等方法,可以有效的提升机器学习的效果。而“白化操作”本质上,就是对输入数据的分布进行改变,使其变为均值为0,单位方差的正态分布。
  • 从而,作者认为如果对每一层的数据输入,固定其分布,可定能够加快深度模型的训练。

Q:Batch Normalization带来了哪些好处? 
A:

  • 加快训练速度
  • 对网络中信息的流动带来好处,使得网络参数的依赖相关性减弱
  • 可以使用更大的学习率
  • BN相当于正则化,从而可以减弱Dropout的作用,或者去掉dropout操作
  • BN使得使用哪些带有饱和性质的**函数构建网络,如sigmoid,tanh等

网络模型之模型总结

从图上可以看出,增加了BN操作后,Inception模型的效果都得到了提升,收敛速度都很快。

Inception v3模型

Google的论文还有一个特点,那就是把一个idea发挥到极致,不挖干净绝不罢手。Rethinking这篇论文中提出了一些CNN调参的经验型规则,暂列如下:

  1. 避免特征表征的瓶颈。特征表征就是指图像在CNN某层的**值,特征表征的大小在CNN中应该是缓慢的减小的。
  2. 高维的特征更容易处理,在高维特征上训练更快,更容易收敛
  3. 低维嵌入空间上进行空间汇聚,损失并不是很大。这个的解释是相邻的神经单元之间具有很强的相关性,信息具有冗余。
  4. 平衡的网络的深度和宽度。宽度和深度适宜的话可以让网络应用到分布式上时具有比较平衡的computational budget。

Smaller convolutions

简而言之,就是将尺寸比较大的卷积,变成一系列3×3的卷积的叠加,这样既具有相同的视野,还具有更少的参数。

这样可能会有两个问题, 
- 会不会降低表达能力? 
- 3×3的卷积做了之后还需要再加**函数么?(使用ReLU总是比没有要好)

实验表明,这样做不会导致性能的损失。

Inception V2 一方面了加入了BN层,减少了Internal Covariate Shift(内部neuron的数据分布发生变化),使每一层的输出都规范化到一个N(0, 1)的高斯; 另外一方面学习VGG用2个3x3的conv替代inception模块中的5x5,既降低了参数数量,也加速计算; 
网络模型之模型总结

Asymmetric Convoluitons

使用3×3的已经很小了,那么更小的2×2呢?2×2虽然能使得参数进一步降低,但是不如另一种方式更加有效,那就是Asymmetric方式,即使用1×3和3×1两种来代替3×3的卷积核,如下图所示:

网络模型之模型总结

使用2个2×2的话能节省11%的计算量,而使用这种方式则可以节省33%。

于是,Inception再次进化。

网络模型之模型总结

Auxiliary Classifiers

在GoogLeNet中,使用了多余的在底层的分类器,直觉上可以认为这样做可以使底层能够在梯度下降中学的比较充分,但在实践中发现两条:

  1. 多余的分类器在训练开始的时候并不能起到作用,在训练快结束的时候,使用它可以有所提升
  2. 最底层的那个多余的分类器去掉以后也不会有损失。
  3. 以为多余的分类器起到的是梯度传播下去的重要作用,但通过实验认为实际上起到的是regularizer的作用,因为在多余的分类器前添加dropout或者batch normalization后效果更佳。

Grid Size Reduction

Grid就是图像在某一层的**值,即feature_map,一般情况下,如果想让图像缩小,可以有如下两种方式:

网络模型之模型总结

右图是正常的缩小,但计算量很大。左图先pooling会导致特征表征遇到瓶颈,违反上面所说的第一个规则,为了同时达到不违反规则且降低计算量的作用,将网络改为下图:

网络模型之模型总结

使用两个并行化的模块可以降低计算量。
经过上述各种Inception的进化,从而得到改进版的GoogLeNet,如下:

网络模型之模型总结

Label Smoothing

除了上述的模型结构的改进以外,Rethinking那篇论文还改进了目标函数。

原来的目标函数,在单类情况下,如果某一类概率接近1,其他的概率接近0,那么会导致交叉熵取log后变得很大很大。从而导致两个问题:

  1. 过拟合
  2. 导致样本属于某个类别的概率非常的大,模型太过于自信自己的判断。

所以,使用了一种平滑方法,可以使得类别概率之间的差别没有那么大,

用一个均匀分布做平滑,从而导致目标函数变为:

该项改动可以提升0.2%。

博客参考


深入浅出——网络模型中Inception的作用与结构全解析:https://blog.csdn.net/u010402786/article/details/52433324

Inception in CNN:https://blog.csdn.net/stdcoutzyx/article/details/51052847

Inception-v3:"Rethinking the Inception Architecture for Computer Vision":https://blog.csdn.net/cv_family_z/article/details/50789805

论文笔记 | Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning:https://blog.csdn.net/bea_tree/article/details/51784026

谈谈Tensorflow的Batch Normalization:https://www.jianshu.com/p/0312e04e4e83

TensorFlow中文社区:http://www.tensorfly.cn/tfdoc/api_docs/python/nn.html

什么是批标准化 (Batch Normalization):https://zhuanlan.zhihu.com/p/24810318

参考文献

[1] DE Rumelhart, GE Hinton, RJ Williams, Learning internal representations by error propagation. 1985 – DTIC Document.

[2] Y. LeCun , B. Boser , J. S. Denker , D. Henderson , R. E. Howard , W. Hubbard and L. D. Jackel, “Backpropagation applied to handwritten zip code recognition”, Neural Computation, vol. 1, no. 4, pp. 541-551, 1989.

 

[3] K. Fukushima. Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position. Biological Cybernetics, 36(4): 93-202, 1980.

相关文章:

  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-07-30
  • 2021-08-25
  • 2021-05-31
  • 2021-10-22
  • 2021-06-10
猜你喜欢
  • 2021-10-10
  • 2020-01-31
  • 2021-05-31
  • 2021-06-09
  • 2021-10-11
  • 2021-06-08
  • 2021-10-16
相关资源
相似解决方案