神经网络层的输出在哪些方面有用?

In what ways are the output of neural network layers useful?

我目前正在使用 keras 并希望可视化每一层的输出。当对神经网络输出的一层进行可视化时,如下例所示,用于 MNIST 手写数字识别。

  1. 研究人员从这些图像中获得了哪些信息或见解
  2. 如何解释这些图像
  3. 如果您选择查看图层的输出,您的选择标准是什么?

非常感谢任何意见或建议。谢谢。

前言: 卷积网络是应用于图像部分(步幅,在 gif 中可见)的过滤器的集合。如果图像的给定子部分与过滤器匹配,它们会生成 true/false 标签。

在我看来,您在提供的图像中看到的并不是这些可视化工作方式的最佳表示,因为它们可视化了 CNN 如何通过每个神经元感知整个图像。这意味着它们看起来都非常相似。

这里更好地表示了网络的基本过滤器可能是什么样子。其中一些会在直线上触发,另一些会在水平线上触发。这也是您链接的图像显示的内容,除了它对整个图像在一个视觉上简单的对象上显示的内容,这使得它有点难以理解。 当您使用构建在这些基本过滤器之上的更复杂的过滤器时,您最好可视化整个图像。

还有一个叫做迁移学习的概念,你可以利用现有的备受推崇的通用模型,并尝试将它们应用到你的特定问题中。这些模型通常需要调整,这可能意味着删除一些不需要的层(因为我们保留的每一层意味着训练通常更耗时),and/or 添加更多层。

研究人员将能够更好地解释网络中的每一层如何构建在前几层之上,以及它们如何有助于解决手头的问题。这通常基于直觉(可以通过良好的可视化来简化,例如 deep visualization toolbox video

举个例子,假设我正在使用 VGG16,这是在 image-net 上训练的通用模型的名称。我想将其更改为对不同类别的家具进行分类,而不是最初打算对 1000 类 个完全不同的事物进行分类。因为它是这样一个通用模型,它可以识别很多不同的东西,从人到动物,到汽车,再到家具。但是很多这些东西对我来说招致性能惩罚没有意义,因为它们并没有真正帮助我对家具进行分类。

由于我们对这些 类 做出的许多最重要的发现发生在网络的不同层,然后我可以移回卷积层,并删除所有看起来太复杂的东西我正在做的任务。这可能意味着我删除了一些似乎专门用于对耳朵、嘴巴、眼睛和面部等人类特征进行分类的图层。

据我所知,人们会尽可能多地将他们认为有用的层可视化,然后通常根据直觉做出判断,决定保留或丢弃哪些层。

图片借自:

Visualizing what ConvNets learn

An Intuitive Explanation of Convolutional Neural Networks