GAN论文笔记
目录
NIPS-2014-generative-adversarial-nets-Paper
GAN论文精读
-
使用MLP(全连接神经网络)$\to$可使用反向传播简单的训练网络
-
生成器通过真实数据X(多维随机变量)学习$p_g$分布
-
定义一个先验高斯噪声分布$p_z(z)$其中z为多维随机变量(每次通过采样该分布得到),通过$G(z;\theta_g)$映射到输出,$\theta_g$为超参数
-
问题:收敛不够稳定,在求导更新梯度时产生很多问题
最优辨别器: $$ D_G^*(x)=\frac{P_{data(x)}}{P_{data}(x)+P_g(x)} $$
算法
每一次做迭代
for number of training iterations do
采样 k * 2m 个 examples
for k steps do
每一步有 2m 个 examples
【从噪声变量 z 的先验分布采样的 m 个 noise examples,从真实数据 data x 中采样 m 个 examples】
用 2m 个examples 输入价值函数 求梯度
m 个 examples 放进 log D(x^(i))
m 个 noise examples 放进 log (1 - D(G(z^(i)))
对 判别器 D 的参数求梯度,更新判别器 D 的参数
end for # for k steps do, 完成 k 次 2m 个数据采样
从噪音的先验分布中 sample m 个 noise samples
把 m 个 noise samples 放进 价值函数 (只有第二项,第一项与生成器 G 无关)
得到生成器 G 的梯度,更新生成器 G 的参数
每次迭代,先更新 D 再更新 G
end for # for number of training iterations
- k 不能太小 –> 保证 判别器 D 有足够的更新
- D 要对 G 生成的不错的数据 有一定的判别能力,不然 G 很无聊的,都不想糊弄 D,轻而易举。 警察不给力,假钞不会被发现,抓不到造假者,无需提升工艺,游戏结束。
- k 不能太大 –> D 过于完美,D(G(z^(i))) = 0,对值为 0 求导,G 梯度更新有困难
- 警察超厉害,造假者产一点假钞就会被发现,端掉制造工厂;造假者赚不到钱,不能提升工艺,结束游戏。
最好情况:双方实力相当、相爱相杀、一起进步。
k 的设计目标:使得 D 和 G 的更新进度差不多