生成对抗网络(GANs)由两部分组成:

  • 生成器(Generator): 通过机器生成数据(图像),目的是骗过判别器
  • 判别器(Discriminator): 判断这张图像是真实的还是机器产生的,目的是找出生成器做的“假数据”

详细过程:

第一阶段:固定【判别器一代 D1】, 训练【生成器一代 G1】

刚开始,我们使用一个还算ok的判别器一代 D1, 让生成器一代G1 不断生成假数据, 然后拿去给D1判断

一开始G1肯定不太行, 很容易被发现它搁这造假呢

然后就是老机器学习了,使劲训练,生成器G1 进化了,进化成了生成器二代G2,好家伙,骗过了判别器D1。此时判别器D1就是瞎猜了,判断数据是真是假的概率就是50%.

这个时候就显得判别器D1 不太行了,好嘛,内卷开始了。

第二阶段:固定【生成器二代G2】, 训练判别器一代D1

第一阶段之后,生成器G2已经吊打判别器D1了,此时训练生成器已经没有意义了,我们作为一个老资本家了能袖手旁观吗?开始 固定 生成器二代G2, 训练判别器D1。

判别器D1 经过使劲的训练,提高了自己的鉴别能力,最终可以准确的判断出假的图片,他升级成了D2,让我们恭喜他成功走进内卷的第一步。

此时,生成器G2已经无法骗过判别器D2了,然后故事就老套了,卷就完事了。

第三阶段:循环阶段一和阶段二

经过不断的循环训练,经过内卷洗礼的两个打工人 G 和 D 的能力都越来越强,最终我们得到了一个效果非常好的生成器G, 我们就可以用它来生成我们想要的图片了。

GAN的扩展

  • 条件GAN, conditional GAN (cGAN): 其中开发了一个条件模型,通过在特定类别上调节输入来指导图像的生成。
  • InfoGAN: 变分正则项被引入到GAN的优化中,其中潜在变量和发生器的观测值之间的互信息被期望最大化。
  • CycleGAN: 使用循环结构来执行不成对的图像到图像的转换,并且开发了循环一致性损失来保留原始图像的内容,同时仅改变输入的样式。