Understanding the Role of Individual Units in a Deep Neural Networks

写在前面:
本文将深度卷积网络的每一层卷积(layer)中的每一个核(filter ∈ R C i n × k s × k s \in \mathbb{R}^{C_{in}\times ks\times ks} RCin×ks×ks)看作一个可解释单元(unit),着重探究下面的两个问题:
1)对于分类网络这种 downstreaming 的结构,每个 unit 与输入待分类图像之间的关系?
2)对于 noise->imageGAN,每个 unit 与最终生成图像之间的关系?


本文考虑对于复杂场景图像的分类(Places365)和生成(LSUN),其图像特点是:复杂的场景同时包含多个类别(class)的若干对象(objects)。

## 原文:
## The basic unit of computation within such a network is a learned convolutional filter.

Units in a Classifier

在场景分类器中出现的对象(object)检测器(detector

首先,理解在卷积的过程中,仅考虑这一层的单独一个核 u u u,发生的操作(op)有:

'''
input: 
    `in_feature` --size=(N,C_in,H_in, W_in)
op:
    1) padding to `in_feature`;
    2) convolution: `u`⊗`in_feature` --size=(N, 1, H_out, W_out);
    3) activation: A(*)
output:
    `out_feature` --szie=(N, 1, H_out, W_out)
'''

我们得到 1 通道的特征谱(feature map)🍺!
我们进一步,记录对应图像 x x x 上每个像素点 p p p ,经过 u u u 后的激活谱在这个位置的值为: a u ( x , p ) a_u(x, p) au(x,p)

假如特征谱的分辨率小于图像的原大小,我们可以先对 map 做上采样(upsampling).

假如我们对这个 u u u 的所有激活值定义一个中间阈值 t u t_u tu ,并令 P x , p [ ∗ ] \mathbb P_{x,p}[*] Px,p[] 表示 map 中,所有激活值满足条件 ∗ * 的像素数量相对所有像素数量的占比。那么我们可以根据计算得到的 map 获取这样一个阈值: t u ≡ max ⁡ t P x , p [ a u ( x , p ) > t ] > 0.01 t_u \equiv \max_t \mathbb P_{x,p}[a_u(x,p)>t]>0.01 tutmaxPx,p[au(x,p)>t]>0.01换句话说,我们希望将所有像素按照激活值大小划取前 1 % 1\% 1% 的像素点。
于此同时,我们可以利用一个训练好的语义分割(semantic segmentation)网络来分割图像 x x x,对每个类别 c c c,分割的结果我们记为: s c : ( x , p ) → { 0 , 1 } s_c:(x,p)\rightarrow \{0,1\} sc:(x,p){0,1},这是一个1 通道的二值掩码图(binary mask)。
下面我们要度量 u u u 与某一类别的对象之间的关系 ,我们通过下面的 I o U \rm IoU IoU 计算一个比率:
I o U u , c = P x , p [ s c ( x , p ) ∧ ( a u ( x , p ) > t u ) ] P x , p [ s c ( x , p ) ∨ ( a u ( x , p ) > t u ) ] {\rm IoU}_{u,c}={{\mathbb P_{x,p}[s_c(x,p)\wedge(a_u(x,p)>t_u)]}\over{\mathbb P_{x,p}[s_c(x,p)\vee(a_u(x,p)>t_u)]}} IoUu,c=Px,p[sc(x,p)(au(x,p)>tu)]Px,p[sc(x,p)(au(x,p)>tu)]

👆上面的公式表示:某一类别 c c c 的对象占有图像像素的区域与单元 u u u 激活前 1 % 1\% 1% 激活值占领的区域,两者之间的 I o U \rm IoU IoU 值。
注意,实际实验中, c c c 不仅指具体的类别,还可以是不同的颜色(color),部分(part),材料(material)。

我们在一个验证数据集上进行实验,其中我们定义了 1825 1825 1825 种分割概念 c c c,包括:对象类别(object classes),对象部分(parts of objects),材料(materials) ,和颜色(colors)。以 V G G 16 \rm VGG16 VGG16conv5_3 层为例,这一层有 512 512 512 个卷积核(units),我们对每个 u u u 计算对应所有类别的 { I o U u , c } \{{\rm IoU}_{u,c}\} {IoUu,c},选择最大的 max ⁡ c I o U u , c \max_c{\rm IoU}_{u,c} maxcIoUu,c 作为这个 u u u 的响应标签。

实验结果 1.1
在这里插入图片描述
我们可视化 V G G 16 \rm VGG16 VGG16conv5_3 层的 512 512 512units 对所有 concepts { c } \{c\} {c} 的响应情况。Notice,根据上面的响应标签方式,不一定所有的 c c c 都可能在这一层被响应到;同一个 c c c 可能同时响应多个 u u u。于是上面的柱形图 ( d ) (d) (d) 表示的是这一层中被响应的 c c c 集合(横轴)以及每个 c c c 对应有多少个响应单元(纵轴)。 ( c ) (c) (c) 则列举一些对应 c c c 的例子,并通过可视化 P x , u [ a u ( x , p ) > t u ] {\mathbb P_{x,u}[a_u(x,p)>t_u]} Px,u[au(x,p)>tu] (猜测这里应该是把对应所有的 c c c 的这个掩码(mask)叠加在一起了)。
** 上面的柱形图的所有柱的值相加不一定等于 512 512 512,作者这里提到,我们在决定是否响应某个标签的时候,还额外加了一个条件: I o U u , c ≥ 4 % {\rm IoU}_{u,c}\ge4\% IoUu,c4%
** 原文是:showing the frequency of units matching each concept.

实验结果 1.2
类似的,还有其他的层——
在这里插入图片描述
我们可以发现:
1)最后一个卷积层被单元检测到的 object 是最多的;
2)在 conv5_1 层,单元检测到的 object parts 是最多的。

实验结果1.3——最有趣一个发现 n o . 1 no.1 no.1
我们现在可以理解并称每个 u u udetector。在 object detector 这一块,一个非常有意思的发现是:在训练集中,即使某一类对象的标签不存在(比如说不需要显式分类),还是会出现专门的 detectors

比如说,在这个场景分类任务中,只有分类场景如 airfieldairport terminalhangarlanding deckrunway。在这些场景中,airplane 的出现是随机的、不总有的,并且我们并不是做具体的对象分类,因此训练集中是不存在这个专门的标签的。

但奇怪的是,在 conv5_3 中的 150 150 150 号单元 u u u,恰好就专门能够检测 airplane。并且达到了平均的 I o U 150 , a i r p l a n e = 9.0 % {\rm IoU}_{150,airplane}=9.0\% IoU150,airplane=9.0%

为了进一步验证这个 u u uairplane 的响应,我们选取含有 1000 1000 1000 个对象类别的数据集 ImageNet,相对于 Places365,其类别集合是互斥的。ImageNet 含有 airlinerwarplane 两种飞机类别,采集一定数目的样本,输入我们的 V G G 16 \rm VGG16 VGG16,检查 conv5_3 150 150 150 号单元的激活谱上的峰值。如果我们设定一个阈值 t u = 23.4 t_u=23.4 tu=23.4,并且根据图像在这个单元的激活峰值是否超过该阈值来判断该图像是否是 airplane,这样粗暴的依据可以实现 85.6 % 85.6\% 85.6% 的分类准确度。
在这里插入图片描述
上面的图,最上面的曲线图,是描述了当 ImageNet 图像是(不是)airliner/warplane 的时候,conv5_3 150 150 150 单元的激活峰值的分布情况,显然对应飞机图像时的均值越大,说明这个 u u u 确实对于检测 airplane 是具有重要相关性的。中间的散点图而是对上面的图的样本的详细分布可视化。下面的图则是一些例子。

Roles of Units in a Scene Classifier

现在我们来讨论一个问题:

How does the network use the above object detector units?

  • 工作 [36][37] 提出: N N \rm NN NN 的许多单元是可以被从网络中移除,通过重新训练后网络依旧能够恢复原来的分类准确度。
  • 工作 [38][39] 提出:评估一个独立的 u u u 的重要性的一个方法是:评估这个 u u u 移除后对网络平均准确度的影响程度。

为了更精确地理解网络中每个 u u u 的因果角色(casual role),我们度量移除每个 u u u 后对网络在每个场景类别的分类效果的影响。(原文:we measure the impact of removing each unit on the network's ability of classifying each individual scene class).
我们通过强制 u u u 的输出是 0 来移除这个 u u u 的功能(即对应的通道特征置零)。
根据前面的 I o U \rm IoU IoU,我们可以对每个类别 c c c,计算所有的 u u u 下的 P x , u c \mathbb P_{x,u}^c Px,uc,然后根据比率的大小排序,取前面的若干个 u u u 作为 the most important units of this class,取后面的若干个 u u u 则被视为不是很重要的。

实验结果 2.1
在这里插入图片描述
( a ) (a) (a) 可视化了 conv5_3 上对应场景 ski resort 最相关的 4 个单元对一些例子的原本响应情况;每一组图上面的文字则是说明当这个 u u u 被移除后,模型对于 ski resort 的分类准确度。
( b ) (b) (b) 量化了移除不同单元,模型对 ski resort 的分类准确度和对 other classes 的分类准确度。

  • 我们可以看出,移除对 ski resort 重要的单元对这个类的分类准确度破坏是很严重的,但是对其他类别的分类准确度到没什么影响(注意这里将问题看作一个二分类问题,即模型只要判断是不是 ski resort 这个类就行了);大量移除对 ski resort 不重要的单元对这个类的分类准确度破坏是相对较小的,但是这直接破坏了模型对其他类别的分类准确度。


实验结果 2.2
在这里插入图片描述
这里比较了对 ski resort 这个类别去除不同数量的重要单元(蓝色)和不重要单元(橙色)对于模型正确识别此类的影响。蓝色的线对应依次去除剩余单元中对此类最重要的 u u u,橙色的西安对应一次去除剩余单元中对此类最不重要的 u u u

一个重要的发现是:通过去除最不重要的单元,单个类别的分类准确度甚至可能提高。(猜测是因为减少了来自其他类别相似 objects 的干扰)。

讨论:这种内部的组织关系——网络依赖于少数的重要 units 来确定某个类别的绝大部分概率,对于所有的类别都是存在的。

实验结果 2.3
在这里插入图片描述
这个图应该只是其中的一类,但是适用于其他所有类,解释同上面的一个图是一样的。
结论:

'''
Each unit is important to a specific set of classes # 可能对于多个场景类别都起作用,所以说是 set
and the object detectors can be interpreted as decomposing the network's 
classification of individual scene classes into simpler sub-problems.
# 意思是说:网络对于具体场景类别的分类,通过 units 分解为不同的 object 检测这样更简单的小问题;
#      不同的 objects 的组合构成一类具体的场景(场景结构化的学习和理解)。
'''


实验结果 2.4
在这里插入图片描述
( e ) (e) (e) 统计了不同的 u u u 强烈响应 c c c 的数目(纵轴);横轴则统计了不同响应数目(响应的泛化性)的 u ′ s u's us 对应每个类别的 I o U \rm IoU IoU 的统计数据特征。

这个图说明,最具可解释性的单元往往对于更多个场景类别都很重要。

结论——对场景分类器的解释:

重要的单元对它们的相关场景类别的分类起到主导性的积极响应,不同单元的结合实现了对具体某一场景类别的高分类置信度。

过渡
可解释单元的出现,如 airplane, snow, treedetectors 是依赖于训练集的标签形成的,以将是居世界划分为成百上千的场景类别。
那么,是否可能一个网络能够从视觉数据自动推理出这样的 concepts?—— G A N : n o i z e → i m a g e {\rm GAN}:noize \rightarrow image GAN:noizeimage

Units in a G A N \rm GAN GAN

G A N \rm GAN GAN 中出现的对象检测器
Description图例
结构上, G A N \rm GAN GAN 是一个分类器的逆,将输入的随机隐编码向量映射为一张真实的图像。

这个过程是无监督的。

我们在一个 P r o G A N \rm ProGAN ProGAN 上测试,其中包含 15 15 15 层,最后输出 256 × 256 256\times 256 256×256 的图像——

其中的可视化与前面的 Classifier 是一样的操作,同样阈值 t u t_u tu 截取单通道特征谱上的前 1 % 1\% 1%.

我们说:unit 381 activates on lamp shades in a direction, not detecting objects in the image, 因为 u u u 是在图像生成之前激活的。
在这里插入图片描述

实验结果 3.1
在这里插入图片描述
上面的图展示了不同卷积层的 units 对生成图像上的 concepts 的响应情况,这时候我们发现,与 Classifier 相反,大量的 concepts 是出现在了网络的低层;并且 layer5units 匹配到最多的 objectsparts
在这里插入图片描述
上图同样展示了那些 I o U > 4 % \rm IoU > 4\% IoU>4% 的单元最佳响应的 concepts
上面的两个图中的柱形图我们可以发现——在 G A N \rm GAN GAN 中,units 并不倾向于匹配某一类具体的像素模式(匹配 objects 的种类相对较少),而是倾向于匹配某一个具体类别的不同的外观属性(匹配 part 的种类相对更多)。

实验结果 3.2
在这里插入图片描述
与前面的利用 a x , u a_{x,u} ax,u 分类相似,这里使用 layer5 314 314 314 号单元,其经 I o U \rm IoU IoU 比率计算,是强烈响应 window 的。我们选用 t u = t 314 = 8.03 t_u=t_{314}=8.03 tu=t314=8.03 作为阈值,来区分 image with a large window(蓝色线) 和 image w/o a large window(橙色线),可以实现 78.2 % 78.2\% 78.2% 的准确率。
** 这里窗户的大小看语义分割的结果中窗户的面积占比图像整体面积的大小(阈值是 5 % 5\% 5%)。

结果发现在激活值较低的时候,生成大窗户的厨房图像的可能性还是挺高的;但是当激活值达到一定数值后,就几乎都是生成含有大窗户的照片。

G A N \rm GAN GAN 中 units 的角色

The correlations between units and generated object classes are suggestive, but they do not prove that correlate with an object class actually cause the generator to render instances of the object class.
意思是:类别 c c c 相关的单元 u u u 与这个类别 c c c 之间是正相关的;但是,模型前期该 u u u 的高激活并不保证最终生成图像中一定含有这个 c c c 的对象实例。

实验结果 4.1
我们在 LSUN 数据集上训练一个 P r o G A N \rm ProGAN ProGAN,取 layer4,计算每个 u u utree 之间的 I o U u , t r e e {\rm IoU}_{u,tree} IoUu,tree,重新排序,
在这里插入图片描述
上图将依次去除剩余 { u } \{u\} {u} 中对于 tree 响应最强的 u u u,检查原来的噪声新生成的图像中,tree 的面积变化情况。我们发现,在移除前几个 important units 的时候,对应生成图像上的 tree 的减少是十分迅速的;至于后面大量的 not so important units 存在与否,则对结果影响就很细微了。
我们可以可视化一些结果:
在这里插入图片描述
从上图,但有关 treeunits 被移除后,生成的图像依旧是真实的(realistic)。
尽管生成的 tree 减少了,但是其他的 objectsbuildings 并没有发生改变(这不正是语义图像编辑所期望的吗?就算是 GAN Dissecton 也会有一些变化 😏)
并且,更强大👍的是,移除掉 tree 后,原先被遮挡的后面的 objects 被恢复(be hallucinated)了🐮🍺,这不就好像 A d o b e \rm Adobe Adobepsd 里的图层遮挡吗?👀

因此,这里我们可以大胆结论:
生成器貌似倾向于合成多余的细节,这些多余的细节对于最后的图像渲染是不必要的(如被遮挡了)。如此,当 tree 被移除的视乎,就只是原本被 tree 遮挡的 building 部分重新展示出来,并不是重新生成,所以才能保持新的局部与整体自然衔接。

'''
这里笔者觉得是当然的😬:
1)首先,每个卷积核都是遍历整张图像的;
2)从图层的角度考虑多核的卷积,实际上就是每个通道生成一个图层,最后被叠加起来。
'''

最后作者在文中说了一句:
The appearance of such hidden details strongly suggets that the GAN is learning a structured statistic model of the scene that extends beyond a flat summarization of visible pixel patterns
实际上👆的就是对于笔者对 G A N \rm GAN GAN 的理解的证明(直觉可能是对的,但是你要证明或者推翻它!否则直觉是没有用的)

实验结果4.2
前面我们讲到,通过移除 units 可以将原生成图像中的某些 objects 进行消除;同样我们也可以通过修改 unis 的激活情况来增加新的 objects
我们以 LSUN 上的 church 数据训练的 P r o G A N \rm ProGAN ProGAN 为例,选择响应 door 的前 20 20 20unitslayer4)。我们在图像上涂选出一个区域,构造一个 binary mask,下采样到 layer4,将对应这个区域的对应这 20 20 20 个通道的特征谱的激活值修改为他们的 t u t_u tu 值。
可视化结果如下:
在这里插入图片描述
如上图所示,最终渲染图像确实增加了 door 的对象。

更🐮🍺🍻的是,看 4 4 4 这个例子,如果我们要求它加在树上,是不可能的,尽管从渲染的角度看这是当然的(可能有生成,但是被树挡住了)。

实验结果 4.3
在这里插入图片描述
上图为了进一步验证 4.2 4.2 4.2 最后的猜测,即 objects 的生成是考虑场景语义信息的,作者尝试在不同的 ’objects 上添加 door,发现在一些现实中不可能出现的场景下,出现 door 的几率是很小的。

结论

G A N \rm GAN GAN 不仅学习到一些 units 来决定最终生成图像上是否要含有某些 objects,它也通过 units 学习到一个可计算的结构,这个语义结构更能够防止渲染一些不自然的图像,譬如装在 skydoor

应用

现在我们希望从更深入的角度理解对分类器的对抗攻击和对生成网络的生成图像编辑。

分析对分类器的对抗攻击

用一张图理解攻击目的:
在这里插入图片描述
对抗攻击就是攻击的一种方法,本文使用的是 C & W \rm C\&W C&W 算法对分类器作攻击。
将一些区域的激活值的改变可视化如下:
在这里插入图片描述
上图可视化了图像在攻击前后的与 ski resort 最相关的 4 4 4units 和与 bedroom 最相关的 4 4 4units 的激活峰值的变化情况和对应的响应分布。
\
可以发现:攻击算法是通过降低特征提取过程中对 ski resort 相关的 objects 的检测,如 snow, mountain, house, and trees,同时提高模型对目标伪标签相关的 objects 的检测,如 beds, person heads, sofas 等。
下面的图进一步量化了,不同的源目标和攻击目标下,对应源类和目标类的最相关 u u u 的激活峰值的相对大小。
在这里插入图片描述
很明显,其他无关的 units 是几乎不变的。
** 以上的实验中,都是攻击成功率达到 99 % 99\% 99% 以上。

使用 G A N \rm GAN GAN 做语义编辑

在这里插入图片描述
类似于 G A N   D i s s e c t i o n \rm GAN~Dissection GAN Dissection D e m o \rm Demo Demo,作者在客户端指定编辑区域和编辑方法(增加或者删除某一类型的 objects);后台通过激活(使用阈值)或者置零选中相关 class 的前 20 20 20units 来对原 n o i s e noise noise 重新渲染图像。


写在后面:
好了短短 6 6 6 页,却比许多其他的顶会顶刊的内容充实的多,👏
结合之前这个人的其他 N N \rm NN NN 可解释性文章,套路基本上就是这些。


其中讲的不对的地方还请各位读者不吝赐教🙏!

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值