生成对抗网络

生成对抗网络

  • 生成对抗网络(Generative Adversarial Network)
    • generate
    • why 输出分布(distribution)
  • GAN
    • Anime face Generation
      • Unconditional generation
      • Discriminator
    • basic idea of GAN
    • algorithm for GAN
    • theory for GAN
    • tips for training GAN
      • 变换divergence
        • WGAN
        • more tips
    • GAN for sequence generation
  • more generative model
  • evaluate
  • conditional generation
  • learning from unpaired data
    • cycle GAN
    • GAN for 翻译

生成对抗网络(Generative Adversarial Network)

generate

生成对抗网络_第1张图片

why 输出分布(distribution)

我们希望找到的function对于同样的输入有多种可能的输出。
生成对抗网络_第2张图片

GAN

Anime face Generation

Unconditional generation

生成对抗网络_第3张图片

Discriminator

生成对抗网络_第4张图片

basic idea of GAN

示例:generator生成图片,discriminator分辨生成的图片,然后generator调整其中参数继续生成图片(调整目标是为了骗过discriminator),discriminator也进一步调整试图分辨生成图片与真实图片之间的差距,以此类推

algorithm for GAN

生成对抗网络_第5张图片

固定生成器,训练判别器:将数据集中的真实图片label为1,generator产生的图片label为0,discriminator可以使用分类/回归方法判断图片之间的差异

生成对抗网络_第6张图片

调整network使得输出的分数更高

生成对抗网络_第7张图片

反复训练 G,D

theory for GAN

生成对抗网络_第8张图片

已知一个normal distribution经过generator得到一个分布PG,真实数据的分布记为Pdata,我们的目的是让PG和Pdata尽可能的接近。
即该问题中定义loss function为PG与Pdata之间的举例,并找到一组网络参数使loss function最小

how to get the Div
通过sampling
生成对抗网络_第9张图片
how to use sampling
use real data and generated data to train discriminator
生成对抗网络_第10张图片

真实的图给高分,生成图给低分
训练过程就是:最大化目标函数
目标函数是:将real data通过判别器得到的分数取log(D(y)),同理对生成图片通过判别器得到分数D(y)取log(1-D(y)),即让真实图分数越大越好,生成图分数越小越好。

生成对抗网络_第11张图片
可以通过变化目标函数使用不同的divergence
生成对抗网络_第12张图片
不同的divergence要如何设计objective function?
using the divergence you like

tips for training GAN

变换divergence

在最早的GAN中我们选择最小化的是JS divergence
在大多数案例中,PG和Pdata重叠部分非常少

  • 图片是高维空间中的低维manifold(流体),其重叠部分注定很小(就好像二维空间中的两条直线,除非刚好重合,否则重叠部分很小)
  • 我们对PG和Pdata的了解仅限于sample,可能由于sample原因导致重叠部分较少(如果sample的点不够多不够密,也是没有重叠的)

而两个没有重叠的分布算JS divergence永远为log2
生成对抗网络_第13张图片生成对抗网络_第14张图片变换divergence——wasserstein distance

生成对抗网络_第15张图片生成对抗网络_第16张图片

假设有一台推土机,推土机把P堆土挪到Q堆土所移动的平均距离就是wasserstein distance
穷举所有moving plan,找最短平均距离即为wasserstein distance

生成对抗网络_第17张图片

wasserstein distance可以看出由左到右,模型越来越好

WGAN

生成对抗网络_第18张图片

D 需要是一个足够平滑的function(否则无法收敛)

生成对抗网络_第19张图片

more tips

生成对抗网络_第20张图片生成对抗网络_第21张图片

GAN for sequence generation

生成对抗网络_第22张图片生成对抗网络_第23张图片

more generative model

生成对抗网络_第24张图片生成对抗网络_第25张图片

监督学习的方法

evaluate

通过影像辨识评估GAN产生图片的效果
生成对抗网络_第26张图片
生成对抗网络_第27张图片

Mode Collapse,中文又称模式奔溃,主要出现于 GAN 训练的后期阶段,生成器生成图像样式单一问题。回顾 GAN 的原理,判别器用于分辨出真实图像和生成图像而生成器致力于生成让判别器难以分辨真伪的图像。原始的 GAN 损失更关注生成单张图像是否真实,而非生成的图像“们”是否符合实际的图像分布。这给了生成器投机取巧的机会,只生成个别几张逼真的样本,生成的图像真实但单一,不符合实际的图像分布。
生成对抗网络_第28张图片

Mode Dropping,指 GAN 能很好地生成训练集中的数据,但难以生成非训练集的数据,“缺乏想象力”。因为采样数量的局限性,现实中我们无法采集到全部可能的图像,即采集到所有可能的图像是不可能的(如果有能力采集到所有可能的图像,那么我们也就不需要 GAN 来生成图像了),所以通常我们会采样,采集一定数量的图像来代表整个图像分布。如图2所示,generated data 分布过于与训练集 real data 分布近似,但由于 real data 无法代表整体分布,生成器无法生成没见过的图像。可以看到在 iteration t 和 iteration t+1,生成器生成的图像除了颜色以外没有其他的变化。这就像是我们考试前不理解知识点而直接背答案一般,题目一变,就直接不会了。个人感觉这种现象也更像是过拟合于训练集。

Inception Score
生成对抗网络_第29张图片Frechet Inception Distance(FID)
生成对抗网络_第30张图片
more
生成对抗网络_第31张图片

conditional generation

输入文字产生图片
生成对抗网络_第32张图片生成对抗网络_第33张图片输入图片产生图片
生成对抗网络_第34张图片

learning from unpaired data

supervied learning:paired data(数据+label)
生成对抗网络_第35张图片
如何使用GAN做无监督学习
生成对抗网络_第36张图片

直接从X中sample训练generator和discriminator使之接近Y中sample的话,很有可能会忽略输入特征直接生成Y sample图像,这样也是不合理的
conditional GAN (使用成对data进行训练)

此时没有成对资料——cycle GAN

cycle GAN

从X转换到Y,再从Y转换到X,使转换前和转换后越接近越好
三层:generator(x2y);generator(y2x);discriminator
生成对抗网络_第37张图片more GAN(风格转换类)
生成对抗网络_第38张图片

GAN for 翻译

生成对抗网络_第39张图片

你可能感兴趣的:(机器学习—李宏毅,生成对抗网络,python,人工智能)