Inception v3
使用场景
内存和计算量有限的情况,比如移动设备
设计原则(作者强调了以下原则并不是一定正确,要结合实际运用场景来评估)
1、Avoid representational bottlenecks, especially early in
the network.
个人理解是不要一开始就给图像特征降维,要不然会丢失信息?还有就是不能只通过特征维度来理解图像。
2、Higher dimensional representations are easier to process locally within a network.
激活层多一点能更好提取图像特征。
3、Higher dimensional representations are easier to process locally within a network.
这个讲的应该是文章重点,大卷积分解成小卷积。
4、Balance the width and depth of the network.
网络宽度和深度的减小需要小心平衡。
分解卷积
思路1、把大卷积分解成小卷积
思路2、非对称式卷积分解
也不是分解成nn形式的小卷积效果就更好,形如1n,n1的效果其实更好。
比如下图
33-》非对称式分解-》省了33%计算量 ✔️
33-》22-》2*2-》省了11%计算量
并且这种非对称式分解具有良好的扩展性。但是注意下,这个方法还是别用在较早层里,用在中间层效果好(比如m*m,12<m<20这个范围好)
辅助分类器
之前说auxiliary classifiers可以帮助网络缓解梯度消失问题,帮助网络更好地学习和收敛,事实证明这个分类器有没有结果都差不多。这个分类器的实际功效就是regularizer,起着正则化作用。
实际上后面再加个batch-normalized或者dropout层更有帮助,照此看来,batch-normalized也起着个正则化作用。
网格有效减小
也就是feature maps的减小是必要的(因为不减小计算量太庞大),同时也是需要技巧的,传统方法就是pooling池化操作,
但是这方法有个弊端,把部分图片特征弄丢了(也就是违反原则1)。作者想了个方法,卷积和池化同步进行,这样图像特征就不会丢失太多了。
Inception-v2
这个网络虽然有42层,但比GoogleNet训练计算量大2.5倍,效果还比VGGNet好。
label-smoothing regularization-LSR
上图p代表了预测的概率,q代表了实际的概率。现在不考虑p和q对x的依赖性,
转换为交叉熵形式,我让p最大也就是让交叉熵损失值loss最小。让交叉熵对zk进行求导,可以简化为
结果范围为-1到1。
有两个问题,问题1、易导致过拟合
2、鼓励
正确概率远大于错误概率,这样导致模型适应性差。
因为这需要模型预测结果十分正确。
模型预测总会出错的,为提高模型适应性,将
用
替代,
作者的训练参数可以参考一下
该模型在低像素训练集上效果没高像素训练集上好,低像素训练集需要较多训练时间,不过准确率还是跟高像素训练集极为相似的。
LRN在tensorflow中
该图片来自 https://www.aiuai.cn/aifarm635.html
总结
参考文献
https://blog.csdn.net/edogawachia/article/details/78552257
https://www.aiuai.cn/aifarm635.html
论文翻译
卷积神经网络是众多计算机视觉领域解决方案的核心,适用于解决各种各样的任务。自从2014年开始,深度卷积网络开始成为主流,在多种基准下都十分有效。对于大多数任务来说,尽管(深度卷积网络)增加的模型规模和计算成本往往会转化为即时的质量提升(只要提供足够多的标记数据用于训练),但计算效率和少参数量仍旧是各种用例的促成因素,比如移动视觉和大数据场景。我们探索了一些方法来扩大网络规模,通过适当地**分解卷积(factorized convolutions)和积极正则化(aggressive regularization)**以尽可能高效地利用所增加的计算量。在ILSVRC2012分类挑战中,验证集的结果证明了我们得到了目前为止最好的分类结果:使用一个每次推断计算量达50亿且参数量少于2500万的网络得到了top-1 21.2%和top-5 5.6%的结果。综合4个模型和多方面评估,top-1 17.3%, top-5 3.5%。
介绍
自从Krizhevsky赢得2012 ImageNet竞赛,他们的AlexNet已经成功的运用到大量计算机视觉任务上,比如目标识别,分割,人体姿势评估,视频分类,目标追踪和超分辨率。
这些成功促进了一系列新研究,重点在于找到更高性能的卷积神经网络。自2014年开始,通过利用更深更宽的神经网络,网络架构得到大大提升。VGGNet和GoogLeNet都在2014 ILSVRC分类赛上取得很好的表现。有一个有趣的发现,分类性能的提高往往能转移到各种应用场景的显著质量提高。这意味着深度卷积网络结构的改进可以被利用到其他大多数计算机视觉任务上,这些任务越来越依赖于高质量的学习视觉特征。同时,在AlexNet无法与人工精心设计的解决方案竞争的情况下,网络质量的改进为卷积神经网络带来新的应用领域。
尽管VGGNet的结构简洁性令人难以抗拒,但这需要很高的成本:评估这个网络需要太大的计算量。另一方面,GoogLeNet的初始架构也是为了在内存和计算量有限的情况下表现良好所设计的。比如说,GoogleNet只使用了5百万个参数,这相当于其前任AlexNet使用参数量6千万的1/12。而且,VGGNet使用的参数量大概是AlexNet的1/3多一些。
Inception的计算量也比VGGNet低以及表现比它好的继任者。这使Inception在大数据场景下具有可行性,该场景下需要在合理的消耗或者内存和计算容量有限情况下运行,比如移动视觉设备。当然,通过应用特定的解决方案到指定存储器使用或使用计算技巧优化某些操作可能缓解这些问题。可是这增加了额外的复杂性。而且,这些方法也可以被应用来优化Inception结构,再次扩大效率差距。
然而,Inception的复杂性使得改变网络更加困难。如果只是天真地把结构扩大,计算量的优势会立即损失。同时,我们没有提供关于GoogleNet 架构的各种设计决策的关键因素的清晰描述。比如说,如果认为有必要增加某些Inception风格模型的容量,只是把所有滤波器组大小简单地增加2倍,会导致计算量和参数量都增加4倍。这可以在许多实际场景中被证明是禁止的或不合理的,特别是如果相关所获甚微时。在这篇文章中,我们首先介绍一些已经被证明能有效扩展神经网络的一般原则和优化思想。尽管我们的原则不局限于Inception类型的网络,但是他们更容易在上下文中被观察到,因为Inception风格的构筑块足够灵活,可以自然地合并这些约束。这可以通过Inception模块的维度减小和并行结构的大体使用实现,这缓解了邻近组件结构变化带来的影响。但是,这样做需要小心,因为需要遵循一些指导原则以维持模型的高质量。
2 一般设计原则
这里我们描述了一些基于多种结构选择的卷积神经网络的大量实验的设计原则。关于这一点,下列的原则的效用是具有推测性的,需要未来额外的实验证据来确认他们准确性和有效性领域。但是,严重偏离这些原则往往会导致网络质量的下降,并且修复这些被观察到的偏离情况一般可以帮助改进网络结构。
- 避免代表性瓶颈,特别是在网络早期。前向网络可以用一个从输入层到分类层或者回归层的非循环图来表示。该图能够清晰地展示信息流。在输入到输出间的任意截断都可以获得该截断所通过的信息。记得使用极度压缩来避免瓶颈。一般来说,在到达用于手头任务的最后表示,从输入到输出应该逐渐减小。理论上,信息内容不能仅仅通过维度的表示来评估,因为它丢弃了如相关结构这样的关键因素;维度仅仅提供了一个对信息内容的粗糙估计。
- 越高维的表示越容易在网络内本地加载。增加卷积网络每个区块的激活允许更多待理解特征。由此产生的网络会训练地更快。
- 空间聚合可以再较低维的嵌入上实现,没有太多或任何表达力损失。比如说。在执行更展开的卷积(如3*3),可以在空间聚合前减小输入表示的维度,不用担心严重的不良影响。我们猜想,如果输出用于空间聚合相关上,那么原因是相邻单元的强相关性导致了维度减小时更少的信息损失。鉴于这些信号应该易于压缩,维度减小甚至促进更快的学习。
- 平衡网络的宽度和高度。理想的网络是可以实现每个阶段过滤器数量和网络深度的平衡。增加网络的宽度和深度可能产生高质量网络。可是,如果两者并行增加,那么可以达到常量计算量的理想改进。因此计算预算应该以平衡分布在网络的宽度和深度间。
尽管这些原则可能都有道理,但是不直接使用它们来改进网络它们都是不确定的。只在模糊的情况下明智的使用它们。
3 使用大量滤波器分解卷积
许多GoogleNet的原始收益来自于非常慷慨地使用降维。这可以被视为一种高效计算的特殊卷积分解方式。试想11卷积层跟在33卷积层后。在视觉网络中, 期望邻近的激活层输出高度相关。因此,我们期望它们的激活能在聚合之前减少并且本地表达应该相似。
这里我们特别为提高方案的计算效率,探索了用不同设置来分解卷积的其他方式。自Inception是以完全的卷积方式来工作以来,每个权重对应于每次激活一次乘法。因此,任何计算量的介绍都会导致参数量的减少。也就是说通过适当的分解,我们可以得到更多待理解的参数,因此加快了训练速度。同时,我们也可以使用计算和内存存储来增加网络过滤器组的大小,并保持我们在每一台电脑上训练每个模型副本的能力。
3.1 分解成更小的卷积
有着更大空间滤波器(比如55或者77)的卷积在计算量方面往往会非常大。例如,在一个具有m个滤波器的网格上,具有n个滤波器的55卷积,比起具有相同数量滤波器的33卷积,前者的计算量是后者的25/9=2.78倍。当然了,55滤波器可以捕获较早层中更远的激活单元之间的信号的依赖性,所以几何大小的减小也会带来昂贵的计算量增加。可是,我们可以想想,55卷积是否可以被一个具有较少参数且输入尺寸和输出深度相同的多层网络来代替呢?如果我们把55卷积的计算图放大,每个输出图看上去像一个小型全连接网络,其在输入上进行55块上滑动。(见图1)因为我们在构建视觉网络,再次利用转换不变性并将完全连接的组件用一个两层的卷积结构来替代似乎很自然:第一层是一个33卷积,第二层是第一层33输出网络顶部的完全连接层(见图1)。在输入激活网格上滑动这个小型网络,也就是,使用两层33卷积代替55卷积(比较图4和图5)。
这个举措可以通过共享相邻块之间的权重显著减少参数量。为了分析预期的计算量消耗,我们将使用一些简化的猜想应用到典型场景:猜想n=alpha m,也就是我们想要通过一个常量alpha因子改变激活单元数。因为55卷积是聚合的,alpha通常略大于1(关于GoogleNet,1.5节处)。使用两层来替代一个55层,通过两个步骤来实现这一扩展似乎是合理的:两步都以根号alpha增加滤波器数量。为了简化我们的猜想,选择alpha=1(不进行扩展),如果我们天真地滑动网络,而不重复使用相邻网格块间的计算量,将增加计算消耗。滑动这个网络代表着两个3*3卷积重复使用邻近块的激活。这样,我们减少了(9+9)/25=0.72倍计算量的通过分解得到了28%的相对增益。完全相同的保存适用于参数计数,因为每个参数在计算每个单元的激活时仅被使用一次。
写作词汇积累:
these successes spurred a new line of research that
这些成功促进了一系列新研究…