生成对抗网络
生成对抗网络(Generative Adversarial Network)
generate
why 输出分布(distribution)
我们希望找到的function对于同样的输入有多种可能的输出。
GAN
Anime face Generation
Unconditional generation
Discriminator
basic idea of GAN
示例:generator生成图片,discriminator分辨生成的图片,然后generator调整其中参数继续生成图片(调整目标是为了骗过discriminator),discriminator也进一步调整试图分辨生成图片与真实图片之间的差距,以此类推
algorithm for GAN
固定生成器,训练判别器:将数据集中的真实图片label为1,generator产生的图片label为0,discriminator可以使用分类/回归方法判断图片之间的差异
调整network使得输出的分数更高
反复训练 G,D
theory for GAN
已知一个normal distribution经过generator得到一个分布PG,真实数据的分布记为Pdata,我们的目的是让PG和Pdata尽可能的接近。
即该问题中定义loss function为PG与Pdata之间的举例,并找到一组网络参数使loss function最小
how to get the Div
通过sampling
how to use sampling
use real data and generated data to train discriminator
真实的图给高分,生成图给低分
训练过程就是:最大化目标函数
目标函数是:将real data通过判别器得到的分数取log(D(y)),同理对生成图片通过判别器得到分数D(y)取log(1-D(y)),即让真实图分数越大越好,生成图分数越小越好。
可以通过变化目标函数使用不同的divergence
不同的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
变换divergence——wasserstein distance
假设有一台推土机,推土机把P堆土挪到Q堆土所移动的平均距离就是wasserstein distance
穷举所有moving plan,找最短平均距离即为wasserstein distance
wasserstein distance可以看出由左到右,模型越来越好
WGAN
D 需要是一个足够平滑的function(否则无法收敛)
more tips
GAN for sequence generation
more generative model
监督学习的方法
evaluate
通过影像辨识评估GAN产生图片的效果
Mode Collapse,中文又称模式奔溃,主要出现于 GAN 训练的后期阶段,生成器生成图像样式单一问题。回顾 GAN 的原理,判别器用于分辨出真实图像和生成图像而生成器致力于生成让判别器难以分辨真伪的图像。原始的 GAN 损失更关注生成单张图像是否真实,而非生成的图像“们”是否符合实际的图像分布。这给了生成器投机取巧的机会,只生成个别几张逼真的样本,生成的图像真实但单一,不符合实际的图像分布。
Mode Dropping,指 GAN 能很好地生成训练集中的数据,但难以生成非训练集的数据,“缺乏想象力”。因为采样数量的局限性,现实中我们无法采集到全部可能的图像,即采集到所有可能的图像是不可能的(如果有能力采集到所有可能的图像,那么我们也就不需要 GAN 来生成图像了),所以通常我们会采样,采集一定数量的图像来代表整个图像分布。如图2所示,generated data 分布过于与训练集 real data 分布近似,但由于 real data 无法代表整体分布,生成器无法生成没见过的图像。可以看到在 iteration t 和 iteration t+1,生成器生成的图像除了颜色以外没有其他的变化。这就像是我们考试前不理解知识点而直接背答案一般,题目一变,就直接不会了。个人感觉这种现象也更像是过拟合于训练集。
Inception Score
Frechet Inception Distance(FID)
more
conditional generation
输入文字产生图片
输入图片产生图片
learning from unpaired data
supervied learning:paired data(数据+label)
如何使用GAN做无监督学习
直接从X中sample训练generator和discriminator使之接近Y中sample的话,很有可能会忽略输入特征直接生成Y sample图像,这样也是不合理的
conditional GAN (使用成对data进行训练)
此时没有成对资料——cycle GAN
cycle GAN
从X转换到Y,再从Y转换到X,使转换前和转换后越接近越好
三层:generator(x2y);generator(y2x);discriminator
more GAN(风格转换类)