我最近再次深入研究人工神经网络,包括进化和训练。我有一个问题,关于什么方法(如果有的话)可以解决导致目标输出集的输入。这个有名字吗?我试图寻找的一切都会导致我进行反向传播,但这不一定是我所需要的。在我的搜索中,我最接近表达我的问题的是
是否可以反向运行神经网络? https://stackoverflow.com/questions/6856964/is-it-possible-to-run-a-neural-network-in-reverse
这告诉我,对于具有不同数量的层节点的网络来说,确实会有很多解决方案,而且解决这些问题并不容易。我的想法是使用学习过程中建立的权重朝着一组理想的输入迈进。还有其他人有做类似事情的经验吗?
为了详细说明:
假设您有一个包含 401 个输入节点(代表 20x20 灰度图像和偏差)的网络、两个由 100+25 个节点组成的隐藏层以及代表分类(符号、罗马数字等)的 6 个输出节点。
在训练神经网络使其可以以可接受的错误进行分类后,我想向后运行网络。这意味着我将在我希望看到的输出中输入一个分类,并且网络将想象一组将产生预期输出的输入。因此,对于罗马数字示例,这可能意味着我会要求它针对符号“X”反向运行网络,并且它将生成一个类似于网络认为“X”的图像。通过这种方式,我可以很好地了解它学到的用于区分分类的特征。我觉得这对于理解人工神经网络如何在宏伟的计划中发挥作用和学习非常有益。
对于简单的前馈全连接神经网络,可以通过取激活函数的反函数(例如 sigmoid 单元的 Logit),将其除以输入权重之和,然后将该值乘以权重,将隐藏单元激活投影到像素空间中每个像素。这将给出由该隐藏单元识别的平均模式的可视化。对每个隐藏单元的这些模式进行总结将得到平均模式,该平均模式对应于该特定的隐藏单元活动集。原则上可以应用相同的过程将输出激活投影到隐藏单元活动模式中。
这对于分析 NN 在图像识别中学到的特征确实很有用。对于更复杂的方法,你可以看看这张纸 http://www.cs.nyu.edu/~fergus/papers/zeilerECCV2014.pdf(除了所有内容之外,它还包含 NN 可以学习的模式示例)。
您不能完全反向运行神经网络,因为它不会记住源图像中的所有信息 - 只记住它学会检测的模式。因此网络无法“想象一组输入”。然而,可以对概率分布进行采样(将权重作为每个像素激活的概率)并产生一组可以被特定神经元识别的模式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)