摘要
近年来,人们在训练大型深层神经网络(DNNs)方面取得了巨大的进步,包括在训练卷积神经网络识别自然图片上也取得了显著成功。然而,我们对这些网络如何工作的理解,特别是中间层执行的计算的理解,已经落后。通过开发用于可视化和解释的神经网络的更好的工具,会促进该领域的进步。我们做了两个这样的工具。第一个工具是可视化被训练好的convnet在处理一个图片或视屏时的每层的激活值。我们发现,当用户输入时,实时激活值的变化,查看这样的变化有助于我们建立convnet是如何工作的直觉。第二个工具通过图像空间中的正则优化使得可视化DNN每层的特征。因为这个想法的先前版本产生不太可识别的图像,在这里我们介绍几种新的正则化方法,将这几种正则化方法结合起来会产生质量(qualitatively)更清晰,更可解释的可视化。
引言
神经网络长期以来被称为“黑盒子”,由于大量相互作用的非线性部分,难以准确理解任何特定的、被训练的神经网络功能。(模式+暴力记忆)大型神经网络更难研究,例如要理解AlexNet DNN涉及到要为60million的参数赋予意义。理解网络学了什么很有趣,但它也是进一步改进模型的一个关键方法:通过理解当前一代模型提供的直觉应该提出使它们更好的方法。例如,解卷积技术(可视化DNN的隐含层学到的特征)暗示了较小的卷积滤波器的架构变化,导致了2013 ImageNet最先进的性能。
新手可用这两个工具理解自己的模型为什么能work(或不work)。专家可用我们的工具从DNN内部如何工作的直观感受中受益。
第一个工具交互地绘出DNN每层的激活值们。如输入的是静态图片,工具会提供缓慢、详细的调查;若输入的是视屏,工具会突出显示DNN对动态输入的响应。目前,从用户计算机的摄像机来的视屏时实时处理的,用户可通过移动、遮挡、组合物体,来看看不同的特征在网络中是如何响应的。
第二个工具可视化DNN每层的每个神经元计算出的特征。看看什么样的特征被学习了,对了解DNN如何工作和激起如何改善网络的直觉很重要。
试图理解DNN的每个层执行什么计算是越来越受欢迎的研究方向。一种方法是研究将每个层作为一组,并调查每层中的神经元们执行的计算类型。这种方法是信息性的,因为每一层中的神经元彼此交互,将信息传递到更高层,因此每个神经元对整个函数的贡献取决于该神经元在该层的上下文。
另一种方法是,尝试解释每个神经元计算的函数。过去的研究大体可分为两派:以数据为中心和以网络为中心。前者需要被训练的DNN和数据;后者仅需要被训练的网络。一种以数据为中心的方法是显示来自训练或者测试集的图片,这些图片能对独立单元(个人认为是,神经元)产生高或低的激活。另一个是解卷积方法,强调特定图像的部分,这部分能激活神经单元(neural unit)。以网络为中心的方法直接研究网络,没有来自数据集的任何数据。例如,Erhan等合成的图片,能使特定单元产生高激活。从初始输入x=x0开始,计算由该输入在某个单元i处引起的激活ai(x),然后沿着梯度∂ai(x)/∂x在输入空间中采取步骤,以合成导致更高的单元i的激活值的输入(x?),最终终止于x*(以上所述是个迭代过程,看出来了吗),这个x*被认为是所述单元的优选输入。在这种情况下,输入空间是一个图片,x*可以直接显示出来。其他人也使用这种方法,使用梯度找到导致更高或更低的激活的图片。
这些基于梯度的方法很简单,但是优化过程倾向于产生不像自然图片的图片。它们由一系列“黑客”组成,这些“黑客”导致高(或低)的激活值:极端像素值,结构化高频模式和没有全局结构的基本图案。最近的研究能使我们更好理解为何这些黑客能实现激活。具体来说,这些黑客能用于被正确分类的图像,使得这些图像在经过一些不可察觉的小变化后被错误分类,这些黑客在没有梯度信息的情况下能产生“愚弄例子”,导致极端激活的非自然图像的丰度可以用神经网络的局部线性行为来解释。
能使用上述优化过程产生有用的可视化吗?事实证明可以,如果能适当正则化优化过程。我们基于前人的工作,贡献三种不同的正则化形式,当组合这些正则化时,会比先前产生更可识别的,基于优化的样本。因为优化是随机的,通过从不同的初始图像开始,我们可以产生一组优化的图像,其方差提供关于单元学习的不变性的信息。
本文做出两大贡献:
1.
2.我们延续过去在输入空间内可视化首选(preferred)激活模式的努力,通过添加几种新类型的正则化,这种方式为大型ConvNets产生了目前为止最可解释的图像。
3 Visualizing via Regularized Optimization
本工作的第二个贡献是引入了几个正则化方法,以将优化得到的图片偏向视觉上更加可解释。虽然这些正则化方法单独就很有帮助,它们组合起来甚至更有效。我们发现了一种有用的组合方式:通过超参数搜索,下面将会讨论这中方式。
我们的网络在ImageNet上训练,在把训练图片放入网络中训练之前,先减去ImageNet中的图片的每个像素的平均值。因此,网络的输入x可以看做零中心输入。我们可将优化问题看作找到图像x*:

4 discussion and conclusion
我们提出了两个用于辅助解释被训练的神经网络的可视化工具。从这两个工具中得到的直觉可促使我们(什么时候我们不再依靠直觉,而是依靠理论帮助我们改进网络呀)提出几个改进方法和未来研究的方向。这里,我们讨论几个这样的想法。
工具一揭示了后几个卷积层的表示(representations)倾向于在某种程度上是局部的,其中通道(channels)对应于特定的自然部分(例如轮,脸),而不是完全分布式编码的尺寸(instead of being dimensions in a completely distributed code)。也就是说,不是所有的特征对应自然的部分,这会提高神经网络对这个世界不同的分解的可能性。这些可视化表明,进一步研究所学到的表示的确切性质——是否他们在单个通道中是局部的还是分布在几个通道中——可能是有趣的。表示的局部性还表明,在迁移学习期间,当在conv4或conv5表示的顶部训练新模型时,使用稀疏连通可能是有帮助的,因为可能有必要组合来自这些层的少数特征以在较高层创建重要特征。
第二个工具——新的正则化,能够改进、可解释、优化学习到的特征的可视化——将会帮助研究者和从业者理解、调试、提高他们的模型。可视化还揭示了一个正在进行的故事的新的扭曲(twist)。以前的研究表明,有判别力的网络可以容易地被”在图片空间添加某些结构的噪声“愚弄或者被黑(hacked)。导致网络这样的原因是,有判别力的训练会导致网络不去理没有判别力的信息,例如学习检测美洲虎是通过匹配它们皮毛上特殊的斑点,而忽略了它们都有四条腿的事实。(应该是训练集中是老虎,羊,狗这种四条腿的动物)由于这个原因,它被视为一种无尽的努力:创建一个生成模型,其中从所有可能图像的空间上的宽分布中随机地采样x,然后通过将x移动到“一个满足一些类标签y的先验p(x)和后验p(y|x)”的区域来迭代地将x变换为可识别的图像。过去的尝试通过使用这种方法产生不现实的图像很大程度上支持了这种观点。
然而,这里给出的结果提示了另一种可能性:先前使用的先验可能太弱了(参见S1部分关于一个假设为什么需要强先验p(x)模型)。通过仔细设计或学习偏向现实的p(x)模型,可以利用存在于有判别力的P(y|x)模型中的大量参数,通过在两个模型下的强制概率来生成逼真的图像。即使使用简单的手工编码的p(x)模型作为正则化器,已经出现了在远距离像素之间的复杂依赖性(参加图4中占100个像素的甲虫)。这意味着有判别力的参数还包含来自训练集的重要的“生成”结构;也就是说,参数编码的不仅是美洲虎的斑点,而且在某种程度上也是它的四条腿。利用在更高层的输入和激活上学习的概率模型,更多的结构可能会显现出来。Dai等人的工作显示了是关于这方面的。虽然本文中的图像不像真的,但它们建议将区别训练的参数传递到生成模型——与通常的无监督预训练方法相反——这方向可能值得进一步研究。