神经网络的高级特征

数据挖掘 机器学习 神经网络 分类
2022-03-11 23:02:07

我了解如何构建和训练如下所示的神经网络,以及那些低级特征/过滤器。我想知道那些高级特征是什么:你究竟是如何从训练有素的神经网络中获得它们的?(那些像“特征脸”吗?)

深度神经网络

注:图片来自NVIDIA,这里不知道分类问题的具体情况。如果需要,假设网络经过训练以区分人类和猫。

2个回答

它是关于神经网络如何在内部学习的。通常在深度神经网络中你有多个层,第一层将学习低层次的特征,然后你越接近输出层,层就会越多地学习高层次的特征。在这里它的识别面孔任务,这就是为什么你看到在第一层学习小模式(主要是边缘......)然后面对组件......

如何获得它们:您应该根据输入观察是什么使神经元在每一层中被激活。如您所知,每个神经元都会针对特定的输入组合被激活(一旦 DNN 被训练)。通过可视化,您可以了解每一层在高-低级特征方面究竟学到了什么。

常用的图像及其变体仅用于说明目的。它们通常不代表从真实 CNN 中提取的数据。

该图的第一个“低级特征”部分可能来自真实网络(我不确定在这种情况下,它看起来更像是一个构造的过滤器,例如 Sobel,对我来说)。这是因为将第一层的过滤器权重直接解释为图像是可行且相对容易的,并且过滤器确实看起来像它们检测到的组件。

您的特定图表中的“中级特征”和“高级特征”可能是在没有使用神经网络的情况下构建的。它们很可能是对高级功能可能是什么的艺术家印象。它们可能是从真实数据集中采样的,然后被裁剪并排列到图像中。

警告:我无法找到仅用于说明的特定图像的绝对证据,只是我怀疑是这种情况。

可以提取更深层检测到的特征的可视化。两种常见的方法是:

  • 数据集匹配。在数据集中查找触发特定神经元输出高值的示例。这可以与原始图像的裁剪分离,因为您知道在您感兴趣的层之前出现的所有过滤器和池的组合大小。

  • 优化输入图像。使用梯度上升,但不是改变权重,而是创建一个成本函数,对您想要可视化的神经元进行评分并不断调整输入,直到

您可以从资源中获取更多信息,例如这篇关于特征可视化的文章。