在GAN 中,除了生成器以外,我们要多训练一个判别器(discriminator),其通常是 一个神经网络。判别器会输入一张图片,输出一个标量,其数值越大就代表现在输入的图片越 像是真实的动漫人物的图像,如图8.6所示。举例来说,对于图1中的动漫人物头像,那输 出就是1。这里假设1是最大的值,画得很好的动漫图像输出就是1,不知道在画什么就输出 0.5,再差一些就输出 0.1 等等。判别器从本质来说与生成器一样也是神经网络,是由我们自 己设计的,可以用卷积神经网络,也可以用Transformer,只要能够产生出我们要的输入输出 即可。当然对于这个例子,因为输入是一张图片,所以选择卷积神经网络,因为其在处理图像 上有非常大的优势。
图1 GAN中的辨别器
我们回到动漫人物图片的例子,生成器学习画出动漫的人物的过程如图2所示。首先, 第一代生成器的参数几乎是完全随机的,所以它根本就不知道要怎么画动漫人物,所以其画出 来的东西就是一些莫名其妙的噪音。那判别器学习的目标是成功分辨生成器输出的动漫图片。 当然在图8.7的例子里面可能非常容易,对判别器来说它只要看图片中是否有两个黑黑的眼睛 即可。接下来生成器就要通过训练调整里面的参数来骗过判别器。假设判别器判断一张图片 是不是真实图片的依据是看图片有没有眼睛,那新的生成器就需要输出有眼睛的图片。所以生成器产生眼睛出来,它是可以骗过第一代的判别器的。同时判别器也是会进化的,其会试图 分辨新的生成器与真实图片之间的差异。例如,通过有没有嘴巴来识别真假。所以第三代的生 成器就会想办法去骗过第二代的判别器,比如把嘴巴加上去。当然同时判别器也会逐渐的进 步,会越来越严苛,来“逼迫”生成器产生出来的图片越来越像动漫的人物。所以生成器和判别 器彼此之间是一直的互动、促进关系,和我们所说的“内卷”一样。最终,生成器会学会画出动 漫人物的脸,而判别器也会学会分辨真假图片,这就是GAN的训练过程。
图2 GAN训练的过程
GAN 最早出现在14年的一篇文章中,其作者把生成器和判别器当作是敌人,并且生成 器和判别器中间有一个对抗的关系,所以就用了一个“对抗”这个单词,当然这只是一个拟人化 的说法而已。但是其实我们也可以把他们想为亦敌亦友的关系,毕竟它们一直在比这更新,比 着提升自己,超越对方。