CGAN和InfoGAN理解

在一些比较经典的GAN模型中(像WGAN、LSGAN、DCGAN等等),往往都是从样本空间里随机采样得到输入噪声,生成的图像究竟属于哪一个类别也是随机的。通过这些模型,我们无法生成指定类别的数据。

举个不恰当的例子:在解放前夕,我们的目标就是填饱肚子,吃嘛嘛香;随着经济社会的不断发展和祖国的繁荣昌盛,我们变得越来越挑剔,比如今天只想吃波士顿龙虾,明天只想吃澳洲大螃蟹… GAN的发展也是一样,早期我们只关注GAN否生成清晰度高、类别丰富的图像数据,但是发展到一定的程度,我们就希望模型能够按照我们的要求生成出指定类别的数据。同时也可以一定程度上解决GAN训练太自由,以至于在一些复杂数据集上不稳定的弊病。

于是在早些时候,有两种比较经典的模型CGAN和InfoGAN,都可以生成指定模式的数据。下面对两种模型分别做一下简介。

CGAN

CGAN(Conditional GAN)模型是有监督的,即利用了数据集中的标签信息。在传统GAN中,Discriminator的打分非常简单粗暴,生成的图像比较真实打高分,比较模糊的打低分。但是当引入了标签信息以后,打分规则需要变得更加严格。也就是说,模糊的图像还是打低分;但是在清晰真实的生成图像中,如果该图像与他的标签不匹配,也是需要打低分的。

CGAN的结构与传统的GAN非常相似,其模型如下图所示:

在这里插入图片描述

根据上面的模型图,CGAN引入标签 yyy 的方法也非常直接,就是在Generator和Discriminator的输入层,加上一个额外的one-hot向量,也就是图像的标签信息。因此,整个优化目标就变为:

V(G,D)=Ex∼Pdata[log(D(x∣y))]+Ez∼Pz[1−log(D(G(z∣y)))]V(G,D)=E_{x \sim P_{data}}[log(D(x|y))]+E_{z \sim P_{z}}[1-log(D(G(z|y)))]V(G,D)=ExPdata[log(D(xy))]+EzPz[1log(D(G(zy)))]

根据公式可以看出,Generator和Discriminator都改造成了条件概率的形式,即在给定标签向量 yyy 的条件下进行计算。因此,可以看作是每一个类别 yyy 都对应一个隶属于自己的目标函数。有了这个约束,假如生成了清晰但是类别与标签不匹配的图像,也会当做fake来进行打分。因此可以通过调整标签的值,来改变生成数据的类别。

InfoGAN

相对于CGAN来说,InfoGAN是通过无监督学习来得到一些潜在的特征表示,这些潜在的特征就包括数据的类别。如果现在有一个数据集,里面的数据没有标签信息,但仍存在潜在的类别差异,此时InfoGAN就可以提供一种无监督的方法,来辨别出数据中潜在的类别差异,并且可以通过控制潜在编码 latent code 来生成指定类别的数据。

举个不恰当的栗子,现在摆在我面前有一卡车美食,但是我并不知道他们是什么(没有标签),只知道这些都是食物。现在我吃到一个带壳的、两个钳两条腿的、味道鲜美的东西,特别好恰,但由于没有(澳洲大螃蟹)这个标签,所以无法通过CGAN去得到它。但是呢,虽然有一卡车的美食,且没有标签信息区分他们的类别,但很显然他们是有潜在的类别区分的,螃蟹和狗不理包子就是不一样…因此这时候通过无监督的InfoGAN,即使是在没有标签信息的指导下,也可以学习到样本中潜在的类别差异,从而可以生成鲜美可口的澳洲大螃蟹。

在这里插入图片描述

InfoGAN 将 Generator 的输入拆分成两个部分,一部分是 latent code,一般记作 ccc,另一部分和传统 GAN 的输入一样,是一个噪声向量 zzz。其中,ccc 通常包括两个部分,一部分是离散的,一部分是连续的。这个latent code是可以服从于某种分布的。对于MNIST数据集来说,离散的部分可以服从一个多项分布(Multinomial Distribution),取值空间是0-9内的随机数字;连续的部分可以服从某个连续的分布(如均匀分布、正态分布),每一个维度代表着某种潜在的数据特征(如笔画的粗细、倾斜程度等)。

InfoGAN的精髓在于,在原始GAN的基础上,加入 latent code生成数据 之间的互信息作为约束,使两者之间产生一定的关联。因为隐变量 ccc 携带着某种可以解释生成数据 G(z,c)G(z,c)G(z,c) 的信息。如果两者的相关性强,那么 cccG(z,c)G(z,c)G(z,c) 之间的互信息 I(c;G(z,c))I(c;G(z,c))I(c;G(z,c)) 就比较大(互信息简而言之,是描述两个随机变量相关程度的一种度量)。所以InfoGAN的优化目标可以改写为:

minGmaxDVI(G,D)=V(G,D)−λI(c;G(z,c))min_{G}max_{D}V_{I}(G,D)=V(G,D)-\lambda I(c;G(z,c))minGm<

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值