作者 | 李科雨
编辑 | 陈大鑫
我们都知道,深度神经网络擅长查找可解决大型数据集上复杂任务的分层表示。
而对我们人类来讲,应该如何理解这些学习得到的表示呢?
今天AI科技评论介绍的这项工作中,MIT朱俊彦团队&港中文周博磊等人主要介绍了对网络的解剖,这个网络框架可以系统地识别图像分类和图像生成网络中各个隐藏单元的语义。
论文链接:https://arxiv.org/pdf/2009.05041v1.pdf
开源链接:https://github.com/davidbau/dissect
项目网站:https://dissect.csail.mit.edu
首先,本篇文章分析了经过场景分类训练的卷积神经网络(CNN),并发现了与各种物体对象概念相匹配的单元。
研究结果发现,神经网络已经学到了许多对象类的特征,这些学习得来的结果在场景的分类中起着至关重要的作用。
其次,研究人员使用类似的分析方法,分析了生成场景的生成对抗网络(GAN)模型。通过分析在激活或停用少量隐藏单元时所做的微小改变,研究人员发现了可以在适应上下文语境的同时,从输出场景中添加和删除对象。
最后,本篇文章还将本文分析框架使用于理解对抗攻击和语义图像编辑的两个应用上去。
1
每个神经元的使命之探索
想必大部分深度学习工作者对于应用前沿深度框架已经驾轻就熟,然而,有多少人有想过,在越来越复杂的网络框架和越来越多的神经元数量中,每个神经元本身所起到的作用?
这不,MIT朱俊彦团队以及港中文周博磊的力作——《Understanding the role of individual units in a deep neural network》就深入讨论了这个问题,并且已经成功被PNAS(Proceedings of the National Academy of Sciences of the United States of America,美国科学院报)接收。
在这篇文章中,作者不仅详尽展现了团队成员这些年在此领域所做的探索和努力的成果,还启发性地提出了此项研究的两个潜在应用,接下来,我们一起来深入详细了解一下此项有趣的伟大工程吧:
深度网络中独立隐藏单元可以教会我们神经网络是如何解决复杂问题吗?
在最前沿的深度神经网络研究中, 研究者们已经观察到,许多独立的神经单元可以对应一些人类可以理解的具体概念,而这些概念是训练之初人们并没有主动交给网络去学习的,比如:物体(对象),区域(部分),性别,语境,结构,事态,感情等等。
而找到这些具有实际意义的抽象概念,是深度学习的主要目的之一,然而,至今,每个具有明确涵义的单元的出现,以及在网络中扮演的角色并不能被非常好的理解。
因此,本篇文章就开始了灵魂发问:
“我们可以量化单个概念单元的出现吗?哪种具体概念可以被对应到呢?它们又服务于哪个函数呢?”
当一个神经网络包括一个激活树的生成单元的时候,我们希望去知道这到底是虚假的关联,抑或是因为某些逻辑上的原因,使得网络在高层次上对树这一对象进行建模的过程得以显露。
为了研究以上问题,朱俊彦&周博磊团队引入了网络解剖模型,此模型主要对深度卷积神经网络(CNN)的语义概念进行了系统的映射。
在此类网络中,基本的计算单元是一个学习过的卷积过滤器,而这是解决一系列计算机视觉领域中广泛的判别和生成任务的最新结构。
通过将每个神经元的活动和对于人类的可解释模式匹配任务(比如物体类别检测)进行对比,神经网络解剖可以定义,可视化和量化独立神经元的具体角色。
和前人研究不同的是,本文直接对网络内部的计算进行了解释,而不是训练一个辅助解释模型。
在本文的处理中,研究人员主要将在两种不同任务上训练的模型进行了解剖,这两个任务分别是图像分类和图像生成。
研究人员发现,一个训练好的网络包含和高层次视觉概念相对应的神经单元,而这些并没有在训练数据中标记出来。
举个例子,当模型被训练用来分类或者生成自然风光图片的时候,两种网络都出现了和“树”的概念相对应的独立神经元,即使在训练过程中,研究人员从来没有教给神经网络“树”的概念。
而这一工作,可以促使研究人员利用激活或者关闭神经元的方法,进一步测试网络行为的推理结构。
下面是对两种网络的探索的简单概括:
- 在分类器中,本文主要使用这些干预措施,去探索了一小部分的对应视觉具体概念的神经单元是否可以解释某个特定类的分类表现。 举个例子,研究团队探索了当移动一部分检测雪,山脉,树和房屋的神经元之后,整个网络将图像分类为滑雪胜地的能力将如何被影响。
- 在场景图像生成器神经网络中,研究人员探索了对应于具体对象的单元是如何影响风景中具体物体的渲染的。 比如,移动树单元是如何影响输出图像树的外观和其他物体的展现的。
最后,使用两个应用场景,本文证明了该研究发现的实际意义:
- 研究人员展示了,在某个分类器上的对抗攻击其实可以被理解为对对应于某个类的重要神经元的攻击。
- 同时,研究人员将单元干预措施使用在生成器上,通过直接操纵神经元的机制,使得人们可以在风景画上修改诸如树和门之类的语义概念。
说了这么多,实验结果如何呢?下面我们一起来看看实验的具体效果吧:
2 实验结果
景色分类器中物体检测器的出现
首先,在景色分类任务训练时,研究人员对物体检测器对应的单元进行了定义。具体来说,研究者对VGG-16结构的CNN网络进行了分析,而分类任务则使用了从MIT计算机科学和人工智能实验室风景识别数据库中提取的Places365数据集,将图像分为365个风景类别。
研究人员分析了13个卷积层中所包含的所有单元,并将高于阈值(对应于单元u的激活函数
的top1%值)的激活区域进行高亮,结果如图下所示:
通过上图,我们可以看出,此区域对应于人类的头部。
接着,为了定义对应于语义概念的过滤器,研究人员使用了图像分割模型来去衡量每个过滤器和视觉概念c的一致关系,该分割模型可以预测图像x位置p的视觉概念c的存在。
为了量化概念c和单元u的对应关系,研究人员使用了IoU(Intersection Over Union)比率:
研究人员在支持验证图像集上计算了IoU比率。在验证集上,针对1825个分割概念c(包括物体类别,物体的一部分,材料和颜色),每个单元都有自己的得分。接着,研究人员根据最高得分的匹配概念对单元进行了标注。
下面几张图展示了在具有最高单元激活函数值的五张图片中部分具有标签的概念检测单元:
飞机(物体):
人类头部(物体部分):
材料:
研究人员将conv5_3对应于每个分割概念的单元罗列了出来(不包括IoU比率 < 4%的单元),这个结果可以展示对应于每个语义概念的单元的出现频率:
在不同卷积层中,最后一层具有最大数量可以被单元检测出的物体类别,然而,检测物体部分的单元数量在之前(conv5_1)就达到了峰值:
很有趣的是,即使在训练的时候并没有标记,物体检测器依然出现了。下图展示了单元150(对应于物体飞机)在飞机和非飞机样本图像上的活跃度:
场景分类器中神经元的角色
研究到这一步,研究人员又开始灵魂发问:
上面讨论的图像分类神经网络是如何利用这些物体检测单元的呢?
针对网络压缩的研究已经发现了,在保证整体分类精度的同时重新训练的时候,许多神经单元其实是可以被移除的,针对这个问题,研究单个神经元的移除对整体平均网络精度造成的影响,就是一种估计单个神经元的重要性的方法。
为了可以更好的理解每个单元的逻辑角色,MIT的研究团队评估了单个单元对网络分类单个产经类别能力造成的影响。而移除单元的方法,则是强制某个确定的单元输出零值,同时保证网络的其他部分保持完整。
同时,网络并没有被重新训练。此外,研究人员使用在某个特定的类与其他所有的类之间做判别这种分类任务,对单个类别的分类准确度进行测试。
通过找到针对每个类别最重要的神经单元,研究人员揭露到了物体和场景之间的关系。比如,下图展示了针对类别“滑雪胜地”,在conv5_3层中最重要的四个单元:
在移除单元261,149,242和105之后,在“滑雪胜地”这一类别上的分类准确度遭到了最大的破坏。具体来说,这些单元检测到了“雪”、“山脉“、”房屋“和”树“这四类物体,而这些物体对于判断类别是否为”滑雪胜地“的过程中起着至关重要的作用。
为了检测网络对“滑雪胜地”的分类能力是否只取决于最重要的单元,研究人员对选择出的不同单元分别进行了移除,结果如下图:
结果显示,当移除最重要的四个单元之后,对“滑雪胜地”分类准确度从81.4%降低到了64%,而当最重要的前20个神经单元被移除之后,准确度降为了53.5%,而这一值,已经几乎接近随机分类50%的准确度,这两个操作对于所有类别的分类准确度来说,并没有造成太大的影响。
而如果只移除剩余492个神经单元之后,分类准确度只降到了77.7%,于此相对的是,对于所有类别的分类准确度来说,这一操作具有毁灭性作用——准确度从53.3%瞬间降低到了2.1%。
下图详细展现了移除最重要和最不重要神经单元对“滑雪胜地”分类准确度的影响曲线:
从上图可以看出,该网络对“滑雪胜地”类别的分类准确度绝大部分依靠最重要的几个神经单元。甚至,在移除最不重要的单元之后,单个类别的准确度还得到了一定程度上的提升。
进一步的探索证明,这个特定的内部组织——在此神经网络中,针对某个单一输出类的准确度高度依赖于一小部分的重要单元,适用于所有类别。下图展示了针对365个风景类别的不同神经单元移除情况对应的准确度分布密度曲线:
从上图我们可以看出,在conv5_3中,由单元组成的物体探测器的出现并不是一个假象:每个单元都对特定类集合有着重要作用,同时,物体探测器的出现可以被理解为:它将网络对单个风景的分类分解为了更简单的子问题。
为什么一些神经单元与实际语义概念可以匹配得如此美妙,而其他的单元则不可以呢?下图展现了最具有可解释性的单元,是那些同时对许多输出类别都很重要的单元,而那些只对一个(或者无)类别重要的单元的解释性更差,这一过程主要是通过对IoU的评估来完成的。
接着,研究人员发现了,重要单位与其相关的类别主要呈正相关,不同单元的组合为每个类别提供支持。
以上的研究结果给了新的启发和疑问:
可解释的单元的出现是依赖于将视觉世界分为数百个场景图片的训练标记吗?可能对场景的分类学对于学习物体来说很重要。或者,神经网络可以从视觉数据本身去推断某些概念吗?
为了探索这些问题,研究人员进一步对无监督任务训练出的模型进行了相似的实验。
对抗生成网络中物体检测器的出现
生成对抗网络(GAN)模拟训练集中真实图像分布,来学会合成随机真实图像。从结构上讲,训练有素的GAN生成器是分类器的反面——它从随机输入的潜矢量产生逼真的图像。与分类不同,它是一种无监督的设置:GAN没有提供人工注释,因此网络必须自己学习图像的结构。
很明显的,研究人员观察到,GAN可以学习一个图片的全局语义:举个例子,在潜在矢量之间的插值操作可以平滑地改变一个房间的布局,或者改变一个物体的质地。团队人员希望去了解到,GAN是否可以同时学习去解构局部语义,比如,网络的内部单元是否可以将场景的生成表示为有意义部分的层次结构。
研究人员测试了被训练模仿LSUN厨房图像的Progressive GAN图像。这一网络结构由15个卷积层组成。给定一个从多变量高斯分布采样出512维的向量,在经过15层之后,这个网络结构生产一个256*256大小的实际图像,如下图所示:
很重要的事,生成器中的逻辑流和分类器是相反的:当单元381激活图像中的吊灯区域的时候,它其实并没有检测图像里的吊灯,因为这一过程是在图像生成之前就出现的,相反,这个单元是渲染吊灯物体的计算过程中的一部分。
为了定义在网络里和物体类别单元的位置,研究人员将网络解构应用于网络中的每一层。在实验中,参考的分割模型和阈值和用来分析VGG-16分类器的相同。
然而,和分析和输入数据中对象之间关系不同的是,研究人员分析了和输出图像中的物体之间的关系,如下图所示:概念单元数目的极值的出现并没有像在分类器那样出现在网络的边缘——它出现在中间层——第五层具有最大数量的物体和部分类别。
下图展示了每个对象,物体部分,材质和颜色在第五层中和单元的对应关系,其中IoU>4% ,和分类网络相似的事,比如“烤箱”和“椅子”之类的视觉概念和许多单元对应。而和分类器不同的是,对应于某些单元的物体部分种类大于整个物体的种类:
上图显示了,神经单元并没有严格的对应于某种模式,而是展示了广泛的视觉多样性,以至于与每个类对应的外形模式都不同:比如对应于烤箱的不同款式或者颜色,抑或是厨具的形状。
接下来,研究人员将对应于窗户的单元314作为图像分类器,结果发现在大窗户被生成与没有大窗户生成时候这一单元的活跃度的巨大差异。接着,仅仅一个简单的阈值(激活峰值>8.03%)即可令预测生成图像是否有大窗户这一任务具有78.2%的准确度:
然而,分布密度曲线显示了包含大窗户的图像在不激活单元314的情况下也能被频繁生成,下面是两个样本例子:
这些例子可以表明,其他单元也具有生成窗户的潜力。
GAN中神经元的角色
神经单元和生成物体的类别之间的关联具有一定启发性,但是它并没有证明和某个物体类别相关的神经单元的确使得生成器去渲染了这些物体。为了更好的理解神经单元在GAN生成器中的逻辑角色,研究人员将直接移除或者激活某些神经单元的情况下,测试了生成器的输出结果。
首先,研究人员连续将一部分代表树的单元从Progressive GAN中移除(此GAN是在LSUN教堂场景数据集中训练的),然后根据
将第四层的单元进行了排序,来定义和树最具有关联的单元。
随着这些“树单元”的逐渐移除,GAN的生成图像中树的含量和大小都在逐渐减小。一万个随机生成的图像显示,将20个和树关联最大的神经单元移除之后,生成输出中代表着树的单元数量减小了53.3%:
当“树单元”被移除的时候,生成图像的真实度几乎没有什么变化,虽然生成的树越来越少,个头也越来越小,其他的诸如建筑之类的物体并没有什么变化。
显然,被树遮挡的建筑的一部分逐渐生成出来,就好像是移除的树暴露了它后面的墙和窗户一样。生成器看上去比原来计算出了更多的细节,而这些藏在树后面的建筑的细节只有在压制树的生成之后,才能被展现出来。
这些隐藏的细节明显表明了GAN学习到的是图片的结构信息,而不是视觉像素模式的简单扁平总结。
通过强制改变神经单元,研究人员发现可以将新的物体加入到生成场景中。在户外教堂GAN中,他们使用
找到了在第四层中和门最相关的神经单元。
在测试的区域中,这20个单元的激活值都被强制设定为最高的
值,下图展示了在两个生成图像上的结果:
尽管对四个样本的插值方式一样,在结果中,每个门的情况并不一样:在1-3中,新生成的门具有合适于当下语境的大小,风格和位置,而在4中,当“门单元”在树上激活的地方,图像中并没有出现新的门。
下图展示了在不同地方激活“门单元”的时候结果的敏感度,在某些位置,门可以轻易地被添加上,例如在窗户上,而在天空和树上,添加门几乎是不可能的。
通过研究无监督图像生成问题,一个GAN网络可以学习生成类似于门和树之类的物体,不仅如此,通过神经单元,它还学习到了有效的计算结构,使得它能够有效阻止在无意义的位置上渲染出某些物体,比如在树上以及天空上渲染出一个门出来。
3 实际应用
对分类器的对抗攻击的分析
在图像分类器对对抗攻击的敏感性领域的研究很活跃,为了将攻击的过程可视化来更好地理解,作者指出,相关研究者可以研究这些攻击在重要物体检测器上的影响。
在下图中,经过Carlini–Wagner优化方法,一个被准确分类滑雪胜地图像被攻击成了“卧室”,这个攻击算法计算了一个微小的扰动,而当此微小的扰动被加入之后,结果图像在肉眼完全无法和原图区别开的同时,被错误分类为了卧室,是不是很神奇?
为了更好的理解这个攻击是如何具有如此强大的威力,研究人员分别研究了滑雪胜地和卧室中最重要的四个神经单元,下图将原图和对抗攻击之后神经单元的激活情况做了可视化:
结果显示,通过降低对雪,山脉,房屋和树的检测以及增加床,人物头部,沙发检测器的活跃程度,此攻击成功戏耍了分类网络(尽管实际情况是,这些物体并没有在图片中出现)。
下图显示了,受到攻击之后,改变最大的单元,就是那些对某些类别最重要的那些单元。
使用GAN的语义绘画
除了在对抗攻击上的应用,理解神经单元的作用之后,通过直接操控神经单元,研究者还可以创造一个可以控制神经网络的交互接口。
MIT&港科大团队将这个方法应用在GAN上,创造了一个交互绘画应用。与使用色板进行绘画不同的是,这个应用可以令人们直接使用高层视觉概念画板进行创作。每个视觉概念都和具有最大IoU的神经单元相关。
下图展示了该交互接口:
当用户添加一个物体的概念的时候,对应的神经单元得到了激活,反之,当用户在擦出物体的时候,对应的神经单元被置零。
下图展示了当用户添加一个物体时的一个典型结果:
GAN在像素级别的细节上,能够做巧妙的处理,使得场景保证了真实性。多种改变的组合可以得到创造性的效果。
研究人员还放出了图片绘画编辑的动态效果:
详细的demo可以访问网站http://gandissect.csail.mit.edu.获得哦!
另外,要想进一步了解本文使用的数据集,测试网络和参考模型,可以去原文一探究竟。
最后,周博磊本人也在知乎上分享了本文研究背后5年的一系列曲折复杂又精彩的故事:《一个神经元的价值和一个神经病的坚持》,欢迎大家阅读。
传送门:https://zhuanlan.zhihu.com/p/237430657