生成式对抗网络(Generative Adversarial Networks,GANs)
Posted Joe-Han
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成式对抗网络(Generative Adversarial Networks,GANs)相关的知识,希望对你有一定的参考价值。
1. 简介
首先简要介绍一下生成模型(Generative model)与判别模型(Discriminative mode)的概念:
- 生成模型:对联合概率进行建模,从统计的角度表示数据的分布情况,刻画数据是如何生成的,收敛速度快,例如朴素贝叶斯,GDA,HMM等。
- 判别模型:对条件概率 P(Y|X) 进行建模,不关心数据如何生成,主要是寻找不同类别之间的最优分类面,例如LR,SVM等。
判别模型在深度学习乃至机器学习领域取得了巨大成功,其本质是将样本的特征向量映射成对应的label;而生成模型由于需要大量的先验知识去对真实世界进行建模,且先验分布的选择直接影响模型的性能,因此此前人们更多关注于判别模型方法。生成式对抗网络(Generative Adversarial Networks,GANs)是蒙特利尔大学的Goodfellow Ian于2014年提出的一种生成模型, 在之后引起了业内人士的广泛关注与研究。
GANs中包含了两个模型,一个是生成模型
G
,另一个是判别模型
- 生成模型 G :不断学习训练集中真实数据的概率分布,目标是将输入的随机噪声转化为可以以假乱真的图片(生成的图片与训练集中的图片越相似越好)
- 判别模型
D :判断一个图片是否是真实的图片,目标是将生成模型 G 产生的“假”图片与训练集中的“真”图片分辨开。
GANs的实现方法是让
2. 生成对抗网络
GANs中生成模型和判别模型的选择没有强制限制,在Ian的论文中,判别模型
D
和生成模型
原论文在参数的更新过程,是对 D 更新
在对判别模型
D 的参数进行更新时:对于来自真实分布 pdata 的样本 x 而言,我们希望D(x) 的输出越接近于1越好,即 logD(x) 越大越好;对于通过噪声 z 生成的数据G(z) 而言,我们希望 D(G(z)) 尽量接近于0(即 D 能够区分出真假数据),因此log(1−D(G(z))) 也是越大越好,所以需要 maxD 。在对生成模型 G 的参数进行更新时:我们希望
G(z) 尽可能和真实数据一样,即 pg=pdata 。因此我们希望 D(G(z)) 尽量接近于1,即 log(1−D(G(z))) 越小越好,所以需要 minG 。需要说明的是, logD(x) 是与 G(z) 无关的项,在求导时直接为0。
原论文中对GANs理论上的有效性进行了分析,即当固定
G
更新
对抗生成网络 Generative Adversarial Networks
机器学习-白板推导系列(三十一)-生成对抗网络(GAN,Generative Adversarial Network)
Tensorflow生成对抗网络(Generative Adversarial Networks)实战案例