TripleGAN

NIPS 2017 《Triple Generative Adversarial Nets》

github


TripleGAN_第1张图片
在《Coupled Generative Adversarial Networks》中,作者使用了两个GANs实现了在无配对数据的的情况下,实现不同的domain之间的高层次的特征学习。除了couple GAN,类似的还有这篇文章所讲的TripleGANs,但它并不是直面理解的使用了三个GAN,而是在GAN中添加了一个分类器(classifier)。


背景

在这篇文章发表之前,在半监督学习方面,GANs已经取得一些不错的成果,但是它们存在两个问题:

  • 生成器 G G G和判别器 D D D无法各自都达到最优
  • 生成器 G G G无法掌握生成样本中的语义信息

对于第一个问题,有人使用了feature matching的技术,但是它在分类方面效果不错,但无法产生逼真的图像;也有人使用了minibatch discrimination的技术,但它可以产生逼真的图像,却无法同时在分类方面做的很好。

对于第二个问题,因为生成样本中的语义特征对于之后的应用很关键,所以从中提取出有意义的语义特征也是一件很重要的事情,为了解决这个问题,在其他的GAN的变种中也有专门的解决方案。

作者认为这两个问题的出现,主要是由于在传统的GAN中, G G G D D D双方博弈的过程使得 D D D无法同时兼容两个角色,既判别输入的样本是来自真实数据分布还是生成器,同时预测数据的类标签。这样的做法只能关注到数据的一部分信息,即数据的来源,而无法考虑到数据的类标签信息。

为了解决这个问题,在标准的GAN的基础上引入了分类器 C C C,这样它就有了三个部分 G 、 D 、 C G、D、C GDC,因为取名TripleGAN。G和C分别对图像和标签之间的条件分布进行特征描述,而D只需要专注于判别输入样本image-label的来源。

通过这样的做法,除了解决上面提出的两个问题,TripleGAN还有如下的优势:

  • 可以实现很好的分类效果
  • 通过在潜在的条件类空间中插值,实现输入样本在类和风格样式的分解,并在数据空间中平滑传输

整体理解

TripleGAN的结构如下所示:


TripleGAN_第2张图片

其中 R R R表示拒绝, A A A表示接受, C E CE CE表示监督学习的交叉熵损失。 p g p_{g} pg p c p_{c} pc p p p分别是由生成器、分类器和真实数据生成过程定义的分布, C E CE CE是保证它们之间一致性的无偏正则化。

上图中的 G G G C C C是两个条件网络, C C C为真实的图像数据生成伪标签, G G G给真实标签对应的假的图像数据, D D D 只用判别输入的data-label是否来自真实的带标签的数据集。通过 C C C G G G之间不断地对抗学习,最终可以同时得到不错的 C C C G G G,而且 D D D可以从 C C C得到关于无标签数据的标签信息,迫使 G G G生成正确的image-label数据。这样就解决了其他GANs无法解决的两个问题,并通过理论分析和实验分析,验证了TripleGAN最后可以学习到一个好的分类器和一个好的条件生成器。


理论分析

TripleGAN的目标不仅是可以为无标签的数据正确的预测对应的类标签,而且还可以生成真实的data-label数据。

P ( x , y ) = P ( x ) P ( y ∣ x ) P ( x , y ) = P ( y ) P ( x ∣ y ) P(x,y)=P(x)P(y|x)\\ P(x,y)=P(y)P(x|y) P(x,y)=P(x)P(yx)P(x,y)=P(y)P(xy)

首先我们先对TripleGAN中的各部分做一些假设:

  • C C C:描述了条件分布 P c ( x , y ) ≈ P ( y ∣ x ) P_{c}(x,y) \approx P(y|x) Pc(x,y)P(yx)
  • G G G:描述了条件分布 P G ( x , y ) ≈ P ( x ∣ y ) P_{G}(x,y) \approx P(x|y) PG(x,y)P(xy)
  • D D D:判别 ( x , y ) (x,y) (x,y)是否来自真是数据分布 P ( x , y ) P(x,y) P(x,y)

理想的博弈的最优均衡点出现在,当 C C C G G G定义的条件分布都收敛于真实数据分布 p ( x , y ) p(x,y) p(x,y) 的情况下。

  • p ( x ) 、 p ( y ) p(x)、p(y) p(x)p(y):分别表示真实数据集中的边缘分布
  • x x x x = G ( y , z ) x = G(y,z) x=G(y,z),表示生成器生成的假样本
  • p c ( x , y ) p_{c}(x,y) pc(x,y) p c ( x , y ) = p ( x ) p ( y ∣ x ) p_{c}(x,y)=p(x)p(y|x) pc(x,y)=p(x)p(yx),表示分类器生成的data-label数据
  • p g ( x , y ) p_{g}(x,y) pg(x,y) p g ( x , y ) = p ( y ) p ( x ∣ y ) p_{g}(x,y)=p(y)p(x|y) pg(x,y)=p(y)p(xy),表示生成器生成的data-label数据
  • p ( x , y ) p(x,y) p(x,y):表示从真实数据分布中采样的data-label数据

p c ( x , y ) p_{c}(x,y) pc(x,y) p g ( x , y ) p_{g}(x,y) pg(x,y) p ( x , y ) p(x,y) p(x,y)都输入到 D D D中,让其进行判别。那么三者之间的对间过程如下所示:
min ⁡ C , G max ⁡ D U ( C , G , D ) = E ( x , y ) ∼ p ( x , y ) [ log ⁡ D ( x , y ) ] + α E ( x , y ) ∼ p c ( x , y ) [ log ⁡ ( 1 − D ( x , y ) ) ] + ( 1 − α ) E ( x , y ) ∼ p g ( x , y ) [ log ⁡ ( 1 − D ( G ( y , z ) , y ) ) ] \begin{aligned} \min _{C, G} \max _{D} U(C, G, D)=& E_{(x, y) \sim p(x, y)}[\log D(x, y)]+\alpha E_{(x, y) \sim p_{c}(x, y)}[\log (1-D(x, y))] \\ &+(1-\alpha) E_{(x, y) \sim p_{g}(x, y)}[\log (1-D(G(y, z), y))] \end{aligned} C,GminDmaxU(C,G,D)=E(x,y)p(x,y)[logD(x,y)]+αE(x,y)pc(x,y)[log(1D(x,y))]+(1α)E(x,y)pg(x,y)[log(1D(G(y,z),y))]
其中 α \alpha α为平衡生成和分类重要性的超参数,本文设置 α = 1 2 \alpha=\frac{1}{2} α=21。当且仅当 p ( x , y ) = ( 1 − α ) p g ( x , y ) + α p c ( x , y ) p(x,y)=(1-\alpha)p_{g}(x,y)+\alpha p_{c}(x,y) p(x,y)=(1α)pg(x,y)+αpc(x,y)时,才能到达均衡点。但是很难确保当 p ( x , y ) = p g ( x , y ) = p c ( x , y ) p(x,y)=p_{g}(x,y)=p_{c}(x,y) p(x,y)=pg(x,y)=pc(x,y) 时为唯一的全局最优点,为此在 C C C中引入了standard supervised loss,定义如下:
R L = E ( x , y ) ∼ p ( x , y ) [ − log ⁡ p c ( y ∣ x ) ] \mathcal{R}_{\mathcal{L}}=E_{(x, y) \sim p(x, y)}\left[-\log p_{c}(y | x)\right] RL=E(x,y)p(x,y)[logpc(yx)]
它相当于衡量 p c ( x , y ) p_{c}(x,y) pc(x,y) p ( x , y ) p(x,y) p(x,y) 之间的KL散度,因为只要 C C C G G G中有一个趋近于数据的真实分布,另一个也会同样趋近于真实数据分布,所以这里选择一个方向即可。因此objective function转换成如下的形式:
min ⁡ C , G max ⁡ D U ~ ( C , G , D ) = E ( x , y ) ∼ p ( x , y ) [ log ⁡ D ( x , y ) ] + α E ( x , y ) ∼ p c ( x , y ) [ log ⁡ ( 1 − D ( x , y ) ) ] + ( 1 − α ) E ( x , y ) ∼ p g ( x , y ) [ log ⁡ ( 1 − D ( G ( y , z ) , y ) ) ] + R L \begin{aligned} \min _{C, G} \max _{D} \tilde{U}(C, G, D)=& E_{(x, y) \sim p(x, y)}[\log D(x, y)]+\alpha E_{(x, y) \sim p_{c}(x, y)}[\log (1-D(x, y))] \\ &+(1-\alpha) E_{(x, y) \sim p_{g}(x, y)}[\log (1-D(G(y, z), y))]+\mathcal{R}_{\mathcal{L}} \end{aligned} C,GminDmaxU~(C,G,D)=E(x,y)p(x,y)[logD(x,y)]+αE(x,y)pc(x,y)[log(1D(x,y))]+(1α)E(x,y)pg(x,y)[log(1D(G(y,z),y))]+RL
文中证明了 U ~ \tilde{U} U~对于 C C C G G G有唯一的全局最优点。

整体的算法描述如下所示:


TripleGAN_第3张图片

更多有关理论方面的证明,可见原论文的3.2和附录部分,很容易理解。


实验

作者在MNIST、SVHN、CIFAR0三个数据集上做了实验,分别和其他的相关算法进行比较,显示了TripleGAN分类的效果明显由于其他的算法,甚至好于ImprovedGAN。


TripleGAN_第4张图片

而且当带标签数据减少时,TripleGAN的分类效果也要优于ImprovedGAN。


TripleGAN_第5张图片

生成实验中,在MNIST上的生成效果优于使用feature matching的ImprovedGAN


TripleGAN_第6张图片

在CIFAR10上生成的图像的效果也很好


TripleGAN_第7张图片


总结

TripleGAN相比于其他的GANs,在数据方面而言,它不仅是可以生成效果较好的图像,同时还利用了图像的类标签信息。因此可以使用TripleGAN中的生成器,为指定的类标签生成样本;也可以使用其中的分类器,为图像打标签。综合来看,使用TripleGAN可以丰富训练的数据集,减少人工标注的开销。

你可能感兴趣的:(Deep,Learning,GAN)