曲线检测神经元

2020-06-30 21:28:57

我们详细研究过的每个视觉模型都包含能检测曲线的神经元。早在2013年的文献中就已经暗示了视觉模型中的曲线检测器(参见Zeiler&;Fergus中的数字),神经科学中也对类似的神经元进行了仔细的研究。我们在先前对早期视觉的概述中简要讨论了曲线,但希望更深入地研究它们。这篇文章是深入研究曲线检测器的三篇文章的第一部分:它们的行为,它们是如何从早期的神经元中构建的,以及它们在模型中的流行程度。

我们之所以这样做,是因为我们认为可解释性社区在几个关键问题上存在分歧。具体地说,神经网络表示是否由有意义的特征 - (即跟踪图像的可伸缩属性的特征)组成?一方面,有许多论文报道了一些看似有意义的功能,如眼睛检测器、头部检测器、汽车检测器等等。与此同时,有相当数量的怀疑,只有部分反映在文献中。一个令人担忧的问题是,表面上看起来有意义的特征实际上可能并不是它们看起来的那样。几篇论文提出,神经网络主要检测纹理或难以察觉的模式,而不是前面描述的那种有意义的特征。最后,即使存在一些有意义的功能,它们也可能不会在网络中扮演特别重要的角色。一些人通过以下结论来协调这些结果:例如,如果人们观察到看起来像是狗头检测器的东西,那么它实际上是与狗头相关的特殊纹理的检测器。

这种分歧真的很重要。如果每个神经元都是有意义的,并且它们的连接形成了有意义的电路,我们相信这将开辟一条完全逆向工程和解释神经网络的道路。当然,我们知道并不是每个神经元都是有意义的,就像在放大中所讨论的那样,我们看到的主要问题是我们所说的多语义神经元,它们对多种不同的特征做出反应,似乎是为了将许多特征压缩到更少的神经元中。我们希望这件事能解决。但我们认为它足够近,这条路很容易走。不过,我们的立场绝对不是共识。此外,这似乎好得令人难以置信,在其他领域也出现了类似的失败承诺。例如,遗传学过去似乎一直乐观地认为,基因具有个体功能,人类基因组计划将使我们能够“挖掘奇迹”,这一立场现在似乎被认为是天真的。 - 的怀疑绝对是有根据的!

我们相信,曲线检测器是在这一分歧上取得进展的一个很好的工具。曲线检测器看起来像是边缘检测Gabor滤波器的一小步,社区普遍认为Gabor滤波器通常形成于第一卷积层。此外,人工曲线很容易生成,为严格的研究打开了许多可能性。事实上,它们只有几层卷积层,这意味着我们可以跟随每一串神经元回到输入。同时,该模型实现的用于曲线检测的底层算法相当复杂。如果这篇论文让怀疑者相信至少存在曲线检测器,那似乎是向前迈出了实质性的一步。同样,如果它出现一个更精确的分歧点,那也将推动对话。

在进行详细的实验之前,让我们先来看看3b中的10条曲线神经元是如何工作的,这是一个高水平的略微简化的故事。

每个曲线检测器都实现了相同算法的一个变体:它响应各种各样的曲线,优先选择特定方向的曲线,并且随着方向的改变逐渐减少触发。曲线神经元不受外观属性的影响,如亮度、纹理和颜色。

曲线探测器具有稀疏的激活,仅对图像的10%的空间位置感受场大小的裁剪做出反应。在ImageNet上,通常在他们开火时激活得很弱。当它们被强烈激活时,它是对具有与其特征可视化相似的方向和曲率的曲线的响应。

值得后退一步反思一下,像曲线检测器这样看似有意义的功能的存在是多么令人惊讶。这个网络没有明确的动机去形成有意义的神经元。这并不是说我们优化了这些神经元,使其成为曲线检测器!相反,InceptionV1被训练成将图像分类成从曲线中移除的许多级别的抽象,并且不知何故曲线检测器脱离了梯度下降。

此外,在各种自然图像中检测曲线在经典的计算机视觉中是一个困难且可以说是未解决的问题。这是我们试图实现程序化的曲线检测以将它们与曲线神经元进行比较的意义所在。我们发现,从业者通常必须在几种算法之间进行选择,每种算法都有重要的折衷,例如对不同种类的视觉“噪音”(例如,纹理)的鲁棒性,即使是在比ImageNet中的自然图像简单得多的图像中也是如此。例如,StackOverflow上的这个答案声称“一般来说,[曲线检测]问题是一个非常具有挑战性的问题,除了玩具示例,没有好的解决方案。”此外,许多经典的曲线检测算法速度太慢,不能实时运行,或者通常需要难以处理的内存量。InceptionV1似乎学会了这个问题的灵活而通用的解决方案,使用五个卷积层实现。我们将在下一篇文章中看到所使用的算法是简单易懂的,此后我们已经手动重新实现了它。

当我们说这些神经元探测曲线的时候,我们到底在说什么?我们认为,有时对于神经元是否检测到特定刺激存在分歧的部分原因是,人们可能会提出各种不同的主张。很容易证明,从经验上讲,当曲线探测器强烈发射时,刺激是可靠的曲线。但还有其他几种说法可能更具争议性:

因果曲线检测器真正检测曲线特征,而不是与曲线相关的另一个刺激。我们相信我们的特征可视化和可视化属性实验建立了因果联系,因为“反向运行”会产生一条曲线。

通用性:曲线检测器对各种各样的曲线刺激作出反应。它们可以容忍很大范围的半径,并且在很大程度上不受颜色、亮度和质地等美容属性的影响。我们相信,我们用合成刺激明确测试这些不变性的实验是最令人信服的证据。

纯度:曲线检测器不是多义的,它们没有有意义的二级功能。导致曲线检测器弱激活的图像(如边或角度)是InceptionV1用于实现曲线检测的算法的自然扩展。我们相信,我们对不同激活程度的数据集示例进行分类并可视化它们的属性的实验表明,任何二级函数都需要是罕见的。在下一篇文章中,我们将探索实现曲线检测器的算法的机制,为这一主张提供进一步的证据。

特征可视化使用最优化来找到最大化给定目标的神经网络的输入。我们经常使用的目标是使神经元尽可能强烈地激发,但在本文中我们将通篇使用其他目标。特征可视化功能强大的一个原因是它告诉我们因果关系。由于输入是从随机噪声开始的,并且优化像素而不是生成先验,因此我们可以确信结果图像中的任何属性都有助于实现目标。

阅读功能可视化是一项技能,如果您以前没有花太多时间阅读这些图像,那么它们可能会让您感到迷失方向。最重要的是要去掉曲线的形状。您可能还会注意到,曲线的每一侧都有明亮的相反色调颜色:这反映了在曲线边界看到颜色机会的偏好。最后,如果你仔细看,你会注意到垂直于曲线边界的小线。我们将这种对小垂直线的微弱偏好称为“梳理”,稍后将对此进行讨论。

每次我们使用特征可视化来使曲线神经元尽可能强烈地放电时,我们都会得到曲线的图像,即使我们明确鼓励使用多样性项创建不同类型的图像。这有力地证明了曲线检测器并不是我们通常使用的意义上的多义性,大致相等地偏爱不同种类的刺激。

特征可视化可以找到最大限度地导致神经元放电的图像,但是这些超刺激是否代表神经元的行为呢?当我们看到特征可视化时,我们通常会想象神经元强烈地激发与其性质相似的刺激,随着刺激表现出较少的视觉特征,神经元会逐渐变弱。但是人们可以想象神经元的行为在非极端激活中完全不同的情况,或者在极端刺激的混乱版本中它确实激发得很弱的情况,但它也有第二类刺激,它对它的反应很弱。

如果我们想要了解神经元在实践中的行为,没有什么可以替代简单地观察它是如何对数据集中的图像做出实际反应的。

在研究数据集时,我们将重点介绍3b:379,因为有些实验需要大量的手工劳动。但是,本节的核心思想将适用于3b中的所有曲线检测器。

3B:379多久开一次火?当它开火的时候,它多久会猛烈开火一次?当它不开火的时候,它是不是经常受到强烈的抑制,或者只是处于开火的边缘?我们可以通过可视化数据集中的激活分布来回答这些问题。

在研究RELU网络时,我们发现观察预激活值的分布是有帮助的。由于RELU只是截断了左手侧,因此很容易推断激活后的值,但它也向我们显示了在其他情况下神经元离放电有多近。查看预激活值还可以避免分布的狄拉克增量峰值为零。我们发现3b:379的预活化平均值约为-200。它只在整个数据集11%的情况下触发,因为负值将由RELU激活函数设置为零。

如果我们看一张概率的对数图,我们会发现激活机制遵循指数分布,观察到神经网络的激活通常遵循指数分布的观察是由Brice Ménard首先向我们提出的,他观察到除了几个网络的第一层之外,所有的网络都是这种情况。这有点令人惊讶,既是因为它们似乎完全遵循指数分布,也是因为人们经常期望随机变量的线性组合形成高斯,与曲线图中的一条直线相对应。这样做的一个结果是,由于概率密度在高斯的e−x e^{-x}e−x而不是e−x 2 e^{-x^2}e−x 2处衰减,我们应该期望分布有长尾。

要定性地理解此分布的不同部分,我们可以通过激活渲染一组图像,随机采样导致3b:379激活不同数量的图像。被子上有图案。引起最强烈激活的图像具有类似于神经元特征可视化的曲线。导致微弱正激活的图像是不完美的曲线,要么太平,要么偏离方向,要么有其他缺陷。导致重新启动前接近零的图像往往是直线或没有圆弧的图像,尽管有些图像是偏离方向约45度的曲线。最后,引起最强烈负激活的图像的方向与神经元的理想曲线相距超过45度。

图像的被子揭示了各种激活的模式,但它们可能会产生误导。由于神经元对接受野大小的图像片段的激活只是一个单一的数字,我们不能确定图像的哪一部分导致了这种情况。因此,我们可能会被虚假的关联所愚弄。例如,由于导致3b:379激发最强烈的许多图像是时钟,我们可能认为神经元检测的是时钟,而不是曲线。

为了了解为什么图像会刺激神经元,我们可以使用特征可视化来可视化图像对神经元的属性。

我们用来研究神经元家族的大多数工具,包括特征可视化,都可以用在使用属性的特定图像的上下文中。

关于如何在神经网络中进行属性识别,有大量的工作要做。)。这些方法试图描述导致神经元放电的是哪些像素或较早的神经元。在复杂非线性函数的一般情况下,对于哪些属性方法是原则性的,以及它们是否可靠,存在着很大的分歧。但在线性情况下,归因通常是一致的,大多数方法都会崩溃到相同的答案。在x,w⋅x w\cdot x w⋅x的线性函数中,分量x i x_i x i​对输出的贡献是w i x i w_ix_i w i​x i​。描述每个分量贡献的属性向量(或张量)为(w 0 x 0,w w 1 x 1,…。)(w_0x_0,~w_1x_1,~\ldots)(w 0​x 0​,w 1​x 1​,…。)。

由于神经元的预激活函数和偏差值是其前一层神经元的线性函数,因此我们可以使用这种公认的归因方法。具体地说,3b的预激活值中的曲线检测器是3a的线性函数。描述前一层中的所有神经元如何影响给定神经元的属性张量是逐点激活乘以权重。

我们通常使用特征可视化来创建超刺激来激活单个神经元,但我们也可以使用它来激活神经元的线性组合。通过将特征可视化应用于属性张量,我们正在创建最大限度地激活3a中的神经元的刺激,这导致了3b:379的激发。此外,我们将使用属性张量的绝对值,它向我们显示导致神经元放电的特征以及抑制它的特征。这对于观察影响我们的治愈神经元的曲线相关视觉属性很有用,即使这种影响是为了让它发射得更少。

将这些组合在一起得到FeatureVisualization(abs(W⊙h p r e v))\text{FeatureVisualization}(\text{abs}(W\odoth_{prev}))FeatureVisualization(abs(W⊙h p r e v​)),其中W W是给定神经元的权重,h p r e v h_{prev}h p r e v​是前一个隐藏层的激活。在实践中,我们发现将这些属性可视化参数化为灰度化和透明化是有帮助的,这使得可视化对于非专家来说更容易阅读。示例代码可以在笔记本中找到。

我们还可以使用属性来更深入地重温前面的数据集示例的被子,看看为什么每个图像都会导致3b:379着火。您可以单击图在查看原始图像和属性矢量要素可视化之间切换。

虽然上面的实验可视化了3a中的每个神经元,但属性是一个强大而灵活的工具,可以用来以各种方式应用于电路研究。例如,我们可以可视化图像如何在3b之前的早期视觉中流经每个神经元家族,将图像的激活矢量和属性矢量可视化到沿途每个家族的神经元曲线。每个激活矢量将显示一个家庭在图像中看到了什么,每个属性矢量将向我们显示它是如何帮助激活3b:379的。

在下一节中,我们将介绍一种从数据集图像中提取信息的不太复杂的技术:蒙住眼睛,不让自己看到神经元的激活,并手动对图像进行分类。

本文作者尼克·卡马拉塔(Nick Cammarata)手动将800多幅图像分为四组:曲线、不完美曲线、无关图像或相反曲线。我们从3b:379次激活中随机抽取了固定数量的图像,每箱100张,我们不是从这些垃圾箱中挑选出来的。本文中的数据来自我们的第一次图像采样。在标记时,尼克只能看到图像的像素,而不能看到其他信息,如神经元的激活或归因可视化。他在贴标签时使用了以下准则:

曲线:图像中有一条与神经元特征可视化方向相似的曲线。这条曲线横跨图像的大部分宽度。

不完美曲线:图像有一条类似于神经元特征可视化的曲线,但至少有一个明显的缺陷。可能它太平了,有一个角度打断了圆弧,或者方向稍微偏了一点。

相反的曲线:图像中有一条曲线与神经元的特征可视化相差超过45度。

在手工标记这些图像之后,我们将我们的标记与相同图像上的3b:379次激活进行了比较。使用堆积图我们可以看到,不同的标签清晰地分为不同的激活。有趣的是,在标记过程中,尼克觉得很难将样本分组,因为许多图像似乎都落入了规则的边界内。当我们看到激活明显地分为不同级别的激活时,我们感到很惊讶。

尽管如此,仍然有许多图像会导致神经元激活,但不被归类为曲线或不完美的曲线。当我们将属性可视化到3b:379时,我们看到许多图像包含微妙的曲线。

尼克发现很难从数百张曲线图像中检测出细微的曲线,因为他开始体验到长时间观察一种刺激时出现的余像效应。因此,他发现很难判断微妙的曲线是否仅仅是知觉错觉。通过可视化属性,我们可以揭示神经元在图像中看到的曲线,向我们显示我们的标记过程遗漏的曲线。在这些情况下,3b:379似乎是一个超人的曲线探测器。

这些图表对比较我们的手工标签很有帮助,但它们提供的情况并不完整。虽然3b:379在强烈射击时似乎对曲线刺激有很高的选择性,但这只是它开火的一小部分情况。大多数时候,它根本不会开火,而且当它开火时,通常是非常微弱的。

要了解这一点,我们可以查看来自所有ImageNet示例的激活幅度的概率密度,这些概率密度被分成与我们手工标记的数据集相同的每个激活幅度(x轴)的类比率。

从这个角度来看,我们甚至看不到我们的神经元强烈激发的情况!当我们向右移动时,概率密度呈指数衰减,所以这种激活是很少见的。在某种程度上,如果这些神经元真的检测到曲线,这是我们应该预料到的,因为清晰的曲线很少出现在图像中。

也许更令人担忧的是,尽管曲线只是3b:379仅微弱发射或没有发射的情况的一小部分,但这张图似乎表明,在这些情况下,大多数被归类为曲线的刺激也会下降,这是因为神经元强烈放电的情况更罕见许多个数量级。这似乎至少是部分内容。

..