GANs的优化函数与完整损失函数计算
生成对抗网络(GANs)近年来在人工智能领域,尤其是计算机视觉领域非常受欢迎。随着论文“Generative Adversarial Nets” [1]的引入,这种强大生成策略出现了,许多研究和研究项目从那时起兴起并发展成了新的应用,我们现在看到的最新的DALL-E 2[2]或GLIDE3
本文详细解释了GAN优化函数中的最小最大博弈和总损失函数是如何得到的。将介绍原始GAN中优化函数的含义和推理,以及它与模型的总损失函数的区别,这对于理解Generative Adversarial Nets是非常重要的
GANs简介
生成对抗网络(Generative Adversarial Networks)是一种深度学习框架,它被设计为生成模型,目的是生成新的复杂数据(输出)。
为了训练GAN,只需要一组想要模仿的数据(图像、音频、甚至是表格数据……),网络会找出方法来创建看起来像我们提供的数据集示例的新数据。换句话说,我们给模型一些示例数据作为“获得灵感”的输入,并让它完全自由地生成新的输出
因为我们只向网络输入X信息,而不给它们添加任何标签(或期望的输出),所以这种训练过程是无监督学习。
GAN体系结构是由两个相互竞争的网络(因此得名“对抗网络”)组成的。通常将这两个网络称为Generator (G)和Discriminator (D)。Generator的任务是学习从随机噪声开始生成数据的函数,而Discriminator必须决定生成的数据是否“真实”(这里的“真实”是指数据是不是属于示例数据集的),这两个网络同时训练和学习。
GAN有很多不同的变体,所以训练有许多不同的变化。但是如果遵循原始论文 [1],原始的GAN 训练循环如下:
对于训练每次迭代会执行以下操作:
- 从表示的样本分布(即随机噪声 z)生成 m 个示例(图像、音频……):G(z)
- 从训练数据集中取 m 个样本:x
- 混合所有示例(生成和训练数据集)并将它们提供给鉴别器 D。D 的输出将介于 0 和 1 之间,这意味着 示例是假的,1 表示示例是真的
- 获得鉴别器损失函数并调整参数
- 生成新的 m 个示例 G'(z)
- 将 G'(z) 法送到鉴别器。获得 Generator Loss 函数并调整参数。
说明:一般情况下我们对GAN的训练都是在第 4 步测量生成器损失并调整其参数以及鉴别器,这样可以跳过第 5 步和第 6 步,节省时间和计算机资源。
完整文章:
https://avoid.overfit.cn/post/db7a155b9da9436f993db597d65824b2