# 生成对抗网络
# 1.简介
生成对抗网络Generative Adversarial Networks是法国蒙特利尔大学发表在2014
年NIPS
上的文章,提出了非常有意思的生成对抗网络。关于生成模型的介绍可以参考MIT
的DeepLearning
课程 (opens new window)。
# 2.背景
# 2.1生成模型
生成模型是这样的模型,其从一个数据分布中采样一部分点作为输入,然后训练模型来表征训练数据分布。
使用生成模型的优点有:
- 1.能够去除数据中的偏置,找到数据的公共特征
- 2.当出现新的情况时可以做异常检测,处理未出现的情况
常见的生成模型有自编码器AutoEncoder
和生成对抗网络GANs
,这两种模型,一般输入是图像,输出也是图像,网络本身包含了下采样和上采样的过程,似乎把模型变量隐藏了,因此也称为隐变量模型Latent Variable Models
。
# 2.2自编码器
自编码器是通过下采样的编码器和上采样解码器来训练模型,使得对于输入图像得到与原图像大小相同的图像,然后最小化重建误差,来学习训练数据中的隐藏公共特征。
# 2.3变分自编码器
变分自编码器(Variational auto-encoder,VAE)对每一个样本
# 3.生成对抗网络
生成对抗网络有两部分组成,一个生成器和判别器,生成器用来将一个随机的输入生成一个图像,并使该图像尽可能的接近真实图像以欺骗过判别器使判别器将生成器生成的图像当成真实图像。而判别器则尽可能的区分出生成器生成的图像和真实图像。
生成对抗网络的结构及损失函数
graph TD
a(noise)-->b[Generator]-->c(generated_images)
c-->d[Discriminator]-->e(fake_output)
f(image)--->h[Discriminator]--->g(real_output)
subgraph generated_loss
sg1(ones_like_fake_output)--> sg2[cross_entropy]
e-->sg2
sg2-->sg(generated_loss)
end
subgraph discriminator_loss
ds1(ones_like_real_output)--> ds2[cross_entropy_real_loss]
g-->ds2
ds4(zeros_like_fake_output)--> ds3[cross_entropy_fake_loss]
e-->ds3
ds[discriminator_loss]
ds2-->ds
ds3-->ds
end
代码实现可参考gitee仓库
(opens new window)