ZEEKLING

Stay simple, stay naive.

目录
Conditional Adversarial Nets 详解
/    

Conditional Adversarial Nets 详解

简介

本文提出在利用 GAN(对抗网络)的方法时,在生成模型 G 和判别模型 D 中都加入条件信息来引导模型的训练,并将这种方法应用于跨模态问题,例如图像自动标注等。

Generative Adversarial Nets

GAN,生成对抗式网络是是 Ian Goodfellow 经典的大作,引起了很大的轰动,后面的各种 GAN 也层出不穷。追根溯源,为了了解 GAN,需要从这篇开山之作说起。那 GAN 到底是什么?简单来说,GAN 由两个模型组成,一个是生成模型 G,一个是判别模型 D,G 负责从给定训练数据中学习数据的概率分布而 D 负责判别 G 生成出来的数据是不是符合真实数据的样本概率分布。两个网络是非合作关系,对于 D 来说,是要最大化能够判别出 G 生成的数据是假的的概率,而对于 G 来说,是要最小化被 D 判别出来的概率,在这个不断博弈的过程中,两个模型的能力都在变强,最后得到一个均衡。

图片 1.png

模型 G 和 D 同时训练:固定判别模型 D,调整 G 的参数使得 log(1 − D(G(z))的期望最小化;固定生成模型 G,调整 D 的参数使得logD(X) + log(1 − D(G(z)))的期望最大化。这个优化过程可以归结为一个“二元极小极大博弈(minimax two-player game)”问题:

Screenshotat20191019223453.png

1     D(x)为分类器,  G(x)为生成器
2     D(x)的输入为真实数据或生成数据, G(x)的输入为随机高斯噪声z
3     对于D(x)来说应该最大化损失函数
4     对于G(x)来说应该最小化损失函数
5     相当于两个模块的博弈,而最后D(x)的预测概率为1/2则是达到了纳什均衡,也是最优解

算法训练过程

训练过程

Conditional Adversarial Nets

由于 GAN 这种不需要预先建模的方法太过自由,如果对于较大图片,较多像素的情形,这种基于 GAN 的方法就太不可控了。

为了解决上述问题,自然就想到给 GAN 模型加入一些条件约束,也就有了本文的工作 Conditional Generative Adversarial Nets(CGAN)。在生成模型 G 和判别模型 D 中同时加入条件约束 y 来引导数据的生成过程。条件可以是任何补充的信息,如类标签,其它模态的数据等,这样使得 GAN 能够更好地被应用于跨模态问题,例如图像自动标注。

约束条件

把噪声 z 和条件 y 作为输入同时送进生成器,生成跨域向量,再通过非线性函数映射到数据空间。

把数据 x 和条件 y 作为输入同时送进判别器,生成跨域向量,并进一步判断 x 是真实训练数据的概率。
算法简单流程:
Screenshotat20191020154354.png

条件对抗网络损失函数:
损失函数

参考文档

Generative Adversarial Nets
Conditional Generative Adversarial Nets


标 题:Conditional Adversarial Nets 详解
作 者:ZEEKLING
描 述:Stay simple, stay naive.