Generative Adversarial Nets

来源:互联网 发布:java内部类例子 编辑:程序博客网 时间:2024/05/21 11:12

相比于传统的识别、分类工作,生成对抗网络以一种逆向的思维,让计算机有了一定的创造能力。这种创造在实际中有更大的意义,甚至在复杂的工作中也能取得良好的效果。首先看一下最初的Goodfellow的工作:Generative Adversarial Nets。

介绍

关于GAN,论文中有一个很恰当的比喻:

The generative model can be thought of as analogous to a team of counterfeiters, trying to produce fake currency and use it without detection, while the discriminative model is analogous to the police, trying to detect the counterfeit currency. Competition in this game drives both teams to improve their methods until the counterfeits are indistiguishable from the genuine articles.

G是一个生产假币的队伍,想尽办法让假币无法被识别出来;D是警察,想尽办法查出假币。双方不断在竞争,不断学习,从而达到生成器可以以假乱真的效果。
GAN

模型

这张图可以让人最直观理解GAN网络。

左图是一个判别式模型D,当输入训练数据x时,期待输出高概率(接近1);右图下半部分是生成模型G,输入是一些服从某一简单分布(例如高斯分布)的随机噪声z,输出是与训练图像相同尺寸的生成图像。向判别模型D输入生成样本,对于D来说期望输出低概率(判断为生成样本),对于生成模型G来说要尽量欺骗D,使判别模型输出高概率(误判为真实样本),从而形成竞争与对抗。

公式
这是两个模型的value function,就像是在进行一个双人极大极小博弈。
其中x为真实训练数据,在输入噪声变量pz(z)上定义先验,然后表示到数据空间的映射为G(z;θg),G是由多层感知器表示的可微函数, 参数为θg。判别模型D(x;θd),D(x)表示x来自数据而不是pg的概率。

训练网络D使得最大概率地分对训练样本的标签(最大化log D(x)),训练网络G最小化log(1 – D(G(z))),即最大化D的损失。训练过程中固定一方,更新另一个网络的参数,交替迭代,使得对方的错误最大化,最终,G 能估测出样本数据的分布。生成模型G隐式地定义了一个概率分布Pg,我们希望Pg 收敛到数据真实分布Pdata。论文证明了这个极小化极大博弈当且仅当Pg = Pdata时存在最优解,即达到纳什均衡,此时生成模型G恢复了训练数据的分布,判别模型D的准确率等于50%。
algorithm

训练

在训练中,针对不同数据集,也设计了不同网络。
例如MNIST,只需要全链接就可以了:
生成模型:
生成
判别模型:
判别模型
复杂网络之中,还有反卷积层。

Generative Adversarial Networks
生成式对抗网络GAN研究进展(一)

0 0