神经网络在识别图像时决策过程的可视化?

我正在参加Coursera的机器学习课程,刚开始学习神经网络。

让我感到非常神奇的是,识别像手写数字这样“人类化”的东西,一旦找到合适的线性组合权重,就变得很容易了。

当你明白一些看似抽象的东西(比如汽车)可以通过找到一些非常好的线性组合参数,并将它们组合起来,相互输入,就能被识别出来时,这更让人感到不可思议。

线性组合的组合比我之前想象的要更具表达力。
这让我开始思考,是否有可能可视化神经网络的决策过程,至少在一些简单的情况下。

例如,如果我的输入是一张20×20的灰度图像(即总共400个特征),输出是对应识别出的数字的10个类别之一,我很想看到某种视觉解释,展示哪些线性组合的级联引导神经网络得出结论

enter image description here

我天真地想象,这可能通过在被识别的图像上添加视觉提示来实现,可能是显示“对决策影响最大的像素”的温度图,或者任何有助于理解神经网络在特定情况下的工作方式的东西。

有没有这样的神经网络演示可以做到这一点?


回答:

虽然这可能没有直接回答问题,但我在这篇Andrew Ng, Jeff Dean, Quoc Le, Marc’Aurelio Ranzato, Rajat Monga, Matthieu Devin, Kai Chen 和 Greg Corrado 的论文中发现了一个有趣的片段(强调是我的):

在本节中,我们将介绍两种可视化技术,以验证神经元的最佳刺激是否确实是面孔。第一种方法是可视化测试集中最具响应性的刺激。由于测试集很大,这种方法可以可靠地检测到测试神经元的近似最佳刺激。第二种方法是通过数值优化来寻找最佳刺激

这些可视化方法各有优缺点。例如,可视化最具响应性的刺激可能会受到噪声的影响。另一方面,数值优化方法可能容易陷入局部最小值。结果,如下所示,确认了测试的神经元确实学会了面孔的概念。

enter image description here

换句话说,他们选择了一个在识别面孔方面表现最佳的神经元,并

  • 从数据集中选择那些使其输出最高置信度的图像;
  • 数学上找到一张不在数据集中的图像,该图像将获得最高置信度。

看到它实际上“捕捉”了人脸的特征是很有趣的。
这种学习是无监督的,即输入数据没有说明图像是否是面孔。

有趣的是,这里是为猫头和人体生成的“最佳输入”图像:

enter image description here

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注