Conditional GAN

Posted zhiyong_will

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Conditional GAN相关的知识,希望对你有一定的参考价值。

1. 概述

GAN的出现为数据生成提供了一种新的思路,以图像生成为例,在GAN框架中,不再需要其他复杂的操作,如Markov Chain等,只需要对定义好的网络进行backpropagation即可完成生成网络的训练。在原始的GAN框架中,包括了两个部分,分别为生成网络(Generator) G G G和判别网络(Discriminator) D D D,其中生成网络(Generator) G G G用于生成图片,判别网络(Discriminator) D D D用于判别一张图片是否是真实的。通过不断提高生成网络 G G G的生成质量,最终“骗”过判别网络 D D D,在此过程中,判别网络 D D D也在不断提高自身的判别能力,通过如此的一个动态的“博弈”过程,最终,训练好的生成网络 G G G便可以用于生成“以假乱真”的图片。

然而在所有的过程中,无论是生成过程还是判别过程都是无任何指导的,Conditional GAN[1]提出在上述的两个过程中引入一个条件,以此指导上述的两个过程。

2. 算法原理

2.1. GAN原理回顾

在原始的GAN框架中,包括了两个部分,分别为生成网络(Generator) G G G和判别网络(Discriminator) D D D,其中:

  • 生成网络(Generator) G G G用于生成图片,其输入是一个随机的噪声 z \\boldsymbolz z,通过这个噪声生成图片,记作 G ( z ) G\\left ( \\boldsymbolz \\right ) G(z)
  • 判别网络(Discriminator) D D D用于判别一张图片是否是真实的,对应的,其输入是一整图片 x \\boldsymbolx x,输出 D ( x ) D\\left ( \\boldsymbolx \\right ) D(x)表示的是图片 x \\boldsymbolx x为真实图片的概率

在GAN框架的训练过程中,希望生成网络 G G G生成的图片尽量真实,能够欺骗过判别网络 D D D;而对于判别网络 D D D,希望能够把 G G G生成的图片从真实图片中区分开。这样的一个过程就构成了一个动态的“博弈”。最终,GAN希望能够使得训练好的生成网络 G G G生成的图片能够以假乱真,即对于判别网络 D D D来说,无法判断 G G G生成的网络是不是真实的。此时,训练好的生成网络 G G G便可以用于生成“以假乱真”的图片。

GAN的价值函数:

m i n G    m a x D    V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g    D ( x ) ] + E z ∼ p z ( z ) [ l o g    ( 1 − D ( G ( z ) ) ) ] \\undersetGmin\\; \\undersetDmax\\; V\\left ( D,G \\right )=\\mathbbE_\\boldsymbolx\\sim p_data\\left ( \\boldsymbolx \\right )\\left [ log\\; D\\left ( \\boldsymbolx \\right ) \\right ]+\\mathbbE_\\boldsymbolz\\sim p_\\boldsymbolz\\left ( \\boldsymbolz \\right )\\left [ log\\; \\left ( 1-D\\left ( G\\left ( \\boldsymbolz \\right ) \\right ) \\right ) \\right ] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

GAN的训练过程如下所示:

2.2. Conditional GAN

Conditional GAN的思想也比较简单,在GAN的基础上增加了条件输入,在生成网络和判别网络中分别加入一个条件输入 y \\boldsymboly y y \\boldsymboly y可以为任何的额外信息,分别与原始的 x \\boldsymbolx x z \\boldsymbolz z这两个输入concat在一起,如下图所示:

Conditional GAN的价值函数:

m i n G    m a x D    V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g    D ( x ∣ y ) ] + E z ∼ p z ( z ) [ l o g    ( 1 − D ( G ( z ∣ y ) ) ) ] \\undersetGmin\\; \\undersetDmax\\; V\\left ( D,G \\right )=\\mathbbE_\\boldsymbolx\\sim p_data\\left ( \\boldsymbolx \\right )\\left [ log\\; D\\left ( \\boldsymbolx\\mid \\boldsymboly \\right ) \\right ]+\\mathbbE_\\boldsymbolz\\sim p_\\boldsymbolz\\left ( \\boldsymbolz \\right )\\left [ log\\; \\left ( 1-D\\left ( G\\left ( \\boldsymbolz\\mid \\boldsymboly \\right ) \\right ) \\right ) \\right ] GminDmaxV(D,G)=Expdata(x)[logD(xy)]+Ezpz(z)[log(1D(G(zy)))]

假设从真实数据中采样 m m m个样本 x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) \\left \\ \\boldsymbolx^\\left ( 1 \\right ),\\boldsymbolx^\\left ( 2 \\right ),\\cdots ,\\boldsymbolx^\\left ( m \\right ) \\right \\ x(1),x(2),,x(m),从噪音分布 p g ( z ) p_g\\left ( \\boldsymbolz \\right ) pg(z)中同样采样 m m m个样本,记为 z ( 1 ) , z ( 2 ) , ⋯   , z ( m ) \\left \\ \\boldsymbolz^\\left ( 1 \\right ),\\boldsymbolz^\\left ( 2 \\right ),\\cdots ,\\boldsymbolz^\\left ( m \\right ) \\right \\ z(1),z(2),,z(m),针对每一个样本,都有一个对应的条件,记为 y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) \\left \\ \\boldsymboly^\\left ( 1 \\right ),\\boldsymboly^\\left ( 2 \\right ),\\cdots ,\\boldsymboly^\\left ( m \\right ) \\right \\ y(1),y(2),,y(m),此时,上述价值函数可以近似表示为:

m i n G    m a x D    V ( D , G ) ≈ ∑ i = 1 m [ l o g    D ( x ( i ) ∣ y ( i ) ) ] + ∑ i = 1 m [ l o g    ( 1 − D ( G ( z ( i ) ∣ y ( i ) ) ) ) ] \\undersetGmin\\; \\undersetDmax\\; V\\left ( D,G \\right )\\approx \\sum_i=1^m\\left [ log\\; D\\left ( \\boldsymbolx^\\left ( i \\right )\\mid \\boldsymboly^\\left ( i \\right ) \\right ) \\right ]+\\sum_i=1^m\\left [ log\\; \\left ( 1-D\\left ( G\\left ( \\boldsymbolz^\\left ( i \\right )\\mid \\boldsymboly^\\left ( i \\right ) \\right ) \\right ) \\right ) \\right ] GminDmaxV(D,G)i=1m[logD(x(i)y(i))]+i=1m[log以上是关于Conditional GAN的主要内容,如果未能解决你的问题,请参考以下文章

Conditional GAN

李宏毅 2018最新GAN课程 class 2 Conditional Generation by GAN

NLP中的GAN

手把手写深度学习:十大GANs之conditional GANs

手把手写深度学习:十大GANs之conditional GANs

手把手写深度学习:十大GANs之conditional GANs