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

机器算法验证 数据可视化 神经网络
2022-01-20 17:59:21

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

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

4个回答

通过随机碰撞单个特征的每个值来估计特征重要性,并记录您的整体适应度函数如何下降。

因此,如果您的第一个特征是连续值并缩放到,那么您可以将添加到第一个特征的每个训练示例的值中。减少了多少。这有效地从您的训练数据中排除了一个特征,但比从字面上删除该特征更好地处理交叉交互。x1,i[0,1]rand(0,1)0.5R2

然后通过适应度函数退化对你的特征进行排序,并制作一个漂亮的条形图。鉴于您对问题领域的了解,至少一些最重要的功能应该通过直觉检查。这也让您对您可能没有预料到的信息功能感到惊讶。

这种特征重要性测试适用于所有黑盒模型,包括神经网络和大型 CART 集成。根据我的经验,特征重要性是理解模型真正在做什么的第一步。

神经网络有时被称为“可微函数逼近器”。所以你可以做的是区分任何单位与任何其他单位,看看他们的关系是什么。

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

然后,有一种叫做“感受野”的东西,它只是进入隐藏单元的连接的可视化。例如,这使得理解特定单元对图像数据的作用变得容易。这也可以用于更高级别。请参阅可视化深度网络的高级特征

是特定类型神经网络的图形直觉。在那篇文章的最后,有一个指向 R 代码的链接,它显示了特定问题的可视化。看起来是这样的:

在此处输入图像描述

2011 年秋季,我参加了由 Andrew Ng 教授的斯坦福大学免费在线机器学习课程,我们可视化了一个神经网络,它是一个面部检测器。输出是一张普通的脸。为了完整起见,我想提一下,但你没有提到这种应用程序,所以我不打算挖掘细节。:)