我正在研究神经网络,或者更具体地说是目前的图像分类。在我读书的时候,我想知道以下是否已经完成/是可行的。如果有人能指出我的某些来源或想法,我会很感激!
在传统的神经网络中,您拥有图像的训练数据集和网络中神经元的权重。目标是优化权重,使图像的分类对于训练数据准确,新图像尽可能好。
我想知道你是否可以扭转这种情况: 给定神经网络和其神经元的权重,生成对应于网络分离的类的一组图像,即,该特定网络能够很好地分类的图像种类的原型。
在我看来,它的工作原理如下(我确信这不是很容易实现,只是为了让这个想法得以实现): 想象一下,一个神经网络能够对包含标签cat,dog和其中任何一个的图像进行分类。 我想要的是“逆”,即猫的图像,狗的图像和距离其他两个类“最远”的图像。 我认为这可以通过生成图像并最小化一个特定类的损失函数来完成,同时为所有其他类最大化它。
Google Deep Dream是如何形象化“梦想”的?
我希望很清楚我的意思,如果不是,我会回答任何问题。
答案 0 :(得分:0)
Google Deep Dream是如何形象化“梦想”的?
看起来,至少它背后的人是如何解释的:
可视化(在神经网络层中)发生的事情的一种方法是将网络颠倒并要求它以引出特定解释的方式增强输入图像。假设你想知道什么样的图像会导致“Banana”。从充满随机噪声的图像开始,然后逐渐将图像调整为神经网络认为是香蕉的图像(参见相关工作[...])。它本身并不能很好地工作,但如果我们强加一个先验约束,即图像应该与自然图像具有相似的统计数据,例如需要相关的相邻像素,则会发生这种情况。
Source - 整篇博文都值得一读。
答案 1 :(得分:0)
我认为你可以理解Karpathy博客的主流方法: http://karpathy.github.io/2015/03/30/breaking-convnets/
正常的ConvNet培训:"当我摆动这个参数时,正确班级的分数会怎样?"
创建愚蠢的图像:"当我摆动这个像素时,(无论你想要什么类)得分会怎样?"
用图像愚弄分类器非常接近你的要求。为了您的目标,您需要为损失函数添加一些正则化,以避免完全误导结果 - 绝对最小损失可能是非常失真的图像。