一、 基本描述
1. 组成
1) 判别算法discriminative algorithms
判别算法根据输入数据的feature进行分类label; 比如这封邮件是不是垃圾邮件
2) 生成算法 generative algorithms
生成算法根据特定的label预测feature
3) 生成器 generator
一个卷积神经网络
生成新数据
4) 判别器 discriminator
一个卷积神经网络
评估生成数据的真实性
2. 工作过程
1) 简述
生成模型生成一些图片->判别模型学习区分生成的图片和真实图片->生成模型根据判别模型改进自己,生成新的图片->····

2) 过程
a) 在以下两个Minibatch应用梯度下降等优化算法
训练样本
生成样本
b) 优化
3) 结果
生成模型与判别模型无法提高自己——即判别模型无法判断一张图片是生成出来的还是真实的而结束
二、 数学描述
1. 生成模型 g(z)
1) 概念
输入z是一个随机噪声
g的输出就是一张图片
2. 判别模型 D(x)
1) 概念
输入X是从模型中的抽取的样本
D(x)的输出是0-1范围内的一个实数,用来判断这个图片是一个真实图片的概率是多大
2) 公式

解释: D=1(真实图片),则P_data=1, P_model=0
D=0(假的图片),则 P_data=0
3. 优化方法
o 交互迭代
固定g,优化D,一段时间后,固定D再优化g,直到过程收敛。
4. 代价函数
1) 判别器的代价函数J(D)

迄今为止,所有的判别其代价函数都一样,不一样的是生成器的代价函数。
这是一个标准的cross-entropy cost
真实数据的label=1,生成器生成的数据的label=0
目标是最小化判别器的代价函数
2) Minimax 博弈/零和博弈

3) Non-saturating heuristic启发式,非饱和博弈

启发式驱动是说按照实际操作改变策略,而不是遵循理论。
为了防止生成器的梯度消失,把生成器的cost变成:
4) Maximum likelihood最大似然博弈
5) Divergence的选择
6) Generator 的Cost function的比较

结论:使用non-saturating
三、 DCGAN
1. 引入——CNN
1) 概念
(convolutional neural network,卷积神经网络)。深度神经网络的一种,可以通过卷积层(convolutional layer)提取不同层级的信息
2) 输入
图片
3) 输出
图片
抽象表达(纹理/形状etc)
2. 简介
o 人们为图像生成设计了一种类似反卷积的结构:Deep convolutional NN for GAN(DCGAN)
o 是GAN的使用场景——在图片中的生成模型DCGAN。
3. 输入
o 随机噪声向量(高斯噪声etc)
4. 处理流程
o 输入通过与CNN类似但是相反的结构,将输入放大成二维数据。
o 通过生成模型+判别模型
o 生成图片
四、 训练GAN的tips
1. 用label训练
2. One-sided label smoothing
防止判别器的极端的可信分类(某一类的可能性为1)
帮助判别器抵抗生成器的攻击
3. 注意Batch norm的使用
1) Feature norm的定义
subtract mean, divide by standard deviation
2) 注意
会导致batch之间相互影响,应该使用virtual batch norm
4. 平衡G和D
D应该获胜,应该多锻炼D,D应该更加复杂
https://deeplearning4j.org/generative-adversarial-network#tips-in-training-a-gan
1. discriminator 与generator,固定一个,训练另一个
2. 开始训练generator之前预先训练discriminator
3. GAN训练很费时间,建议用GPU不要用CPU
五、 GAN与其他神经网络的比较
1. Auto encoder/decoder
可以压缩原始数据
2. VAE(Variational变化的 auto encoder)
增加了额外的限制
可以压缩原始数据
可以生成数据(生成效果没有GAN好)
六、 GAN的有趣应用
https://deeplearning4j.org/generative-adversarial-network#unclassified-papers--resources
七、 评估
1. inception scores
It's particularly interesting because it seems to be a very reliable way to "quantify realism" in GANs,
八、 前沿研究
1. 解决Non-convergence
2. 如何评估生成模型
3. 离散的输出
4. 半监督化学习
5. 。。。
网友评论