GoogLeNet Inception: Going deeper with convolutions
本篇文章在ILSVRC2014中,获得了分类和检测第一的好成绩。
摘要:
本文提出了一个Inception结构,旨在计算成本相同的情况下,提升网络的深度和广度。
一:介绍
近年来在图像识别上的进步,不仅因为硬件的革新、大的数据集,使我们可以大量运算,还有更多的在于算法的升级。
本文提出的Inception结构将从新层次,更直接的网络模型。
二:相关工作
受到灵长类神经视觉系统的启发,Serre使用不同尺寸的Gabor滤波器来处理不同尺寸的图片,这个和Inception很像。
NIN是为了增加网络表达能力提出的深度网络,用全连接感知机代替卷积过程。
当前最流行的检测算法是Girshick提出的Regions-CNN;R-CNN把检测任务分解为两个子任务,先是利用低等级的线索(颜色或者像素的一致性)提取潜在物体,然后用CNN分类器对那些区域的对象进行分类。(利用低级线索提取潜在物体,再把具有相同线索的归为一类)
三、动机和高级考量
最常见的提升性能的方式:变宽变深。
但是存在两大缺点:
1.变量变多,容易overfit,需要更多的数据集feed
2.需要更多的计算资源。
最基本的解决上述问题的方法是:将全连接层拆开,从全连接转到稀疏链接的结构。
理论基础:Arora:数据集的概率分布被打的系数网代表,拓扑结构应为:通过分析每一步最后一层激活函数的统计关联性,并将具有高相关性输出的神经元进行聚类,然后将网络一层层搭建起来。
虽然数学证明需要很强的条件,但这个 这个理论符合Hebbian准则(突触可塑性:重复刺激可以增加传递效果,狗摇铃铛的例子,神经元在同一刺激下兴奋会加强其联系)
此外,当涉及到非一致性稀疏矩阵的数值计算时,当前算法有些复杂,既不高效也不准确。当前的计算机视觉只能通过卷积的方式来实现一中空间的局部稀疏性,(然而,卷积在filter上是全连接的)
是否能有个这种的选择,既可以利用额外稀疏度,又可以是计算性能高效?
一些专家建议,【把稀疏矩阵聚成稠密矩阵】
四:结构细节
Inception Main idea:用局部稀疏结构模拟、覆盖卷积网络。
Arora:需要分析上一层的统计相关性;然后把高度相关的单元聚类到一起。下一层聚集到一起的单元链接上一层的单元。
假设前几层的单元对应的输入图像的一些区域,这些单元被聚集到过滤器中。。。。这意味着我们能够得到大量聚焦于同一区域的簇,他们会被下一层的1×1卷积覆盖,像【12】说的那样。为了避免出现区块对齐问题【patch alignment issues】,我们选用1×1,3×3和5×5。
此外,因为池化操作对于现有水平的卷积网络是很重要的,建议最好在每一步增加一条并行的池化通路。具体模型如图:
因为Inception模块是一层一层往上栈式堆叠的,输出的关联性会产生变化,次高层的特征会被更高层捕获,所以他们的空间聚集度会降低。因此随着层次的升高,3×3,5×5的比例会随之升高。
另一个问题是,即使是朴素形式的模型,在有限个数的5×5卷积,其最上层的卷积层的巨量过滤器的开支就已经很大,为了降低计算,我们利用1×1的filter对其进行降维。
这给了我们另一种想法,将降维和投影的方法用在计算量急剧增加的模块。这是由于【嵌入成功】(success of embeddings)的理论支持,(低维嵌入也包含大量信息)然而,嵌入会把信息压缩,丢失位置的稀疏性,因此我们只在需要被聚合的时候压缩。也就是说在3×3,5×5昂贵的时候使用。
具体模型如图:
结论
利用将稀疏结构构建成块并多次使用是一个很好的提升计算机视觉神经网络的办法。主要优势是与浅层且较窄的网络相比,只要增加计算需求就能极大提升质量。