在2014年的ImageNet图像识别挑战赛中,⼀个名叫GoogLeNet 的网络架构⼤放异彩。GoogLeNet吸收了NiN《Network In Network》中串联网络的思想,并在此基础上做了改进。这篇论文的⼀个重点是解决了什么样大小的卷积核最合适的问题。毕竟,以前流⾏的网络使用小到1 × 1,⼤到11 × 11的卷积核。本文的⼀个观点是,有时使用不同大小的卷积核组合是有利的。(全都要!)
目录
一、引言
(1)SOTA(state of the art)
(2)Hebbian Principe:neurons that fire together, wire together
二、结论
三、解析 GoogLeNet 网络模型结构
(1)Inception 模块
(2)GoogLeNet 网络模型
我们提出了一种名为 Inception 的深度卷积神经网络架构,负责在 ImageNet 大规模视觉识别挑战2014 ( ILSVRC14 )中设置分类和检测的新 state of the art(SOTA)。这种体系结构的主要标志是提高了网络内部计算资源的利用率。这是通过精心策划的设计来实现的,它允许在保持计算预算常数的同时增加网络的深度和宽度。为了优化质量,建筑决策基于 Hebbian Principe 和多尺度处理的直觉。我们为 ILSVRC14 提交的投稿中使用的一个特殊化身就是所谓的 GoogLeNet,一个22层的深度网络,其质量在分类和检测的上下文中进行评估。
名词解释:
SOTA model,并不是特指某个具体的模型,而是指在该项研究任务中,目前最好/最先进的模型。SOTA result,指的是在该项研究任务中,目前最好的模型的结果/性能/表现。
翻译:如果两个神经元常常同时产生动作电位,或者说同时激活(fire),这两个神经元之间的连接就会变强,反之则变弱。
Why Hebbian Principe?
当网络的深度和宽度增加时,计算量会随之增大,参数量也会爆炸式增长。这是就需要稀疏神经元之间的连接(即稀疏结构,如下图所示),而引用稀疏结构虽然会防止过拟合,但是也必然会导致一些神经元之间的信息丢失,此时 Hebbian principe 便派上了用场,我们需要通过分析某些神经元之间激活值的相关性,将相关度高的神经元聚合,获取一个稀疏表示,从而达到把相关性强的特征汇聚,弥补了部分信息的丢失,防止了过拟合,并起到加速收敛的作用。
我们的结果似乎提供了一个坚实的证据,即用易得的密集 building blocks 逼近期望的最优稀疏结构是改进计算机视觉神经网络的可行方法。该方法的主要优点是在计算需求适度增加的情况下,相对于较浅和较不宽的网络,质量增益显著。还注意到我们的检测工作是有竞争力的,尽管既没有使用上下文,也没有执行 bounding box 回归,这一事实进一步证明了 Inception 体系结构的强大。虽然期望通过更昂贵的深度和宽度相似的网络可以获得相似的结果质量,但是我们的方法提供了坚实的证据,证明了向更稀疏的结构迁移是可行和有用的。这表明未来有希望在《Provable bounds for learningsome deep representations》的基础上,以自动化方式创建更稀疏和更精细的结构。
在GoogLeNet中,基本的卷积块被称为Inception块(Inception block)。这很可能得名于电影《盗梦空间》(Inception),因为电影中的⼀句话“我们需要走得更深” ("We need to go deeper")。
***************************************原文剖析***************************************
我们可以预料,在较大的 patches 上会有更少的空间分布的簇被卷积覆盖,而在越来越大的区域上会有更少的 patches 被卷积复盖。为了避免 patch 对齐问题,Inception 体系结构目前的化身仅限于过滤大小为1×1,3×3和5×5,但这种决定更多地基于便利性而非必要性。它还意味着,所建议的架构是所有这些层与它们的输出滤波器组的组合,级联成一个单独的输出向量,构成下一阶段的输入。另外,由于池化操作对于当前SOTA卷积网络的成功至关重要,因此在每一个阶段添加一个备选的并行池化路径也应该有额外的好处。(Figure 2(a))
由于这些 “Inception模块” 相互叠加在一起,它们的输出相关统计势必会有所不同:当更高抽象层次的特征被更高的层捕获时,它们的空间集中度预计会降低,这表明随着我们向更高层次移动时,3×3和5×5卷积的比例应该增加。
至少在这种形式下,上述模块的一个主要问题是,即使是少量的5 × 5卷积,在含有大量滤波器的卷积层上也是非常昂贵的。一旦在混合中添加池化单元,这个问题就变得更加明显:它们的输出滤波器的数量等于上一阶段的滤波器数量。从阶段到阶段产出数量的增加。即使这种体系结构可能会覆盖最优稀疏结构,但它也会非常低效地执行,导致计算爆炸,几乎没有阶段。
这就引出了提议架构的第二个想法:在计算要求增加太多的地方,明智地应用降低维度(dimension reductions)和投影(projections)。这是基于嵌入的成功:即使是低维嵌入也可能包含大量关于相对较大的图像块的信息。然而,嵌入是以稠密的、压缩的形式表示信息,压缩后的信息难以建模。我们希望在大多数地方保持稀疏表示( 根据《Provable bounds for learningsome deep representations》的条件 ),只有当信号必须聚集在一起时才会压缩。也就是说,在昂贵的3×3和5×5卷积之前,1×1卷积被用来减少计算量。除次之外,还包括使用校正的线性激活,使之具有两用性。(Figure 2(b))
一般来说,Inception网络是由上述类型的模块相互叠加而成的网络,最大池层,步长为2,将网格分辨率减半。由于技术原因( 训练期间的记忆效率 ),在保持传统卷积方式的低层的同时,只在较高层开始使用 Inception 模块似乎是有益的。这并不是严格意义上的必要,简单地反映了我们当前实施中的一些基础设施的低效。
这种架构的一个主要有益方面是,它允许在每个阶段大幅增加单元数目,而不需要在计算复杂度上出现无法控制的爆炸。适当地使用降维,可以将上一阶段的大量输入滤波器屏蔽到下一层,首先降低它们的维数,然后以 large patch size 卷绕它们。这个设计的另一个实际有用的方面是,它符合这样的直觉:视觉信息应该在不同的尺度上进行处理,然后进行聚合,以便下一阶段能够同时从不同的尺度上提取特征。
计算资源的改进使用使得在不陷入计算困难的情况下,既可以增加每个阶段的宽度,也可以增加阶段的数量。使用初始架构的另一种方法是创建稍逊一筹,但计算代价更低的版本。我们发现,所有包含的 the knobs and levers 都允许对计算资源进行可控的平衡,从而产生比使用非 Inception 架构的类似性能网络快2-3倍的网络,但这需要在此时进行仔细的手工设计。
如上图所示:Inception块由四条并行路径组成。前三条路径使用窗口大小为1 × 1、3 × 3和5 × 5的卷积层, 从不同空间大小中提取信息。中间的两条路径在输⼊上执行1 × 1卷积,以减少通道数,从而降低模型的复杂性。第四条路径使用3 × 3最大值池化,然后使用1 × 1卷积层来改变通道数。这四条路径都使用合适的填充来使输⼊与输出的高和宽⼀致,最后我们将每条线路的输出在通道维度上连结,并构成Inception块的输出。 在Inception块中,通常调整的超参数是每层输出通道数。
表格中的一些参数表示:
下图中的一些参数表示和模块解释:
在原图中绘制了一些文字框,黄色框表示对应的模块名称,白色框表示各个Iception模块中的卷积核的个数,红色框比表示最大池化和辅助分类器。
卷积工作过程:96个1*1*192的卷积核,把28*28*192的图像卷积成大小为28*28*96的图像。
我们的训练使用了 momentum=0.9 的异步随机梯度下降(asynchronous stochastic gradient descent),固定学习率进度,即每 8个 epoach 降低 4% 的学习率。
>>>如有疑问,欢迎评论区一起探讨!