4 GAN的基本原理之生成器和判别器的角色

在上一篇文章中,我们介绍了生成对抗网络(GAN)的应用领域,涵盖了GAN在图像生成、图像修复、风格迁移等方面的广泛应用。这一篇将深入探讨GAN的基本组成部分——生成器(Generator)和判别器(Discriminator),并分析它们各自的角色与相互作用。

生成器的角色

生成器的主要任务是从随机噪声中生成尽量真实的数据实例。具体来说,生成器接受一个随机向量(通常从均匀分布或正态分布中采样),并将其转换为与真实数据相似的样本。生成器的目标是生成“看起来真实”的数据,以便迷惑判别器。

案例:GAN生成手写数字

我们以生成手写数字的GAN为例。生成器的输入是一个随机噪声向量$\mathbf{z}$,它的输出是一个手写数字的图像$\mathbf{G}(\mathbf{z})$,其中$\mathbf{G}$表示生成器。损失函数中,生成器的目标是最大化判别器对生成图像的判断结果,即生成图像被判别器认为是真实的概率。

1
2
3
4
5
6
import numpy as np

def generator(z):
# 假设这是一个简单的生成器函数
# 其输出是经过处理的图像
return np.tanh(np.dot(z, weights_g) + bias_g)

判别器的角色

与生成器相对,判别器的任务是判断输入的数据是“真实的”还是“生成的”。判别器接受真实数据样本和生成样本,并输出它们被判断为真实的概率。判别器的目标是尽可能准确地将真实数据与生成数据区分开来。

案例:判别手写数字

在我们的手写数字生成器案例中,判别器的输入是一个图像(可能是来自真实的MNIST数据集,或是生成器产生的图像),它输出一个概率值$p_{D}(\mathbf{x})$,表示该图像是“真实”的概率。

1
2
3
4
def discriminator(x):
# 假设这是一个简单的判别器函数
# 输出为该样本是“真实”的概率
return sigmoid(np.dot(x, weights_d) + bias_d)

生成器与判别器的对抗过程

生成器和判别器相互对抗,生成器努力生成让判别器无法区分的样本,而判别器则致力于提高其区分真实与生成样本的能力。这一过程可以用以下的优化目标表示:

  • 生成器的目标
    $$
    \min_G \max_D V(D, G) = \mathbb{E}{\mathbf{x} \sim p{\text{data}}}[\log D(\mathbf{x})] + \mathbb{E}{\mathbf{z} \sim p{z}}[\log(1 - D(G(\mathbf{z}))]
    $$

  • 判别器的目标
    $$
    \min_D V(D, G) = -\mathbb{E}{\mathbf{x} \sim p{\text{data}}}[\log D(\mathbf{x})] - \mathbb{E}{\mathbf{z} \sim p{z}}[\log(1 - D(G(\mathbf{z}))]
    $$

在这些公式中,$\mathbf{x}$表示真实样本,$G(\mathbf{z})$为生成的样本。生成器和判别器的对抗过程会逐步提升它们的表现能力,使得生成器生成更真实的数据。

小结

在这一篇中,我们深入探讨了GAN中生成器和判别器的角色,以及它们是如何通过对抗学习提升各自性能的。在下一篇文章中,我们将关注GAN的基本原理中的损失函数的定义,探讨如何通过损失函数有效地训练生成器与判别器。通过深入理解这些基本概念,我们可以更好地掌握GAN的实现与应用。

4 GAN的基本原理之生成器和判别器的角色

https://zglg.work/gan-network-tutorial/4/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论