Lecture 6(Preparation):生成式对抗网络(Generative Adversarial Network, GAN)

文章介绍了GAN的基本概念,包括网络作为生成器,以及GAN的训练过程。理论部分探讨了GAN背后的损失函数和如何利用判别器计算分布差异。提到了WGAN作为解决JS散度问题的策略。此外,讨论了生成器效能评估、条件式生成和CycleGAN在无监督学习中的应用,如图像风格转换和文本到图像生成。
摘要由CSDN通过智能技术生成

目录

(一)基本概念介绍

(二)Theory behind GAN

(三)生成器效能评估与条件式生成

GAN for Sequence Generation:

Evaluation of Generation:

Conditional Generation:

(四)Cycle GAN


(一)基本概念介绍

Network as Generator:

        上图中,输入同一个x,输出可以是一个Distribution的Network叫做Generator。

        当任务需要一些“创造力”时,就需要用到Generative的model。比如输入一个问题:有红眼睛的角色,这时输出可以有不同的答案,所以输出需要是一个Distribution。

        GAN是Generative的model中非常知名的一个model。

GAN举例:Anime Face Generation

        Unconditional generation:Generator的输入没有x,只有sample出来的z

        GAN需要训练Generator和Discriminator,Generator和Discriminator都是neural network。Discriminator作用如下:

Basic Idea of GAN:

Algorithm (从演算法的角度讲述Generator和Discriminator的运作方式):

        ① lnitialize generator and discriminator

        ② In each training iteration:

        Step 1: Fix generator G, and update discriminator D. Discriminator learns to assign high scores to real objectsand low scores to generated objects.

        Step 2: Fix discriminator D, and update generator G. Generator learns to“fool” the discriminator.

(二)Theory behind GAN

在Generation这个问题中,Div(PG, Pdata)就是Generator的loss function,我们要做的事情就是去minimize Div(PG, Pdata),找到一组G的参数,使得Div(PG, Pdata)的值最小。

How to compute the divergence?这是GAN需要解决的问题,是train Generator的时候需要解决的问题。GAN的解决方案——借助Discriminator:

Discriminator训练过程是去maxmize Objective Function,即去maxmize V(G,D)。而maxV(G,D)的值和JS divergence有关。

maxV(G,D)的值和JS divergence有关。当PG和Pdata这两组data不像的时候,divergence很大,maxV(G,D)的值也很大。当PG和Pdata这两组data很像的时候,divergence很小,maxV(G,D)的值也很小。所以在G*的式子里,用maxV(G,D)近似代替Div(PG, Pdata),从而解决divergence不好计算的问题:

Tips for GAN:

        GAN is difficult to train. GAN训练的小技巧非常多,下面介绍一个最知名的小技巧——WGAN。

        JS divergence is not suitable. In most cases, PG and Pdata are not overlapped.

        JS divergence存在的问题:JS divergence is always log2 if two distributions do not overlap.

        既然JS divergence存在问题,换一个衡量两个distribution相似程度的方式,使用Wasserstein distance去衡量两个distribution相似程度。

        JS divergence v.s. Wasserstein distance:

        WGAN: Evaluate Wasserstein distance between Pdata and PG

        下面是一些把D限制在1-Lipschitz,让D变得平滑的方法,即一些不同的WGAN的做法:

(三)生成器效能评估与条件式生成

即使用了一些tips,Train GAN仍然是比较困难的事。在训练的时候,Generator和Discriminate是相互促进的关系,当它们其中一方在train的时候没能够提升效果,那么另一方也无法进步,从而导致整个训练过程train不起来。

GAN for Sequence Generation:

        Train GAN最难的是拿GAN来生成文字,如下图,当Decoder的参数发生一点小的变化,它输出的Distribution也会有小的变化,但变化很小的时候,不会影响最后的输出结果,比如原来的输出是机器学习,参数变化后的输出还是机器学习。那么变化前和变化后Discriminate的输入没有发生改变,Discriminate的输出也就不会有改变。

        当Decoder的参数有变化而Discriminate的输出没有改变的时候,就没有办法算微分、做Gradient Descent。

        遇到不能用Gradient Descent Train的问题,可以当做Reinforcement Learning的问题去硬做。但是Reinforcement Learning和GAN都很难Train,它们组合在一起就更加难Train起来。所以要用GAN产生一段文字是一个很大的难题:

有关Generative的model:GAN、VariationalAutoencoder(VAE)、FLOW-based Model

GAN的performance在Generative的model中是比较好的,并且其余两个model的难Train程度和GAN相比不遑多让。

Evaluation of Generation:

评估方法一:把GAN产生出来的图片输入到影像分类系统里面,看最后产生的结果

        影像分类系统输入是一张图片,输出是一个机率分布,机率分布越集中,说明GAN产生的结果越好。

        方法一会被Mode Collapse这个问题骗过去。Mode Collapse是指在Train GAN的时候,Generative model生成的图像都是重复的图片,例如下图中很多图像都是重复的。目前还没有很好的办法解决Mode Collapse这个问题。

        还有一个跟Mode Collapse有点像、但是更难侦测到的问题——Mode Dropping。Mode Dropping是指产生资料只有真实资料的一部分。下面通过方法二来解决Mode Dropping的问题。

评估方法二:Diversity

评估方法三:FID

以上三个方法也没有完全解决GAN的Evaluation的问题。 比如生成的图像和输入的图像是一样的,或者生成的图像是输入图像的翻转,这样评估的效果很好,但并不需要这样的和输入图像一样的生成图像,我们希望生成的是一些全新的图像:

Conditional Generation:

在上面讨论中讲到的Generator,输入都只是一个随机的分布:

现在我们想要更进一步,操控Generator的输出。给输入一个Condition x,让Generator根据x和z产生y:

训练Conditional GAN:

Conditional GAN的应用:

        ① Text-to-image

        ② 输入图片,产生图片

        ③ 输入一段声音,产生对应图片

(四)Cycle GAN

GAN的神奇应用:把GAN用在unsupervised Learning上。

Unsupervised Learning:

Learning from Unpaired Data: Can we learn the mapping without any paired data? Unsupervised Conditional Generation.

        下面以Image Style Transfer为例,介绍Unsupervised Conditional Generation:

Cycle GAN:

        ① 影像上:Image Style Transfer

        ② 文字上:Text Style Transfer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值