fGAN: General Framework of GAN
p与q相等时候,divergence为0,当不相等的时候,一定是大于等于0
不同的计算公式,
每个时间t都去算一下,取最大的值。
给定一个t,找最大的那个值,把所有直线画出来,找最大点, 这样获得的曲线一定是凸函数的曲线
Connection with GAN
D解方程找使得最大的情况。
同一张人脸不断出现,生成的分布越来越集中,这种叫Model collapse
每次只能产生一种肤色的人,这叫做model dropping, 有可能是divergence选的不好。
避免这种问题,可以训练多个generator, 每次生成时候,从中选一个genenrator,这样就能获得多样性。
Tips for improving GAN
问题是生成的分布与真实分布是不重叠的,导致学习到的东西跟目标不一定一致。
两个分布没有重合,算出来的loss都一样,无法区分谁好坏,机器不知道往哪个方向学习。
LSGAN
不要train得太好,不要太大也不要太小,每十次看一下输出结果好不好。这里LSGAN解决办法是通过将sigmoid替换成regression方式解决,如果是postive example越接近1越好,negative example越接近0越好。
WGAN
想象自己是开推土机,需要将p推到q,这走的距离就叫做earth mover’s distance
穷举出所有的方案,从中选出平均距离最少的方案
穷举所有的伽马,找到最小的情况。
而wgan能够正确知道二者的差距
generator要足够平滑,不然及时很近,但是二者的竖轴方向距离很远,所以要有一定的限制。
如何解这个限制方程呢?用反向传播,但是有一个weight clipping限制,在output的时候是比较平滑的。
Improve WGAN
左右分表sample一个点,然后从二者的连线中间sample一个点,就是
p
p
e
n
a
l
t
y
p_{penalty}
ppenalty,
Spectrum Norm
EBGAN
生成器,译码器后reconstruct越好,说明生成的越好。
让real的分数很低,但也不能让假的非常大,需要设置一个margin