学习记录(三)生成对抗网络的初步认识

学习记录(三)

1. 生成对抗网络(GAN)

Algorithm:
Initialize θd for D(discriminator)and θg for G(generator)

  • 在每一个训练迭代周期:
  1. 从database中采样出m个数据{x1,x2,…,xm}
  2. 从一个噪声分布(正态分布、高斯分布等)中采样出m个random vector{z1,z2,…,zm}
  3. 由采样得到的m个vector得到m张image(一个vector经过generator后产生一个image),即
    在这里插入图片描述
  4. 更新discriminator的参数θd 来最大化:

    在这里插入图片描述
    第一个式子表示通过discriminator网络后真实图片(xi)的得分高,generator产生的图片(x一把i)的得分低 。
    第二个式子表示梯度上升法(加号),不断更新,使得第一个式子的V越大越好。

到此为止上面为discriminator网络。

接下来为generator网络。

  1. 从一个噪声分布(正态分布、高斯分布等)中采样出m个random vector {z1,z2,…,zm}(不需要与2中的相同)
  2. 更新generator的参数θg 来最大化:

    在这里插入图片描述
    第一个式子表明希望generator产生的图片通过discriminator后的分数越大越好。
    第二个式子表示梯度上升法(加号),不断更新,使得第一个式子的V越大越好。

discriminator网络和generator网络会反复的执行。

GAN as structured learning

structured learning:output a sequence,a matrix,a graph,a tree… 当模型输出复杂时,为结构模型。

  • Generator(Bottom Up): Learn to generate the object at the component level

  • Discriminator(Top Down): Evaluating the whole object, and find the best one

Auto-encoder:
在这里插入图片描述

Generator相当于图中的Decoder,Randomly generate a vector as code,然后这个code通过Generator产生Image。

Variational Auto-encoder(VAE):

在这里插入图片描述
Discriminator:

  • Discriminator is a function D(network,can deep)
    Input x:an object x(e.g. an image)
    Output D(X):scalar which represents how “good” an object x is

  • Suppose we already have a good discriminator D(x)…
    在这里插入图片描述
    所以其实discriminator自己也可以产生输出。

Discriminator - Training:

  • General Algorithm
  1. Given a set of positive examples,randomly generate a set of negative examples.
  2. In each iteration,learn a discriminator D that can discriminate positive and negative examples.
  3. Generate negative examples by discriminator D.

(即不断用discriminator生成的图像去替换negative examples)
在这里插入图片描述
如图,蓝色的即为negative examples。看哪些非目标的分数高,就把negative examples移过去作为新的negative examples.
最后重合的时候训练结束:
在这里插入图片描述

Discriminator - Generator之间的区别:

  • Generator:
    优点是容易产生图片,缺点是只能学习表象,很难学习pixel之间的联系,只是生硬地模仿。
  • Discriminator:
    优点是它会考虑大局,缺点是negative采样很难搞嘞。

Discriminator + Generator:
就是把:
在这里插入图片描述
换成:
在这里插入图片描述
即用Generator去产生negative examples.

妙啊


2. Conditional GAN

Generator:
在这里插入图片描述

discriminator:
在这里插入图片描述
discriminator需要考虑两个问题:x是否真实,c和x是否match。

Algorithm:

  • 在每个训练迭代周期:
  1. 从database中采样m个positive examples{(c1,x1),(c2,x2),……,(cm,xm)}(c是text,x是image)
  2. 从一个噪声分布中采样出m个random vector{z1,z2,…,zm}
  3. 由采样得到的positive examples和噪声得到m张image,即
    在这里插入图片描述
  4. 再去database里去采样m个positive examples {x1,x2,……,xm}
  5. 更新discriminator的参数θd 来最大化:

    在这里插入图片描述
    第一个式子表示c和x配对则得分高(logD(ci,xi)),而一段文字c和generate出来的x配对则为低分(第二项),而一段文字c和从database出来的x配对也为低分(第三项)。
    第二个式子表示梯度上升法(加号),不断更新,使得第一个式子的V越大越好。

到此为止上面为discriminator网络。

接下来为generator网络。

  1. 从一个噪声分布中采样出m个random vector {z1,z2,…,zm}(不需要与2中的相同)
  2. 从database的m种condition中采样出m个{c1,c2,…,cm}
  3. 更新generator的参数θg 来最大化:

    在这里插入图片描述
    第一个式子表明希望generator产生的图片通过discriminator后的分数越大越好。
    第二个式子表示梯度上升法(加号),不断更新,使得第一个式子的V越大越好。(图中好像写错了…

discriminator网络和generator网络会反复的执行。



3. Unsupervised Conditional GAN

Transform an object from one domain to another without paired data(e.g. style transfer)

  • 方法一:直接Transformation(转换差距较小)
  • 方法二:Projection to Common Space(转换差距较大)

方法一:Direct Transformation

在这里插入图片描述

这种做法很有可能Generator会忽略输入,输出一些与输入无关的,为了能骗过Discriminator。

Cycle GAN:

在这里插入图片描述
同时去训练两个generator和两个discriminator。
类似的Disco GAN、Dual GAN等根Cycle GAN其实都是一样的思路。

方法二:Projection to Common Space

在这里插入图片描述
因为是unsuperviced,所以两条网络要分开训练,相当于训练两个Vae GAN。
这种产生的问题是:The images with the same attribute may not project to the same position in the latent space. 就是说他们两个训练出来的输出可能风马牛不相及。

于是就产生了很多来解决这个问题的东西,比如说如下图所示的Couple GAN、UNIT:

在这里插入图片描述
Sharing the parameters of encoders and decoders. 即Encoder的最后几个layer的参数共享,Decoder的前几个layer的参数共享。

还有个方法如下:
在这里插入图片描述
即让Domain Discriminator去判断vector是来自X Domain还是Y Domain。
The domain discriminator forces the output of encoderX and encoderY have the same distribution.

还可以cycle起来嘞:

在这里插入图片描述

跟cycle GAN差不多,用在了Combo GAN里面。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值