Visualizing and Understanding Convolutional Networks阅读笔记
摘要
CNN模型已经取得了非常好的效果,但是在大多数人眼中,只是一个“黑盒”模型,目前还不清楚为什么它们表现得如此好,也不清楚如何改进。在本文中,我们探讨了这两个问题。我们介绍了一种新的可视化技术,可以深入了解中间特征层的功能和分类器的操作。通过使用类似诊断的方式,作者还得到了比 AlexNet 更好的结构 ZFNet;最后,作者还通过在 ImageNet 上训练,然后在其他数据集上进行 fine-tuning,得到了非常好的结果。
1. 前言 [ 1 ] ^{[1]} [1]
CNN在图像分类和物体检测领域大放异彩,主要是以下几项因素的作用:1).数以百万计带标签的训练数据的出现;2).GPU的强大计算能力,使得训练大的模型成为可能。
尽管如此,从科学的角度来看,这是令人很不满意的。因为我们并不能解释这个复杂的模型,也就不理解为什么它能达到这么好的效果,而不了解这个模型如何工作和为什么有作用,我们改进模型就只能使用试错法。这篇论文提出了一种新的可视化技术,揭示了模型中任意层的feature map与输入之间的响应关系。
2. 使用反卷积网络可视化
文中的卷积神经网络架构如下图所示:
为了理解卷积网络,需要理解中间层的特征值,反卷积网络提供了办法。反卷积网络的每一层都可以看做卷积网络中对应层的逆过程,它们拥有相同的卷积核和池化索引,因此反卷积将特征值逆映射回了输入图片的像素空间,借此说明图片中的哪些像素参与激活了该特征值。下图将卷积网络和反卷积网络的过程合并,展示了两者各层之间的关系,且两者在整体上互为逆过程:首先,下图右下,卷积网络将一张图片作为输入,计算得到各层的特征表示;为了验证某层一个具体的特征值,我们将该层特征值之外的所有值置零后,将其作为反卷积网络的输入,经过反卷积网络每一层的操作,该特征值被映射回了输入图片的像素空间。下图中下面部分展示的是反池化过程。
[
2
]
^{[2]}
[2]
反卷积网络的构成:
[
2
]
^{[2]}
[2]
- 反池化操作;理论上,卷积网络中的最大池化操作是不可逆的,但可以通过池化索引进行近似可逆。下图也是反池化操作的示意图。
- 反激活函数;卷积网络中采用ReLU确保特征值非负,为了确保正逆过程的一致性,我们将反卷积网络每一层的重构特征也通过ReLU得到非负值。
- 反卷积操作;即为置换卷积,可参考[3]。
3. 卷积网络可视化 [ 2 ] ^{[2]} [2]
3.1 特征可视化
下图展示了训练完成后,各层特征值的可视化结果。对于某一层某一个特定位置的特征,选取了9个最大的激活值(由9张输入图片经过卷积网络生成),并分别将其映射回输入图片的像素空间,可视化结果的旁边是特征对应的感受野的输入图片截图。从Layer1 特征图中选了9个位置的特征值,每个特征值选了最能激活该值的9张图片;从Layer2 特征图中选了16个位置的特征值,每个特征值选了最能激活该值的9张图片。 几点启示:
- 原图的截图比可视化结果的多样性更大,因为后者仅仅关注了截图中有判别能力的结构。举例来说:层5第1行第2列的9张输入原图差异很大,但同一特征值的可视化结果都关注了背景中的草地。
- 每层特征的可视化结构展示了各层的特点。层2展示了物体的轮廓和颜色的组合,每个特征的可视化结果大致相同(较小的不变性);层3有了更复杂的不变性,主要是相似的纹理(1行1列的网格特征、2行4列的文本特征);层4的不同特征对应的可视化结果有显著的差别,开始展现类与类之间的差异(1行1列都是狗狗的脸,4行2列都是鸟的腿);层5的不同特征对应的可视化结果对应了类别间的物体的整体差异(不再是局部)(1行1列键盘,4行的狗)。因为感受野相应的变大了。
- 层次越高,不变性越强。
3.2 训练过程中特征的演化
在每一层随机选取6个特征,在训练过程中的第[1,2,5,10,20,30,40,64]个epoch时,将样本中最强激活的特征映射回输入图片像素空间。可以看出:底层特征很快可以趋于稳定,但高层特征需要更多次的迭代才能收敛,证明了迭代次数的必要性。
3.3 特征不变性
下图第1列是5张示例图片的三种变换,分别为平移、缩放、旋转;列2和列3是层1和层7变换图和原图间的特征向量的欧几里得距离;列4是对应图片分类可能性的变化。总体来说:微小的变换对于低层的特征有显著地影响,而层越高,平移和缩放对结果的影响越小;但卷积网络无法对旋转操作产生不变性,除非物体有很强的不对称性。
3.4 架构选择
可视化训练模型不但可以洞察CNN的操作,也可以帮助我们在前几层选择更好的模型架构。通过可视化AlexNet的前两层(图中b,d),我们就可以看出问题:
- 第一层filter是非常高频和低频的信息,中间频率的filter很少覆盖;
- 第二层的可视化有些具有混叠效应,由于第一层比较大的stride。
为了解决这些问题:
- 将第一层的filter的尺寸从 11 × 11 11\times 11 11×11 减到 7 × 7 7\times 7 7×7;
- 缩小间隔,从4变为2。
这两个改动形成的新结构,获取了更多的信息,而且提升了分类准确率。
3.5 遮挡敏感性
当模型的分类性能提高时,一个自然而然的想法就是:分类器究竟基于什么信息做出了判断?是基于图片中的物体,还是图片中与物体无关的上下文信息。下图采用灰色矩形遮挡输入图片的不同部分,并将遮挡后的图片输入网络得到分类器的输出,1~3行分别是博美犬、车轮和阿富汗猎犬;a列是原图,b列是遮挡不同部位后得到的第五层的热力图(选取了不遮挡图片最大激活值所在的通道),c列是不遮挡原图第5层最大激活值的可视化结果,其余3张来自别的输入图片,d列是遮挡不同部位后,正确分类可能性的热力图,e列是遮挡不同部位后,最可能的分类结果。总体来说:
- b列说明:当遮挡了可视化结果对应的原图部位时,对应的特征值会急剧下降;
- d列说明:遮挡博美犬脸的部位、车轮部位、阿富汗犬部位,正确分类的可能性急剧下降。
参考文章
[1] 知乎—Deep Visualization:可视化并理解CNN
[2] 知乎—“直观理解”卷积神经网络(一):反卷积(Deconvnet)
[3] CSDN—【机器学习】详解 转置卷积 (Transpose Convolution)