生成对抗网络 (GAN) 通过训练两个神经网络(生成器和判别器)以竞争的方式生成图像或视频。 生成器从随机噪声创建合成数据(如图像),而判别器评估数据是真实的(来自训练数据集)还是假的(由生成器生成)。 生成器的目标是欺骗判别器,而判别器会随着时间的推移提高检测假数据的能力。 这种对抗性互动推动生成器产生越来越逼真的输出。 例如,在生成人脸时,生成器可能会从随机像素模式开始,并通过重复训练周期将其细化为连贯的面部特征。
训练过程包括交替更新两个网络。 首先,生成器将随机向量(噪声)作为输入并输出图像。 该图像与来自数据集的真实图像一起被馈送到判别器。 判别器的预测(真与假)用于计算两个网络的损失。 生成器的损失衡量其欺骗判别器的效果,而判别器的损失反映其准确性。 反向传播调整生成器的参数以最小化其损失,并调整判别器的参数以最小化其自身的损失。 随着时间的推移,生成器学习将噪声映射到类似于训练集的数据分布。 对于视频,此过程扩展到序列数据:生成器可能会以时间顺序生成帧,判别器会评估单个帧及其随时间推移的一致性。
实际应用通常面临挑战。 例如,当生成器产生有限种类的输出时(例如,重复出现相同的脸),就会发生模式崩溃。 诸如小批量判别(其中判别器评估样本批次而不是单个样本)或 Wasserstein GAN(使用不同的损失函数)之类的技术有助于缓解这种情况。 应用范围从创建逼真的图像(例如,NVIDIA 的 StyleGAN 用于人脸)到视频合成(例如,生成动画角色)。 开发人员通常使用 TensorFlow 或 PyTorch 等框架,利用生成器中的卷积层来对噪声进行上采样,并利用判别器中的卷积层来对图像进行下采样。 虽然 GAN 需要仔细调整,但它们学习复杂数据分布的能力使其成为合成媒体生成的强大工具。