我们如何才能找到使 ANN 的类概率最大化的输入图像?

人工智能 神经网络 生成模型
2021-10-27 15:29:10

假设我们有一个接受向量的 ANNxRD,表示图像,并将其分为两类。输出是概率向量N(x)=(p(xC1),p(xC2))T我们选择C1当且当p(xC1)0.5. 让这两个类C1=catC2=dog. 现在想象一下,我们想通过找到这个 ANN 的理想猫的想法x=argmaxxN(x)1. 我们将如何进行?我正在考虑解决xN(x)1=0,但我不知道这是否有意义或是否可以解决。

简而言之,我如何计算最大化类概率的输入?

2个回答

在深度网络中,这个问题实际上有各种各样的解决方案,但如果你需要找到一个,任何简单的方法都是通过正常的优化方案

x^=argminx L(y,x)

在哪里L(y,x)是你的损失函数。由于 ANN 通常是可微的,您可以使用某种形式的梯度下降方案迭代地优化它:
xi+1xiλxiL(y,xi)

在哪里λ是你的学习率。

搜索最有可能是猫的图像的最简单方法可能是使用类似于 Deep Dream 的技术:

  • 加载网络进行训练,但冻结所有网络权重

  • 创建一个随机输入图像,并将其作为“变量”连接到网络,即可以通过训练改变的数据

  • 根据最大化最后一层中的 pre-sigmoid 值设置损失函数(这比使用 0.999 等概率更容易处理)

  • 使用反向传播进行训练,但不是使用梯度来改变权重,而是一直反向传播到输入层并使用梯度来改变输入图像。

  • 通常,您还希望在迭代之间对输入图像进行归一化。

您找到的触发“最大猫性”的理想输入很有可能是与猫相关的功能非常嘈杂的混乱混乱。您可以通过添加一点运动来鼓励视觉上更吸引人的东西,或者至少减少噪音——例如,轻微的模糊,或者在每次迭代之间进行轻微的缩放(然后裁剪)。到那时,它就变成了一种艺术而非数学的尝试。

这是我使用一些 TensorFlow Deep Dream 代码加上缩放和模糊来鼓励更大规模的特征占主导地位的东西:

在此处输入图像描述

从技术上讲,上述方法最大化了 CNN 的单个内部特征图,而不是类概率,但在概念上是相同的。