【问题标题】:In what ways are the output of neural network layers useful?神经网络层的输出在哪些方面有用?
【发布时间】:2017-07-03 14:08:22
【问题描述】:

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

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

非常感谢任何评论或建议。谢谢。

【问题讨论】:

  • 您能否提供有关您使用的网络和您展示的图片的更多详细信息?
  • 感谢您的评论。假设我正在尝试使用 VGG16 预训练模型对手写数字进行分类,并输入手写数字的 32x32 图像。上图是第 10 层的输出,我从该层的输出中获得了关于第 10 层的哪些信息或见解?我不确定这是否有帮助。如果没有,请告诉我我可以提供哪些其他信息。

标签: neural-network keras conv-neural-network keras-layer


【解决方案1】:

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

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

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

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

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

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

由于我们对这些类所做的许多最重要的发现都发生在网络的不同层,因此我可以向后移动卷积层,并删除对于我正在执行的任务而言似乎过于复杂的所有内容.这可能意味着我删除了一些似乎专门用于对人类特征进行分类的层,例如耳朵、嘴巴、眼睛和脸。

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

图片来自:

Visualizing what ConvNets learn

An Intuitive Explanation of Convolutional Neural Networks

【讨论】:

  • 感谢您的回答。我目前正在可视化的是特征图。实际上,我想知道人们可以从特征图的可视化中获得什么见解——你也许也有答案吗?另外,您认为将过滤器可视化而不是特征图会更有用吗?如果问题很愚蠢,请道歉。我对神经网络很陌生。
  • 我明天可能会添加更多信息。但是您的特征图本质上是您的一个过滤器的最终输出。您想象的内容在一定程度上取决于您想要理解的内容。如果您想了解这些概念以及 CNN 的工作原理,我会说将过滤器可视化。但是对于实际工作,您可以可视化从过滤器/图层中获得的特征图。我非常建议您查看我包含的视频。它很好地展示了这些特征图/过滤器如何相互作用。
猜你喜欢
  • 1970-01-01
  • 2019-08-02
  • 2017-09-28
  • 2016-11-02
  • 2018-07-14
  • 2011-07-31
  • 1970-01-01
  • 2015-02-23
相关资源
最近更新 更多