您的位置:首页 > 编程语言 > Go语言

GoogleNet是怎么理解图像的?谷歌大神教你读懂「神经特征可视化」

2017-11-09 00:00 519 查看


来源:雷克世界

编译:嗯~阿童木呀

概要:特征可视化使我们能够看到在ImageNet数据集上训练的GoogLeNet是如何构建对多层图像的理解的。





边缘(层 conv2d0)





纹理(层 mixed3a)





模式(层 mixed4a)





部分(层 mixed4b & mixed4c)





目标(层 mixed4d & mixed4e)

特征可视化使我们能够看到在ImageNet数据集上训练的GoogLeNet是如何构建对多层图像的理解的。

现如今,人们越来越意识到,神经网络对于人类来说应该是具有可解释性的。针对这些问题,神经网络的可解释性领域已经形成,并随着发展的成熟,两大研究思路已经开始走向融合:特征可视化和属性。





特征可视化通过生成样本来回答有关网络或部分网络所正在寻找什么的问题。





属性(attribution)研究的是一个样本中的哪一部分负责以特定的方式所激活的网络。
(注:作为一个新兴的领域,神经网络的互操作性还没有标准化的术语。属性(attribution)在文献中已经有许多不同的名称—包括“特征可视化”—但近期的工作似乎更倾向“属性”和“显着图(saliency maps)”)

虽然特征可视化是一个强大的工具,但实际上它的工作涉及到许多细节。在本文中,我们将研究主要问题并探讨解决这些问题的常用方法。我们发现,非常简单的方法可以产生高质量的可视化效果。而在这个过程中,我们将引入一些技巧,以探索在神经元反应中的变体,它们是如何相互作用,以及该如何改进优化过程的。

通过优化进行特征可视化

一般而言,神经网络在输入方面是可微的。如果我们想要找出哪种输入会导致某种行为——无论是内部神经元还是最终输出行为——我们都可以使用导数来迭代地调整输入以实现该目标。

从随机噪声开始,我们优化一个图像以激活一个特定的神经元。

虽然从概念上看很简单,但在优化工作方面还存在着微妙的挑战。我们将对其进行探索,并挖掘它们的几种常见方法。

优化目标

我们想要什么样的样本?这是处理样本的核心问题,无论我们是通过搜索数据集来查找样本还是优化图像以从头开始创建。可以说,我们在搜索方面有很多种选择:

不同的优化目标显示网络的不同部分正在寻找。
n:层索引
x,y:空间位置
z:信道索引
K:类指数





神经元
layern[x,y,z]





信道
layern[:,:,z]





层/ DeepDream

layern[:,:,:]2





类对数
pre_softmax[k]





类概率
softmax[k]

如果我们想了解单个特征,我们可以搜索那些具有高值的样本——无论是位于某个单一位置还是整个信道的神经元。我们使用信道目标来创建本文中的大部分图像。

如果我们想要将层作为一个整体来了解,我们可以使用DeepDream目标,搜索层以发现有用的图像。

如果我们想从一个分类器中创建输出类的样本,我们有两个选择——在softmax之前优化类对数,或者在softmax之后优化类概率。我们可以把这些对数视作每个类证据,把概率作为每个给定证据的类的似然值。不幸的是,用来增加softmax函数给予类概率的最简单的方法往往使替代方案不太可能实现,而不是使有用的类成为可能。根据我们的经验,优化前softmax对数会生成具有更好视觉质量的图像。

我们提到的目标仅仅涉及的是可能存在的目标的表面,还有更多的可以去尝试。特别值得注意的是在风格迁移中所使用的目标,它可以告诉我们关于网络所能理解的风格和内容的种类,以及基于优化的模型倒置中所使用的目标,而这有助于我们理解模型所保存和丢弃的信息。我们所涉及的不过是一些简单的知识,要探索的空间还很大。

为什么通过优化进行可视化

优化可以为我们提供一个样本输入,从而产生期望行为。但为什么要如此大费周章呢?难道我们不能通过数据集查找可以产生期望行为的样本吗?

事实证明,优化方法可以成为理解模型真正在寻找什么的强大方法,因为它将把产生行为的事物与那些仅与事件相关的事物区分开来。例如,考虑以下使用数据集样本和优化进行可视化的神经元:

优化还具有灵活性的优势。例如,如果我们想研究神经元是如何共同地来表征信息的,我们可以很容易地去问一个特定的样本将需要变得如何不同,从而可以激活一个附加的神经元。这种灵活性还可以帮助可视化网络训练中的特征演变。如果我们仅限于理解数据集中固定样本的模型,那么像这些类似的主题将更变得难以探索。

另一方面,通过优化对特征进行可视化也是一个巨大的挑战。在下面的章节中,我们将研究获得多样化可视化的技术,从而了解神经元是如何相互作用的。

多样性

我们的样本是否向我们展示了全貌?当我们通过优化来创建样本时,这一点是需要非常注意的。真正的样本可以仅向我们展示一个特征所代表的“小平面(facet)”来误导我们。

数据集样本在这里有很大的优势。通过查看数据集,我们可以找到不同的样本。它不只是为我们激活了一个神经元:我们可以看到整个激活范围,从而看看到底是什么激活了神经元的不同区段。

相比之下,优化通常只能给我们一个非常正向的样本,当然,如果我们有创造力的话,那么即使是一个非常负向的样本也是可以的。有没有什么方法可以使我们获得这种多样性?

通过优化实现多样性

网络的一个给定特征可以对广泛的输入作出响应。例如,在类等级上,经过训练的识别狗的分类器应该能够识别它们的脸部特写以及更宽的轮廓图像——尽管这些图像具有完全不同的视觉外观。Wei等人的早期研究试图通过在整个训练集上记录激活来展示这种“内部类(intra-class)”多样性,对它们进行聚类并对集群中心进行优化,从而揭示出所学习类的不同方面。

Nguyen、Yosinski及其合作者所采用的另一种方法是在数据集中搜索不同的样本,并将其作为优化过程的起始点。这个想法是,在特征的不同方面进行优化,从而从优化中得到的样本将能够对这些方面进行演示。在最近的研究中,他们把可视化类和生成式模型结合起来,即可以对不同的样本进行采样。他们的第一种方法的成功是有局限性的,而生成式模型的方法运行地很好。

我们发现,实现多样性有一个非常简单的方法:在一个目标上增加一个“多样性术语”,这个目标就是推动多个样本彼此互不相同。多样性术语可以采取多种形式。现如今,我们对它们的好处还不太了解。一种可能是,对不同样本的余弦相似度进行惩罚。另一种方法是使用风格迁移中的思想,迫使该特征以不同的风格得以显示。

在较低水平的神经元中,一个多样性术语可以揭示一个特征所代表的不同方面:



简单优化



用多样性进行的优化揭示了四个不同的、弯曲的方面。



数据集样本

不同的特征可视化使得我们能够更精确地确定是什么激活了神经元,以及我们可以做出的程度,并且通过查看数据集样本,做出有关哪些输入将激活神经元的预测。

例如,让我们来看看这个简单的优化结果。

只是独立地看一下,我们可能会推断出在狗头顶部的这个神经元被激活,因为优化显示了眼睛和只有向下弯曲的边缘。然而,从多样性的优化来看,我们看到了不包括眼睛的优化结果,以及一个包含向上弯曲边缘的优化结果。因此,我们不得不扩大我们对这个神经元激活的期望,主要是关于毛皮纹理。根据数据集样本来检查这个假设,结果显示,这是大致正确的。 注意勺子的纹理和颜色与狗的皮毛相似,从而足以让神经元激活。



简单优化



用多样性进行的优化



数据集样本

在更高水平的神经元中,多样性的影响可能更加显著,其中,它可以向我们展示能够刺激神经元的不同类型的物体。例如,一个神经元能够对不同类型的球做出响应,即使它们具有各种各样的外观。



简单优化



多样性优化揭示了多种类型的球



数据集样本

不过,这个更为简单的方法有一些缺点:例如,为了使样本不同造成的压力会导致无关的部分(如眼睛)出现。此外,优化可能会使样本以一种不自然的方式展示。例如,在上面的样本中,人们可能希望看到足球这样的样本与高尔夫球或网球等其他类型球有清晰的分离。如Wei等人提出的诸如基于数据集的方法可以更为自然地将特征分离开来,但是它们可能不会有助于理解模型在不同数据上的表现。

与此同时,多样性也开始呈现出一个更为基本的问题:虽然上面的样本代表了一个大体上一致的想法,但也有一些神经元代表的是一些奇怪想法的混合。下面,一个神经元对两种类型的动物脸部、以及车做出响应。



简单优化



用多样性优化显示出猫、狐狸、以及汽车



数据集样本

像这样的样本表明,神经元不一定是理解神经网络的正确的语义单元。

神经元之间的相互作用

如果神经元不是了解神经网络的正确方法,那什么是呢?在现实生活中,神经元组合在一起来运行以表示神经网络中的图像。单个神经元是激活空间的基本方向,目前并不清楚这些应该比任何其他方向更为特殊。

Szegedy等人发现随机方向看起来和基础方向一样有意义。最近Bau、Zhou等人发现基础方向比随机方向更加具有可解释性。我们的经验与这两个结果大体一致。我们发现,随机方向似乎更加具有可解释性,但要比基本方向的速度要低。

特征可视化的敌人

如果你想要把特征可视化,你可能只是在优化图像,从而使得神经元得以激活。不幸的是,这并不是真的有效。相反,最终会出现一种神经网络的视觉错觉——一种充满噪声且无意义的高频模式的图像,而且是网络会进行强烈响应的。

这些模式似乎是一种带有欺骗性的图像,其实,在现实生活中并不会发行寻找方法以激活神经元的现象。如果你进行优化的时间足够长,你就会看到神经元真正检测到的东西是什么,但是图像是由这些高频模式所支配的。这些模式似乎与敌对的样本现象密切相关。

结论

在过去的几年里,神经特征可视化取得了巨大的进步。作为一个社区,我们已经制定了原则性的方法来创建令人信服的可视化。我们已经发现了一些重要的挑战,并找到了解决这些问题的方法。

在使神经网络具有可解释性的过程中,特征可视化是最具发展前景的方向之一。从它本身可以看出,特征可视化永远不会给人一种完全令人满意的理解。我们认为它是一个基本的构建块,通过与其他工具相结合,从而使人类能够理解这些系统。

在提高特征可视化方面,还有许多重要的研究要做。一些突出的问题包括理解神经元的相互作用,找出哪些单元在理解神经网络的激活中最具有意义,并给出一个特征的各个方面的整体视图。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: