Answers:
有许多方法旨在使经过训练的神经网络更具可解释性,而不像“黑匣子”那样,特别是您提到的卷积神经网络。
激活可视化是第一个明显而直接的方法。对于ReLU网络,激活通常开始时看起来相对粗糙且密集,但是随着训练的进行,激活通常变得更稀疏(大多数值为零)并被局部化。有时,这可以显示特定图层在看到图像时的确切焦点。
我想提到的另一项关于激活的出色工作是deepvis,它显示了每个神经元在每一层的反应,包括合并和归一化层。他们是这样描述的:
简而言之,我们收集了几种不同的方法,可让您“三角剖分”神经元学习到的功能,从而可以帮助您更好地了解DNN的工作原理。
第二种常见策略是可视化权重(过滤器)。这些通常在直接看原始像素数据的第一CONV层上最容易解释,但也可以在网络中更深地显示滤波器权重。例如,第一层通常学习类似gabor的过滤器,这些过滤器基本上可以检测边缘和斑点。
这是主意。假设ConvNet将图像分类为狗。我们如何确定它实际上是在图像中的狗身上拾取的,而不是来自背景或其他杂物的上下文提示呢?
研究某些分类预测来自图像的哪一部分的一种方法是通过绘制感兴趣类别(例如狗类别)的概率与遮挡物位置的关系来绘制。如果我们遍历图像的各个区域,将其替换为全零并检查分类结果,则可以针对特定图像上的网络构建最重要的二维热图。此方法已用于 Matthew Zeiler的“可视化和理解卷积网络”中使用(您在问题中提到):
另一种方法是合成导致特定神经元触发的图像,基本上是神经元正在寻找的图像。这个想法是要计算相对于图像的梯度,而不是相对于权重的通常梯度。因此,您选择了一个图层,将渐变设置为全零,一个神经元只设置一个,然后反向传播到图像。
Deconv实际上执行了一种称为引导反向传播的操作进行了以使图像看起来更好,但这只是一个细节。
强烈推荐Andrej Karpathy的这篇文章,他在Recurrent Neural Networks(RNN)中扮演很多角色。最后,他运用了类似的技术来观察神经元实际学习了什么:
这张图中突出显示的神经元似乎对URL感到非常兴奋,并在URL之外关闭。LSTM可能会使用该神经元来记住它是否在URL内。
我只提到了该研究领域的一小部分结果。它非常活跃,每年都会出现新的方法来阐明神经网络的内部工作原理。
要回答您的问题,总是有些科学家不知道的事情,但是在许多情况下,他们对内部正在发生的事情有很好的了解(文学),并且可以回答许多特定的问题。
对我而言,您所提问题的名言仅凸显了研究准确性的重要性,不仅包括准确性的提高,还包括网络的内部结构。正如Matt Zieler在本次演讲中所讲的那样,有时良好的可视化效果又可以导致更高的准确性。
简短答案是否定的。
模型的可解释性是当前研究(例如圣杯之类的东西)的一个非常活跃而又非常热门的领域,近来提出这一点的原因不仅仅在于深度学习模型在各种任务中的(通常是巨大的)成功。这些型号目前仅是黑匣子,我们自然对此感到不舒服...
以下是有关此主题的一些常规资源(以及截至2017年12月的最新信息):
《科学》杂志上最近(2017年7月)的一篇文章很好地概述了当前的状态和研究:人工智能侦探如何破解深度学习的黑匣子(没有文本链接,但使用谷歌搜索的名称和术语会有所收获)
DARPA本身目前正在运行有关可解释人工智能(XAI)的程序
有在NIPS 2016年研讨会可解释的机器学习的复杂系统,以及一个上可解释的机器学习ICML 2017年教程通过去过金谷歌脑。
在更实际的水平上(代码等):
Google的What-If工具是开源TensorBoard Web应用程序的一项全新功能(2018年9月),使用户无需编写代码即可分析ML模型(项目页面,博客文章)
用于神经网络的分层相关传播(LRP)工具箱(纸张,项目页面,代码,TF Slim包装器)
SVCCA:用于深度学习动力学和可解释性的奇异矢量规范相关性分析(论文,代码,Google博客文章)
TCAV:使用概念激活向量进行测试(ICML 2018论文,Tensorflow代码)
Grad-CAM:深度网络通过基于梯度的本地化的视觉解释(论文,作者的Torch代码,Tensorflow代码,PyTorch代码,Keras 示例笔记本)
GAN解剖:MIT CSAIL的可视化和理解生成的对抗网络(项目页面,带有纸张和代码的链接)
最近,人们开始为深度学习神经网络建立更多理论基础的兴趣激增。在这种情况下,著名的统计学家和压缩感测先驱David Donoho最近(2017年秋季)开始在斯坦福大学开设深度学习理论课程(STATS 385),几乎所有材料都可以在线获得;强烈建议...
更新:
恐怕我没有方便的特定引用,但是我已经看到/听到过诸如Andrew Ng和Geoffrey Hinton之类的专家的名言,他们明确表示我们并不真正理解神经网络。也就是说,我们了解了它们如何工作(例如,反向传播背后的数学原理),但我们并不真正了解它们为何起作用。这是一个微妙的区别,但要点是,不,我们不了解您从一堆重物到识别一只猫在玩球的精确度的最深层细节。
至少在图像识别方面,我所听到的最好的解释是,神经网络的连续层学习更复杂的功能,这些功能由较早级别的更精细的功能组成。也就是说,第一层可以识别“边缘”或“直线”。然后,下一层可能会学习诸如“盒子”或“三角形”之类的几何形状,然后更高层可能会基于这些较早的特征学习“鼻子”或“眼睛”,然后更高层仍会学习制作的“面部”从“眼睛”,“鼻子”,“下颌”等开始。但是,就我所知,这仍然是假设的,并且/或者没有被完全详细地理解。
这是Carlos E. Perez对以下问题的答案:深度学习背后的理论是什么?
[...]
深度学习的基础数学已经存在了几十年,但是我们今天看到的令人印象深刻的结果部分是由于更快的硬件,更多的数据和方法上的不断改进的结果。
通常,深度学习可被定义为优化问题,其中目标是模型误差的函数。考虑到模型的参数空间(即神经网络的权重)导致极高维的问题,这个优化问题很难解决。优化算法可能需要很长时间才能探索该空间。此外,有一个未经证实的信念,即问题是非凸的,并且计算将永远停留在局部最小值中。
[...]
为何机器实际上会收敛到吸引子或换句话说学会识别复杂模式的理论仍然未知。
总结:我们有一些想法,但是我们不太确定。
科学家是否知道人工神经网络内部正在发生什么?
科学家或研究专家是否从厨房知道复杂的“深度”神经网络中发生的情况,该神经网络会立即触发至少数百万个连接?
我猜“从厨房知道”的意思是“详细了解”?
让我给您一系列比喻:
细节是魔鬼,但关键是人造结构。它们不会随机出现。您需要大量的知识才能获得有用的信息。对于神经网络,我想说从关键概念(Rosenblatt perceptron,1957年)发布到首次应用(US Postal Service,1989年)大约需要40年的时间。从那时起,又有13年的积极研发成为真正令人印象深刻的系统(ImageNet 2012)。
我们非常了解培训是如何进行的。因为它需要实施。因此,在非常小的结构上,我们会详细了解它。
想想计算机。芯片设计人员非常了解他们的芯片如何工作。但是他们可能只会对Linux操作系统的工作原理有一个很粗略的了解。
另一个例子是物理和化学:物理描述了宇宙的核心力量。这是否意味着他们也了解化学的一切?一定不行!一位“完美”的物理学家可以解释化学中的一切……但这几乎没有用。他将需要更多信息,而无法跳过不相关的部分。仅仅是因为他“放大”太多了-考虑细节,这些细节在实践中既不有趣也不重要。请注意,物理学家的知识并没有错。也许有人甚至可以从中推导出化学家的知识。但是缺少对分子相互作用的这种“高级”理解。
这两个示例的主要见解是抽象层:您可以从简单结构构建复杂性。
还有什么?
我们很清楚,我们设计的神经网络在原则上可以实现以下目标:
哦,当然,我们有神经网络的分析方法。我写了关于卷积神经网络架构的分析和优化的硕士论文。在这种情况下,LIME(本地可解释模型不可知的解释)很好:
我只想添加一些内容:
这取决于你对科学家的意思:
我是电气工程专业的博士生,我看到许多研究人员与ANN合作研究诸如回归,预测控制,自适应控制和分类等问题。
您可以清楚地注意到,他们缺乏编码技能是一个主要缺点,而且他们还不太了解ANN的内部功能,现在我什至没有谈论Deep,他们很难理解ADALINEs和ANFIS等简单的东西!您所听到的他们只是说:给它数据,它将适应!