目录

GAN论文笔记


NIPS-2014-generative-adversarial-nets-Paper

GAN论文精读

  • 使用MLP(全连接神经网络)$\to$可使用反向传播简单的训练网络

  • 生成器通过真实数据X(多维随机变量)学习$p_g$分布

  • 定义一个先验高斯噪声分布$p_z(z)$其中z为多维随机变量(每次通过采样该分布得到),通过$G(z;\theta_g)$映射到输出,$\theta_g$为超参数

    https://s3.bmp.ovh/imgs/2022/08/15/e3b8e11d467a58d8.png

  • 问题:收敛不够稳定,在求导更新梯度时产生很多问题

最优辨别器: $$ D_G^*(x)=\frac{P_{data(x)}}{P_{data}(x)+P_g(x)} $$

算法

https://i0.hdslb.com/bfs/note/cdbef8832c64d04e411e88b5846d7b434f3e67e9.png

每一次做迭代 

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  
  1. k 不能太小 –> 保证 判别器 D 有足够的更新
  • D 要对 G 生成的不错的数据 有一定的判别能力,不然 G 很无聊的,都不想糊弄 D,轻而易举。 警察不给力,假钞不会被发现,抓不到造假者,无需提升工艺,游戏结束。
  1. k 不能太大 –> D 过于完美,D(G(z^(i))) = 0,对值为 0 求导,G 梯度更新有困难
  • 警察超厉害,造假者产一点假钞就会被发现,端掉制造工厂;造假者赚不到钱,不能提升工艺,结束游戏。

最好情况:双方实力相当、相爱相杀、一起进步。

k 的设计目标:使得 D 和 G 的更新进度差不多