GAN笔记
Ian Goodfellow原作Generative Adversarial Nets论文阅读笔记。
关键点
- Generator
- Discriminator
- 对抗性的目标函数
- 先discriminator后generator的训练策略
模型
GAN同时训练了两个模型:生成器和判别器。生成器的训练目标是尽可能使判别器将生成对象判别为真,判别器的训练目标是尽可能将生成器生成的对象判别为假。
思想
GAN的核心思想是通过对抗同时提升生成器和判别器的表现,最终的目标是达到一个均衡点,在均衡点时,判别器只有50%的概率将生成器生成的对象判别为真,即判别器已经无法分辨生成器生成对象的真假,等价于随机乱猜。
重点在理解对抗体现在什么地方,个人认为是目标函数的优化方式上体现了对抗思想。传统网络目标函数优化只向一个方向进行,非增即减;GAN的特点在于,目标函数向着一个平衡的鞍点靠近,在靠近过程中同时更新了两个模型。
生成器
生成器是一个完整的网络,输入:随机噪声;输出:生成对象。生成器的输出拿去训练判别器。
判别器
判别器是一个完整的网络,输入:真实对象,生成器生成对象;输出:生成对象为真的概率。
目标函数
最小最大化函数:
$$ \min_{G}\max_{D} V(D,G) = E\left[log\left(D\left(x\right)\right)\right] + E\left[log\left(1 - D\left(G\left(z\right)\right)\right)\right] $$
目标函数有两重含义:
- 判别器的性能
- 生成器的性能
对抗性体现在对于判别器和生成器,目标函数优化的方向是相反的。
优化过程
每个iteration内:
- 先只训练k轮判别器D,梯度上升使D具有一定判别力。
- 再训练一次生成器G,梯度下降。