上面这张图很好的很好的阐述了生成式对抗网络的结构~~ 博弈论
此图给出了生成性对抗网络的概述。目前最重要的是要理解GAN是使两个网络协同工作的一种方式 - 而Generator和Discriminator都有自己的架构。为了更好地理解这个想法的来源,我们需要回忆一些基本的代数并问自己 - 我们怎么能欺骗一个比大多数人更好地分类图像的神经网络?
在我们详细描述GAN之前,让我们看一下类似的主题。给定一个训练有素的分类器,我们可以生成一个欺骗网络的样本吗?如果我们这样做,它会是什么样子?
事实证明,我们可以。
甚至更多 - 对于几乎任何给定的图像分类器,可以将图像变换为另一个图像,这将被高度置信地错误分类,同时在视觉上与原始图像无法区分!这种过程称为对抗性攻击,生成方法的简单性解释了很多关于GAN的内容。 精心计算的示例中的对抗性示例,其目的是错误分类。以下是此过程的说明。左边的熊猫与右边的熊猫无法区分 - 但它被归类为长臂猿。
图像分类器本质上是高维空间中的复杂决策边界。当然,在对图像进行分类时,我们无法绘制这个边界。但我们可以安全地假设,当训练结束时,网络并不是针对所有图像进行推广的 - 仅针对我们在训练集中的那些图像。这种概括可能不是现实生活的良好近似。换句话说,它适用于我们的数据 - 我们将利用它。
让我们开始为图像添加随机噪声并使其非常接近零。我们可以通过控制噪声的L2范数来实现这一点。数学符号不应该让您担心 - 出于所有实际目的,您可以将L2范数视为向量的长度。这里的诀窍是你在图像中拥有的像素越多 - 它的平均L2范数就越大。因此,如果噪声的范数足够低,您可以预期它在视觉上难以察觉,而损坏的图像将远离矢量空间中的原始图像。
为什么?
好吧,如果HxW图像是矢量,那么我们添加到它的HxW噪声也是矢量。原始图像具有相当密集的各种颜色 - 这增加了L2规范。另一方面,噪声是一组视觉上混乱的相当苍白的像素 - 一个小范数的矢量。最后,我们将它们添加到一起,为损坏的图像获取新的矢量,这与原始图像相对接近 - 但却错误分类!
现在,如果原始类 Dog 的决策边界不是那么远(就L2范数而言),这种加性噪声将新图像置于决策边界之外。
您不需要成为世界级拓扑学家来理解某些类别的流形或决策边界。由于每个图像只是高维空间中的矢量,因此在其上训练的分类器将“所有猴子”定义为“由隐藏参数描述的该高维斑点中的所有图像矢量”。我们将该blob称为该类的决策边界。
好的,所以,你说我们可以通过添加随机噪声轻松欺骗网络。它与生成新图像有什么关系?
现在我们假设有两个结构模型,相当于两个神经网络:
这是关于判别网络D和生成网络G的价值函数(Value Function),训练网络D使得最大概率地分对训练样本的标签(最大化log D(x)),训练网络G最小化log(1 – D(G(z))),即最大化D的损失。训练过程中固定一方,更新另一个网络的参数,交替迭代,使得对方的错误最大化,最终,G 能估测出样本数据的分布。生成模型G隐式地定义了一个概率分布Pg,我们希望Pg 收敛到数据真实分布Pdata。论文证明了这个极小化极大博弈当且仅当Pg = Pdata时存在最优解,即达到纳什均衡,此时生成模型G恢复了训练数据的分布,判别模型D的准确率等于50%。
接着上面最后一个问题:怎么才能生成我指定的图像呢?
指定标签去训练
顾名思义就是把标签也带进公式,得到有条件的公式:
具体怎么让CGAN更好的优化,这里不解释,就是平常的优化网络了。
参考文章:
本文大部分翻译此外文
通俗易懂
小博客的总结
唐宇迪大神