Answers:
确实很难理解神经网络正在学习什么,但是在这方面已有很多工作。我们绝对可以了解我们的网络正在寻找什么。
让我们考虑一种用于图像的卷积神经网络的情况。我们对第一层的解释是,我们在图像上滑动了滤镜,因此我们的第一个隐藏层对应于图像的小块与各种滤镜之间的一致性。我们可以可视化这些过滤器,以查看第一层表示是什么:
该图片是AlexNet过滤器的第一层,并取自以下精彩教程:http : //cs231n.github.io/understanding-cnn/。这使我们可以将第一个隐藏层解释为学习以表示图像(包括原始像素)为张量,其中每个坐标是滤镜与图像小区域的一致。然后,下一层正在处理这些过滤器激活。
理解第一个隐藏层并不难,因为我们可以直接查看过滤器以了解它们的行为,因为它们直接应用于输入图像。例如,假设您正在处理黑白图像(因此我们的滤镜是2D而非3D),并且您的滤镜类似于
想象一下,将其应用于图像的3x3区域(忽略偏差项)。如果每个像素都是相同的颜色,那么您将得到因为它们被抵消了。但是,例如,如果上半部分与下半部分不同,那么您将获得潜在的大价值。实际上,该滤镜是一个边缘检测器,我们可以通过将其实际应用于图像并查看会发生什么情况来解决这一问题。但是要理解更深的层次要困难得多,因为整个问题是我们不知道如何解释将过滤器应用于什么。
Erhan等人(2009年)的这篇论文对此表示赞同:他们说,第一个隐藏层可视化很常见(那是在2009年),但是可视化更深层是困难的部分。从那篇论文:
这项研究的主要实验发现令人惊讶:内部单元对输入图像的响应(作为图像空间的函数)似乎是单峰的,或者至少对于所有测试的随机初始化而言,可靠且一致地找到了最大值。这很有趣,因为找到这种主导模式相对容易,然后显示它可以很好地表征设备的功能。
Chris Olah等人(https://distill.pub/2017/feature-visualization/)在此基础上讨论了一般如何(1)生成导致大量激活的图像,以了解网络的内容在寻找; 或(2)拍摄实际的输入图像,并查看图像的不同部分如何激活网络。那篇文章的重点是(1)。
在下面的图片(摘自Olah等人的链接文章)中,作者讨论了可以检查的网络的不同方面。最左边的图像显示了在输入图像空间上优化特定神经元的激活的结果,依此类推。
如果您想对此有更深入的了解,我强烈建议您完整阅读该文章,并且通过阅读其参考书,您应该对本文所做的事情有很好的了解。
当然,现在所有这些仅是图像,我们人类可以理解这些输入。如果您使用的是难以解释的东西,例如一个很大的数字向量,那么您可能无法进行如此出色的可视化,但是原则上您仍可以考虑使用这些技术来评估各种神经元,层等。 。