【问题标题】:Using a learned Artificial Neural Network to solve inputs使用学习的人工神经网络来解决输入
【发布时间】:2015-02-24 18:06:51
【问题描述】:

我最近再次研究人工神经网络,包括进化和训练。我有一个问题,关于什么方法(如果有的话)来解决会导致目标输出集的输入。有这个名字吗?我试图寻找的所有东西都会引导我进行反向传播,这不一定是我需要的。在我的搜索中,我最接近表达我的问题的是

Is it possible to run a neural network in reverse?

这告诉我,对于具有不同数量的层节点的网络,确实会有很多解决方案,而且解决它们并不是一件容易的事。我的想法是使用在学习过程中建立的权重朝着一组理想的输入前进。有没有其他人有做这种事情的经验?

为了详细说明: 假设你有一个网络,它有 401 个输入节点,代表 20x20 灰度图像和一个偏差,两个隐藏层由 100+25 个节点组成,还有 6 个输出节点代表一个分类(符号、罗马数字等)。 在训练神经网络使其可以以可接受的错误进行分类之后,我想向后运行网络。这意味着我会在输出中输入我希望看到的分类,并且网络会想象一组输入,这些输入会产生预期的输出。所以对于罗马数字的例子,这可能意味着我会要求它为符号“X”反向运行网络,它会生成一个类似于网络认为“X”的样子的图像。通过这种方式,我可以很好地了解它学会了分离分类的特征。我觉得这对于理解 ANN 在大局中如何运作和学习非常有益。

【问题讨论】:

  • 不清楚您所说的“解决将导致目标输出集的输入的方法(如果有的话)”是什么意思。你能更具体地解释你的问题吗?
  • @Greg 谢谢。我在原始问题中附加了一个经过编辑的示例。我希望这能消除歧义。
  • 我不明白。 '7'看起来像什么? '3+4'、'1+6'、'-100+107'?字母“X”应该看起来像你训练它的“X”,对吧?它与所有其他字母组合在记忆网络中这一事实不应改变这一概念。
  • 是的,就是这样。我意识到这没有什么实际用途,它只是一个教育的东西。我对它最喜欢的功能很感兴趣。理论上,字母“X”与训练时的字母“X”相同。但是,如果您的网络在对一组进行分类时有点毛茸茸,那么看看它认为该分类理想的样子会很有趣。或者说你在隐藏层中遇到了瓶颈,从而削弱了你的网络——它最依赖哪些功能,以及它会如何尝试弥补资源不足的问题。不切实际,但我很好奇。
  • 我曾经非常喜欢这个人 Tony Plate 的作品。从来没有很好地理解这篇论文,但也许你会从中得到一些东西d-reps.org/papers/nc2000.pdf

标签: neural-network


【解决方案1】:

我知道你可以,我现在正在研究解决方案。我的 github here 上有一些代码用于想象神经网络的输入,该神经网络对 MNIST 数据集的手写数字进行分类,但我认为这并不完全正确。现在,我只需要一个训练有素的网络和我想要的输出,然后将每一层的学习权重向后乘,直到我有一个输入值。这是跳过激活函数,可能还有其他一些错误,但我从中得到了相当合理的图像。例如,这是经过训练的网络想象一个 3 的结果:number 3

【讨论】:

  • 你的 3 看起来很棒!所以你不是在做 Sigmoid 激活或相反的操作?
  • 我使用 sigmoid 激活函数对图像进行训练,但是当想象给定输出的输入时,我只是将其向后传递,而不执行激活函数的逆操作。不完全确定为什么它工作得这么好。但是,当我尝试通过反 sigmoid 时,它使图像变得非常模糊,根本不清楚数字是多少。对我来说有点神秘。
【解决方案2】:

是的,您可以反向运行概率神经网络,以使其“想象”与经过训练分类的输出相匹配的输入。

我强烈推荐 Geoffrey Hinton 关于 NN 的 coursera 课程: https://www.coursera.org/course/neuralnets

他在介绍视频中演示了一个神经网络,它想象各种“2”,经过训练可以识别数字 0 到 9。这非常令人印象深刻!

我认为它基本上是在做你想做的事。

粗鲁

【讨论】:

  • 似乎课程已关闭。在哪里可以找到幻灯片、视频和课程代码?
  • @kamula 你可以输入,因为它仍然打开,我做到了,我可以看到视频和其他所有内容
  • @MiguelCldn,谢谢... 事实证明该课程是可以访问的,尽管进入时有点混乱。
  • @kmace 你能分享一下课程的链接吗?
【解决方案3】:

对于一个简单的前馈全连接 NN,可以通过取激活函数的逆函数(例如 sigmoid 单元的 Logit)将隐藏单元激活投影到像素空间,将其除以传入权重的总和,然后将其相乘每个像素的权重值。这将给出这个隐藏单元识别的平均模式的可视化。总结每个隐藏单元的这些模式将得到平均模式,它对应于这个特定的隐藏单元活动集。原则上可以应用相同的过程将输出激活投影到隐藏单元活动模式中。

这对于分析 NN 在图像识别中学到的特征确实很有用。对于更复杂的方法,您可以查看this paper(除了它包含 NN 可以学习的模式示例之外的所有内容)。

您不能完全反向运行 NN,因为它不会记住来自源图像的所有信息 - 只记住它学会检测的模式。所以网络不能“想象一组输入”。但是,可以对概率分布进行采样(以权重作为每个像素的激活概率)并生成一组特定神经元可以识别的模式。

【讨论】:

猜你喜欢
  • 2023-04-09
  • 2022-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 1970-01-01
  • 2016-05-25
  • 2019-03-15
相关资源
最近更新 更多