生成对抗网络 (GAN) 简介
自 Ian Goodfellow 及其同事于 2014 年推出以来,生成对抗网络 (GAN) 一直在深度学习领域掀起波澜。GAN 是一种深度神经网络,可以生成与提供给它们的训练数据相似的新的、真实的数据。
他们通过在竞争环境中训练两个模型(一个生成器和一个鉴别器)来工作,在这个环境中,生成器试图创建可以欺骗鉴别器的真实数据,而鉴别器则试图区分真实数据和生成数据。
为什么首先要开发 GAN?
GAN 的开发是为了解决生成逼真的数据(例如图像、视频和音频)的问题,这些数据可用于各种应用,例如视频游戏设计、虚拟现实和数字艺术。
传统的生成模型,例如自动编码器和变分自动编码器,在生成具有精细细节、锐利边缘和多种样式的真实数据的能力方面存在局限性。
GAN 通过引入一种利用对抗训练生成与真实数据 无法区分的数据的新方法,为该问题提供了解决方案。
GAN 是如何工作的?
GAN 由两个深度神经网络组成——一个生成器和一个鉴别器——它们在竞争环境中进行训练。生成器将随机噪声作为输入并生成与训练数据相似的新数据样本。鉴别器经过训练以区分真实数据和生成数据。生成器的目标是生成可以欺骗鉴别器认为它是真实的数据,而鉴别器的目标是正确区分真实数据和生成数据。
训练过程从生成器产生随机噪声开始,该随机噪声通过其层以生成新样本。然后将生成的样本与来自训练数据的真实样本一起传递给鉴别器。鉴别器为每个样本分配一个概率分数,表明它是真实的或生成的可能性。生成器的目标是最大化鉴别器分配给生成样本的概率分数,而鉴别器的目标是正确区分真实样本和生成样本。
训练一直持续到生成器可以生成与真实数据无法区分的数据,并且鉴别器无法高置信度地区分真实数据和生成数据。
GAN 的架构
GAN 背后的数学
因为判别器的任务是进行Binary Classification以区分真假,所以它的损失函数是Binary Cross Entropy。
Generator 所做的是将噪声转换为真实数据并将其传递给 Discriminator 以欺骗它。
采用的设计方法是将其建模为一个MiniMax游戏。
GAN的代价函数
J(D)中的第一项表示将实际数据提供给判别器,判别器会希望最大化预测一个的对数概率,表明数据是真实的。
第二项表示生成器 (G) 生成的样本。
在这里,鉴别器想要最大化预测为零的对数概率,表明数据是假的。另一方面,生成器试图最小化鉴别器正确的对数概率。这个问题的解是博弈的一个均衡点,也就是判别器损失的鞍点。
现在的问题是为什么这是一个极小极大函数?
这是因为鉴别器试图最大化目标而生成器试图最小化它,由于这种最小化/最大化我们得到了极小极大项。他们都通过交替梯度下降来一起学习。
虽然 GAN 的想法在理论上很简单,但要建立一个有效的模型却非常困难。在 GAN 中,有两个耦合在一起的深度网络,使得梯度的反向传播具有两倍的挑战性。
GAN 在哪里使用?
GAN 在各个领域都有大量实际应用,包括:
图像合成:GAN 可用于生成类似于真实图像的新图像。这为包括艺术和设计在内的各个领域的应用开辟了新的机会,在这些领域中,GAN 可用于创建现实世界中不存在的物体的逼真图像。
视频合成:GAN 可用于生成视频的新帧。这涉及在视频中的一组帧上训练生成器,然后生成与训练数据相似的新帧。
文本生成:GAN 可用于生成类似于真实文本的新文本样本。这可用于聊天机器人、机器翻译甚至创意写作等应用程序。