鱼的深度学习

论文笔记-Computing Receptive Fields

2020-11-04  本文已影响0人  升不上三段的大鱼

文章原文:Computing Receptive Fields of Convolutional Neural Networks
作者:André AraujoWade Norris,Jack Sim
open-source library: https://github.com/google-research/receptive_field

虽然深度神经网络已经在许多人工智能问题上建立了压倒性的最新成果,但它们仍然很难开发和调试。近年来关于深度学习理解的研究主要集中在特征可视化、理论保证、模型可解释性和泛化等方面。

在这项工作中,我们从一个互补的角度分析深层神经网络,集中在卷积模型上。我们感兴趣的是了解输入信号对输出特性的影响程度,并将网络任何部分的特征映射到产生这些特性的输入区域。将输出特征与输入区域相关联的关键参数是卷积网络的感受野,它被定义为产生该特征的输入区域的大小。

作为我们的第一个贡献,我们提出了一个计算现代卷积神经网络感受野的数学推导和有效算法。以前的工作讨论了简单卷积网络中从输入到输出只有一条路径的感受野计算,提供了适用于这种情况的递推方程。在这项工作中,我们重温这些推导,以获得在单路径情况下接受场计算的闭合形式表达式。此外,我们将接受场计算扩展到现代卷积网络中,在那里从输入到输出可能有多条路径。据我们所知,这是第一次对最近的卷积结构的接收场计算的阐述。

今天,在各种应用中都需要感受野计算。例如,在目标检测的计算机视觉任务中,为了识别小的和大的实例,在多个尺度上表示对象是很重要的;理解卷积特征的跨度通常需要达到这个目标(例如,如果网络的接收场很小,则可能无法识别大对象)。然而,这些计算通常是手工完成的,这既繁琐又容易出错。这是因为没有库可以自动计算这些参数。作为我们的第二个贡献,我们通过引入一个开源库来填补这一空白,该库可以方便地执行这里描述的计算。该库集成到Tensorflow代码库中,可以轻松地用于分析各种模型,如本文所述。
我们期望这些衍生工具和开源代码能够提高对复杂深度学习模型的理解,从而导致更具成效的机器学习研究。

文章概述

我们考虑了完全卷积神经网络,并推导了它们的感受野大小和感受野位置对于输出特征相对于输入信号的影响。虽然这里给出的推导对于卷积神经网络输入处使用的任何类型的信号都足够普遍,但我们使用图像作为一个运行示例,适当时参考现代计算机视觉体系结构。
首先,当网络只有一条从输入到输出的路径时(如在AlexNet或VGG中),我们推导出闭式表达式。然后,我们讨论了具有从输入到输出的多路径的任意计算图的更一般的情况(如ResNet或Inception)。我们考虑了在这种情况下可能出现的排列问题,并解释了一种计算感受野大小和位置的算法。
最后,我们分析了现代卷积神经网络的感受野,展示了使用我们的开源库获得的结果。

问题设置

考虑一个有L层的全卷积网络(fully-convolutional network, FCN)。定义特征图f_l \in R^{hl \times wl \times dl}表示一个高h_l,宽w_l,深d_l的第l层的输出。把输入图像记为f_0,最终的输出特征图记为f_L
为了简化演示,本文中介绍的衍生工具考虑一维输入信号和特征图。对于高维信号(例如,2D图像),这些推导可以独立地应用于每个维度。同样地,文中配图中描绘了一维深度,因为这不影响感受野的计算。
每层l的空间配置由4个变量参数化,如下图所示:

每层的空间配置

我们考虑其输出特性局部依赖于输入特性的层:例如卷积、池化或元素操作,如非线性、加法和滤波器级联。这些通常用于最先进的网络。我们定义elementwise操作的“内核大小”为
1的卷积,因为每个输出特性都依赖于输入特性映射的单个位置。
下面的简单网络进一步说明了我们的符号。在这种情况下,L=4,模型包括一个卷积,然后是ReLU,第二个卷积和max pooling。(强烈建议去原文网站看一下这张图,可以自己改变参数观察变化的)


一个四层的简单卷积网络

单路径网络

在这一节中,我们计算从输入到输出的单路径全卷积网络(例如AlexNet或VGG)的递推和闭式表达式。

计算感受野大小

定义最终输出的特征图f_L对于特征图f_l的感受野大小为r_l。也就是说,r_l对应的是从特征图f_l中向特征图f_L贡献了一个特征的特征数量。记r_L=1
作为一个简单的例子,对于L层,以f_{L-1}层的特征作为输入,生成了f_L作为输出,如下图:

fL中的一个特征来自于fL-1层的两个特征
很容易看到来自f_{L-1}k_L个特征可以影响到f_L的一个特征,所以r_{L-1}=k_L
现在考虑一般的情况,我们知道r_l并且想要计算r_{l-1},每个特征f_l都连接着前一层f_{l-1}的个特征k_l
首先,考虑k_l=1的情况:这种情况下,f_lr_l个特征会涵盖来自f_{l-1}r_{l-1}=s_l * r_l-(s_l-1)个特征。就像下面图片中红线的部分,r_l=2。绿色的部分s_l*r_l覆盖了特征来自的整个区域,但是多出了s_l-1个特征(紫色),所以需要减掉这部分。
计算rl-1
对于k_l>1的情况,我们只需要加上覆盖该地区的左右的k_l-1个特征。 举个栗子,如果我们用一个大小为5(k_l=5)的卷积核,那么两边会各有2个多出来的特征,加起来总共4个。如果是偶数,这同样有效,因为左右填充加起来是k_l-1
卷积核为5
因此,我们得到了一般的递推方程(一阶非齐次变系数递推方程):
r_{l-1}=s_l * r_l+(k_l-s_l)
该方程可用于递归算法中计算网络的感受野大小,r0。然而,我们可以做得更好:我们可以求解递推方程:
r_0=\sum^L_{l=1}((k_l-1)\prod^{l-1}_{i=1}s_i)+1
这种表达方式具有直观的意义,这可以通过考虑一些特殊情况来看出。例如,如果所有的卷积核都是1,那么感受野自然也是1。如果所有的步幅都是1,那么感受野就是覆盖所有层(kl−1)的和加上1,这很容易看到。如果特定层的步幅大于1,则该区域对于该层以下的所有层按比例增加。最后,注意在这个推导过程中不需要考虑填充。

输入图像感受野区域的计算

虽然知道在输出特征映射中生成一个特征的区域的大小很重要,但在许多情况下,精确地定位生成特征的区域也是至关重要的。例如,给定的特征f_L(i,j),在输入图像中生成它的区域是什么?
定义作为用于计算在f_L中所需特征的区域(在f_l中)最左和最右坐标。在推导中,坐标是零索引的(即,每个图中的第一个特征是在坐标0处)。记u_L=v_L对应于f_L中所需特征在的位置。下图展示了一个简单的2层网络,在其中突出显示了f0,用于计算来自f2的第一个特征。注意,在本例中,区域包含一些填充。在这个例子中,u_2=v_2=0, u_1=0,v_1=0,v_1=1,u_0=-1,v_0=4

u0,v0
接下来我们要问的是,给定u_l,v_l,我们能计算出u_{l-1},v_{l-1}吗?
从简单的例子开始,假设u_l=0。在这个情况下最左边的特征u_{l-1}将会很明显位于-p_l,因为第一个特征是通过将内核的左端放在这个位置上来生成的。如果u_l=1,我们对第二个特征感兴趣,它的最左边u_{l-1}=-p_l+s_l,对于u_l=2, u_{l-1}=-p_l+2*s_l。更一般的情况,
u_{l-1}=-p_l+u_l+s_l
v_{l-1}=-p_l+v_l*s_l+k_l-1
其中v_l的计算的不同之处只在于加了k_l-1,这是必要的,因为在这种情况下,我们想找到最右的位置。
注意到这些表达式与为接收野大小导出的递归非常相似。同样,我们可以在网络上实现递归以获得u_l,v_l为每层;但我们也可以解u_0,v_0,得到网络参数的闭式表达式:
u_0=u_L \prod^L_{i=1}s_i-\sum^L_{i=1}p_l \prod^{l-1}_{i=1}s_i
这给了我们输入图像中最左边的特征位置作为填充的函数(pl)和步幅(sl)应用于网络的每一层,以及输出特征映射中的特征位置(uL)。
最右特征的位置
v_0=v_L\prod^L_{i=1}s_i-\sum^L_{l=1}(1+p_l-k_l)\prod^{l-1}_{i=1}s_i
与上面一个公式的区别是这个表达式也与每层的卷积核大小有关。
感受野大小与面积的关系。很容易证明这一点,r_0=v_0-u_0+1
有效步幅和有效填充。为了计算u_0,v_0,实际上,定义另外两个只取决于不同层的填充和步幅的变量会更容易一些:

有了这些定义之后,我们重写上面的公式:
u_0=-P_0+u_L*S_0
通过使用SlPl我们可以计算u_lv_l在特征图f_l的位置,给出输出特性图的位置u_L。当对计算给定网络的特征位置感兴趣时,可以方便地预先计算三个变量:P_0,S_0,r_0。这使得我们可以获得从任何输出特征位置到影响它的输入区域的映射。
还可以导出有效步幅和有效填充的递推方程。很容易看出:
S_{l-1}=s_l*S_l
P_{l-1}=s_l*P_l+p_l
感受野中心区。同样有趣的是推导出一个影响特定输出特征的感受野区域中心的表达式。这可以用作特征在输入图像中的位置(例如,对于最近基于深度学习的局部特征)。
定义了每层感受野区域的中心为c_l= \frac{u_l+v_l}{2}。根据上面的公式,很容易推导出来:
c_0=-P0+u_L*S_0+(\frac{r_0-1}{2})
与之前u_0的表达式相比,中心从最左的点移动了\frac{r_0-1}{2}。注意,不同输出特征的感受野中心由有效步幅隔开。同样值得注意的是p_l=\frac{k_l-1}{2},输出特征的感受野区域的中心将与第一图像像素对齐并位于0,S_0,2S_0,3S_0,... (卷积核必须都是奇数)。

任意计算图

目前,大多数最先进的卷积神经网络(如ResNet或Inception)都依赖于模型,其中每个层可能有多个输入,这意味着从输入图像到最终输出特征映射可能有几个不同的路径。这些体系结构通常使用有向无环计算图来表示,其中节点集L表示层和边集E对它们之间的连接进行编码(特征映射通过边缘流动)。
上一节介绍的计算可以独立地用于从输入到输出的每个可能的路径。当一个人想要考虑所有不同的路径来找到网络的感受野大小和对应于每一个输出特征的接受野区域时,情况变得更加棘手。
对齐问题。第一个潜在的问题是,根据从输入到输出的路径,可以使用输入图像的未对准区域来计算一个输出特征。此外,用于计算每个输出特征的图像区域之间的相对位置可以改变。因此,感受野大小可能不是移位不变的。下图用一个玩具例子说明了这一点,在这种情况下,输入图像中使用的区域中心对于从输入到输出的两条路径是不同的。


在本例中,填充仅用于左分支。前三层是卷积的,而最后一层执行简单的加法。对于不同的输出特征,左右路径的感受野区域之间的相对位置不一致,这导致缺乏对齐。另外,请注意,每个输出特征的感受野大小可能不同。左边的第二个特征是,仅使用6个输入样本,5个用于第三个特征。这意味着当网络未对齐时,感受野大小可能不是移位不变的。
对于许多计算机视觉任务,输出特征的对齐是非常理想的:“图像到图像的翻译”任务(例如,语义分割、边缘检测、表面法线估计、着色等)、局部特征匹配和检索等。
当网络对齐时,所有不同的路径都会导致输出特征始终集中在相同的位置。所有不同的道路必须有相同的有效步幅。很容易看出,在所有可能的路径中,感受野的大小将是最大的感受野。另外,网络的有效填充对应于感受野大小最大的路径的有效填充,以便可以应用于定位生成输出特征的区域。
下图给出了一个简单的对齐网络示例。在这种情况下,这两个不同的路径导致特征被集中在相同的位置。感受野大小为3,有效的步幅是4,有效填充量为1。

对齐标准。更准确地说,为了使网络在每一层都对齐,我们需要任何层l和输出特征u_L,每一对可能的路径i,j都有c_l^{(i)}=c_l^{(j)}。为此,必须满足两个条件:
S_l^{i}=S_l^{j}
-P_L^{i}+(\frac{r_l^{(i)}-1}{2})=-P_L^{j}+(\frac{r_l^{(j)}-1}{2})
感受野参数的计算算法:草图。开发一个有效的算法来计算这些计算图的感受野大小和相关参数是很简单的。自然,一种强力方法是使用上述表达式独立地计算从输入到输出的每条路由的感受野参数,再加上一些簿记,以便计算整个网络的参数。此方法的最坏情况复杂度为O(| E | | | L |)。
但我们可以做得更好。首先对计算图进行拓扑排序。已排序的表示按依赖性的顺序排列层:每个层的输出仅依赖于出现在它前面的层。通过反向拓扑顺序访问层,我们确保来自给定层的所有路径l到输出层L都被考虑当l被访问的时候。一旦输入层l=0,考虑了所有路径,得到了整个模型的感受野参数。这个算法的复杂性是O(| E |+| L |),这比暴力替代方案好得多。
当访问每一层时,必须进行一些记账,以便跟踪网络的接收场参数。特别要注意的是,可能有几个不同的路径来自层l到输出层L。为了处理这种情况,我们跟踪l并更新它们,如果发现一个新的路径具有更大的感受野,使用表达式计算。类似地,在遍历图时,检查网络是否对齐是很重要的。这可以通过确保不同路径的感受野参数满足上面的条件。

讨论:现代网络的感受野

下表列出了AlexNet、VGG、ResNet、Inception和MobileNet的预计算参数。有关更全面的列表,包括中间网络端点,请参阅下表。


各个模型的感受野

随着模型的发展,从AlexNet到VGG,再到ResNet和Inception,感受野增加(这是层数增加的自然结果)。在最近的网络中,感受域通常覆盖整个输入图像:这意味着最终输出特征映射中每个特征使用的上下文包括所有输入像素。

我们也可以将感受野的增长与分类的准确性联系起来。下图显示了ImageNet top-1精度与网络接收字段大小的函数关系,适用于上面列出的相同网络。每个数据点的圆圈大小与每个体系结构的浮点运算(flop)数量成正比。


感受野与准确性的关系

我们观察到分类准确率和感受野大小之间的对数关系,这表明大的感受野对于高水平的识别任务是必要的,但是回报会减少。例如,请注意mobilenet是如何在使用非常紧凑的架构的情况下实现高识别性能的:使用深度卷积技术,通过较小的计算占用空间来增加接收场。相比之下,VGG-16需要比MobileNet多27倍的浮点运算,但产生的接收野更小;即使更复杂,VGG的准确度也仅略高于MobileNet。这表明,能够有效生成大感受野的网络可能会获得更高的识别性能。

不过,让我们强调,感受野的大小并不是导致上述性能提高的唯一因素。其他因素也起着非常重要的作用:网络深度(即层数)和宽度(即每层过滤器的数量)、剩余连接、批量规范化等等。换言之,虽然我们推测一个大的感受野是必要的,但决不是足够的。

最后,请注意,给定的特征并不受其感受野区域内所有输入像素的同等影响:靠近感受野中心的输入像素有更多的“路径”来影响该特征,从而承载更多的权重。每个输入像素的相对重要性定义了特征的有效接收野。最近的工作提供了一个数学公式和程序来测量有效感受野,实验观察到高斯形状,峰值在感受野中心。更好地理解卷积神经网络中输入像素的相对重要性是一个活跃的研究课题。

上一篇下一篇

猜你喜欢

热点阅读