GANs使用由神经网络表示的可微函数,作为生成器网络。生成器网络将随机噪声作为输入,然后将此噪声传入可微函数,转变和重塑它,使其具有可识别的结构。该生成器网络的输出是一副逼真的图像。对随机输入噪声的选择,决定了生成器网络会产生怎么样的图像,使用许多不同的输入噪声值运行生成器或网络会产生许多不同的逼真输出图像,目标是使这些图像成为真实数据分布中的合理样本。当然,生成器网络不会一开始就产生逼真图像,你得先训练它,生成模型的训练过程与监督学习模型的训练过程有很大差异。在监督学习模型中,我们向模型展示一张交通灯的图像,并告诉它这是交通灯。而对于GANs生成模型,每个图像都没有对应的输出值,我们仅仅向模型展示大量图像,然后让它自己生成更多图像,符合相同概率分布的图像,但是我们究竟如何让模型这么做呢?

大多数生成模型的训练方式是:调整参数使概率最大化,即让生成器网络生成训练数据集的概率最大化,不幸的是,对于很多模型,这个概率很难计算,大多数模型使用某种近似方法来计算概率。GANs 的近似方式是:让另一个网络,叫做辨别器,学会引导生成器,辨别器只是一个普通的神经网络分类器,跟你之前见过的一样,在训练过程中,辨别器得到的一半图片来自训练数据的真实图像,另一半图片是来自生成器的假图像。辨别器训练的目的就是输出输入图像为真的概率,所以它努力向真实图像分配一个近似1的概率,向假图像分配一个近似0的概率,同时,生成器尝试做相反的事情:它的训练目标,就是尝试输出,能使辨别器分配接近1的概率图像。随时间推移,生成器被迫生成更逼真的输出来以假乱真。生成器取随机噪声值z并将他们映射到输出值x,当生成器映射的z值越多,由模型表示的x上的概率分布就会变得越密集,当真实数据的密度大于生成数据的密度时,辨别器会输出较高的值,生成器更改其产生的样本,使它沿辨别器学习的函数上坡移动。换句话说,生成器将它的样本移动到模型分布还不够密集的区域,最终生成器分布完全匹配了真实分布,而这时辨别器不得不在所有地方输出0.5的概率,因为在每个点真实数据生成和模型生成的概率相同,这两个密度一样。