反转神经网络的目标

Posted

技术标签:

【中文标题】反转神经网络的目标【英文标题】:Inversing the goal of neural networks 【发布时间】:2016-04-03 15:21:40 【问题描述】:

我目前正在研究神经网络,或者更具体地说是图像分类。当我阅读时,我想知道以下是否已经完成/是否可行。如果有人能指出一些来源或想法,我将不胜感激!

在传统的神经网络中,您有一个图像训练数据集和网络中神经元的权重。目标是优化权重,使图像的分类对于训练数据来说是准确的,并且新图像尽可能好。

我想知道你是否可以扭转这一点: 给定一个神经网络及其神经元的权重,生成一组与网络分离的类别相对应的图像,即该特定网络能够很好地分类的图像种类的原型。

在我看来,它的工作原理如下(我确信这不太可能实现,但只是为了让这个想法得到理解): 想象一下一个神经网络,它能够对包含标签 cat、dog 且不包含标签的图像进行分类。 我想要的是“逆”,即猫的图像,狗的图像和与其他两个类别“最远”的图像。 我认为这可以通过生成图像并最小化一个特定类的损失函数来实现,同时最大化所有其他类的损失函数。

Google Deep Dream 是不是通过这种方式可视化它的“梦想”?

我希望我的意思很清楚,否则我会回答任何问题。

【问题讨论】:

【参考方案1】:

我想你可以从 Karpathy 的博客中理解主流的做法: http://karpathy.github.io/2015/03/30/breaking-convnets/

Normal ConvNet 训练:“当我摆动这个参数时,正确类别的分数会发生什么变化?”

创建愚弄图像:“当我摆动这个像素时,(无论你想要什么类别)的分数会发生什么变化?”

用图像欺骗分类器与您的要求非常接近。为了您的目标,您需要为您的损失函数添加一些正则化以避免完全误导的结果 - 绝对最小损失可能是非常扭曲的图片。

【讨论】:

【参考方案2】:

Google Deep Dream 是不是通过这种方式可视化它的“梦想”?

看起来差不多,至少背后的人是这样解释的:

可视化 [在神经网络层中] 发生的事情的一种方法是将网络颠倒过来,并要求它以某种方式增强输入图像,从而引发特定的解释。假设您想知道什么样的图像会导致“香蕉”。从充满随机噪声的图像开始,然后逐渐将图像调整为神经网络认为的香蕉(参见相关工作 [...])。就其本身而言,这并不能很好地工作,但如果我们强加一个先验约束,即图像应该具有与自然图像相似的统计信息,例如需要关联的相邻像素,它就可以了。

Source - 整篇博文值得一读。

【讨论】:

以上是关于反转神经网络的目标的主要内容,如果未能解决你的问题,请参考以下文章

Keras 自定义目标需要张量评估

反转链表 II 区间反转

【目标检测】 论文推荐——基于深度神经网络的目标检测

HDU 3472 网络流

卷积神经网络----目标检测

基于深度卷积神经网络的目标检测研究综述