生成对抗网络(GAN)
paper原文:Generative Adversarial Networks
概览
做了什么
- 提出了新的模型
对抗模型
- 通过
生成模型(G)
与鉴别模型(D)
之间的相互竞争。即D模型要将 G 生成假数据
调出,而 G 模型要设法“骗过”D 模型的鉴别,最终提高 G 模型的生成质量 - 通过实验当 D 最终结果稳定在
12 时 G 模型生成效果最好。
- 通过
优势
- 不需要使用Markov 决策框架
- 框架移植性强,可以用于各种训练、优化算法,以及现有的模型中。
- 两个模型都仅仅使用了
后向传播
与dropout
算法 - G 模型生成样本只需要使用
前向传播
不足
- 在当时未能明确找到代表
pg(x) 产物 - D 与 G 的训练必须同步,换句话说 G 不能脱离 D 的训练而更新多次。(防止出现
Helvetica scenario
问题)
模型组成
生成模型 G
- 通过
噪声
(一维序列)生成样本,尽力混淆 D 模型的鉴定。 - 随机噪声通过多层感知机生成
- 通过多层感知机输入
pz(z) 映射到数据空间G(z;θg) - 训练 G 来最小化概率
log(1−D(G(z))) .使得从噪声生成的数据足够真实。
鉴别模型 D
- D 主要是学习数据来源到底是来自真实数据,还是生成数据。
- 本质为二分类器
- 数值
D(x) 代表 x 是由真实数据获得并非由 G 生成的概率 - 同样使用多层感知机结构
- 训练 D 来最大化概率
D(x) ,使得 D 精于鉴别噪声
数据
核心公式
分析:
- 要让整体最小,即让两个期望都小
- 当输入图片与模型 D 一定时,前面的期望数值是一定的。
- 这时让整体下降就要依赖后面的期望
- 注意期望一定层面上反馈了这组数据的平均性能
- 所以当后面值低意味着,生成的图片必须足以以假乱真
- 这恰恰就符合了 GAN 的目标
- 最佳情况:一个看起来超假的图片,经过生成器,“以假乱真”
- 只要G 的变化足够慢,D 就会被保持在一个较优的水平上
- 这个思路模仿了
SML/PCD
算法的思路
算法
上方为 GAN 网络的核心算法,几点注意事项
k
为一个超参数,定义让 D 在每次训练步骤中,优先 G 增长的次数。k 越大 D 的鉴别能力越强,最后 生成 G 就越像。但是需要耗费的资源开销也会增大m
为mini-batch
超参数,定义对多少输入以及生成样本做梯度下降。这是一种借鉴全局梯度下降
与随机梯度
下降两者优点的做法。当 m = 样本数量退化为全局梯度下降
。m =1 退化为随机梯度下降
- D 的训练核心是最大化鉴别梯度
- G 的训练核心是最小化鉴别梯度,即提高混淆能力
图示化描述

图示中:
- 蓝点线代表 D 模型的
D(x) 在 x 域的分布 - 黑点线代表正常样本在 x 区域的分布
- 绿点线代表 G 模型生成样本在 x 域的分布
- 下面的 z->x 表达了生成模型 G 通过噪音 z 向混淆数据 x 生成的映射情况
从过程上:
a
的过程是算法刚开始,D 模型还不能很好的分辨出x 分布中的数据来源。a->b
是算法中的最里层的k
步训练。训练模型 D,使其鉴伪能力加强- 到
b
过程蓝点线已经平滑,证明 D 已经具有较稳定的分辨性能。 b->c
的过程是后面训练 G 模型的过程。此时 D 性能一定,训练 G 向能最小化D(G(x)) 方向发展。- 到
c
过程下 G 的生成分布逐渐像元数据靠拢。G 的噪声的生成映射关系也向中间集中 c->d
的过程是上面算法逐渐训练的过程- 最后到
d
,G 已经有足够的混淆能力,D 认为数据一半是原始数据,一半为真实数据。此时 G 模型已优化到最大性能。
全局最优点 Pg = Pdata
也可认为上面核心公式结果为0.5
首先我们假定:
这里
这里我们可以对核心函数

这里首先把所以把 z更名为x
然后做抽象:
当
同时我们也可以从期望的角度重写 V 式:

此时当
我们此时可以将 C 式子改写为

因为当 G 数据分布于 D 分布不均时,就需要C 就需要加上关于
各自的
KL 散度
,也就是

定值加上两者的 JSD 散度
由于JS 散度
不为负数且当
于是得出题设的答案
效果与对比
展望
在当时作者最后提出几个重点展望
- 一个条件模型使得有参量
c
可以随时被注入于模型 G 和 D 半监督学习
的提出- 后期论文
DCGAN
为GAN
与CNN
结合提供了具体实现方案。
来源:CSDN
作者:万能的仓鼠
链接:https://blog.csdn.net/OkingjerryO/article/details/78625321