如何可视化/理解神经网络在做什么?


37

神经网络由于其复杂的结构而经常被视为“黑匣子”。这不是理想的,因为直观了解模型在内部的工作方式通常是有益的。可视化受过训练的神经网络如何工作的方法有哪些?或者,我们如何提取容易消化的网络描述(例如,该隐藏节点主要用于这些输入)?

我主要对两层前馈网络感兴趣,但也想听听针对更深层网络的解决方案。输入数据本质上可以是可视的或非可视的。


1
这里有一个很好的例子:playground.tensorflow.org
nobar

Answers:


12

神经网络有时称为“微分函数近似器”。因此,您可以做的是相对于其他任何单位区分任何单位,以了解它们之间的关系。

您也可以检查网络错误对特定输入的敏感程度。

然后,有一个叫做“接收域”的东西,它只是进入一个隐藏单元的连接的可视化。例如,这使得易于理解特定单位对图像数据的作用。也可以为更高级别完成此操作。请参阅可视化深度网络的高级功能


13

通过随机增加单个功能的每个值并记录整体适应度功能如何降低来估计功能的重要性。

因此,如果您的第一个特征被连续赋值并缩放为,那么您可以为第一个特征的每个训练示例值添加。然后查看您的降低了多少。这样可以有效地从训练数据中排除某个功能,但是与交叉交互相比,从字面上删除该功能要好得多。x1,i[0,1]rand(0,1)0.5R2

然后通过适应度函数降级对功能进行排名,并绘制漂亮的条形图。考虑到您对问题域的了解,至少一些最重要的功能应该通过内在检查。这也使您对意外的信息功能感到惊讶。

这种功能重要性测试适用于所有黑盒模型,包括神经网络和大型CART集成。以我的经验,功能重要性是了解模型实际功能的第一步。


1
感谢您的回答; 这实际上是我所做的,我发现它非常有用。尽管在这个问题中,我正在寻找更多看起来在网络内部的东西,而不是将其视为黑匣子。
rm999


1

2011年秋天,我参加了由Andrew Ng教授的Standford提供的免费在线机器学习课程,我们将可视化的神经网络可视化为面部检测器。输出是普通面孔。为了完整起见,我想提及这一点,但是您没有提及这种应用程序,因此我将不进行详细探讨。:)


大学是斯坦福大学。我可以在网络上找到吴安国课程。我听说迪克·德沃(Dick DeVeaux)在神经网络课程上作了演讲,声称其中的神经元部分掩盖了实际情况。它只是非线性分类器的另一种类型,如果不是从图的角度来看它,最好是通过写出代数形式来最好地理解它们。我希望我记得这项权利。
Michael Chernick

De Veaux和Ungar,1997年对神经网络的简要介绍:“如今,神经网络似乎无处不在,至少在他们的广告中,它能够做统计工作所能做的一切,而无须大惊小怪,也不必去做任何事情购买一件软件。”
丹尼斯,2015年

0

下面提到的方法是从此链接中获取的,请访问该站点以获取更多详细信息。

从随机图像开始,即,向像素任意提供值。“接下来,我们使用此图像x作为网络的输入进行前向传递,以计算由x在网络中间某处的某个神经元i处引起的激活a_i(x)。然后进行后向传递(执行反向传播)计算相对于网络中较早激活的a_i(x)的梯度,在向后传递结束时,我们剩下梯度∂a_i(x)/∂x,或者如何将每个像素的颜色更改为增加神经元i的激活,我们可以通过在图像中添加该梯度的一小部分αα来做到这一点:

x←x +α⋅∂a_i(x)/∂x

我们会不断重复执行此操作,直到获得图像x'引起所讨论的神经元的高度激活为止。”

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.