DCGAN
CGAN
条件生成对抗网络(Conditional Generative Adversarial Networks, CGAN)是生成对抗网络(Generative Adversarial Networks, GAN)的一种变体,由Mehdi Mirza和Simon Osindero在2014年提出。CGAN的主要改进在于引入了额外的条件信息(condition),以指导生成过程,使得生成器可以根据特定条件来创建数据样本。
原始GAN由两个部分组成:生成器(Generator, G)和判别器(Discriminator, D)。生成器的目标是从随机噪声中学习到数据的真实分布,并生成逼真的样本;而判别器则尝试区分这些生成的样本是否来自真实的数据集。通过两者之间的对抗训练,生成器逐渐学会生成越来越逼真的数据。
CGAN在此基础上加入了条件信息y,这可以是类别标签、文本描述、另一张图像等任何有助于生成更具体或更有意义输出的信息。条件信息被同时送入生成器和判别器:
- 生成器:接收随机噪声z以及条件信息y作为输入,尝试根据条件生成符合该条件的数据。
- 判别器:不仅评估输入数据的真实性,还检查它是否与给定条件相符。
VAE-GAN
VAE-GAN(Variational Autoencoder Generative Adversarial Networks)是一种结合了变分自编码器(Variational Autoencoder, VAE)和生成对抗网络(Generative Adversarial Network, GAN)优点的混合模型。这种组合旨在利用VAE的概率建模能力来捕捉数据分布,同时使用GAN的判别训练机制来提升生成样本的质量。
VAE-GAN的工作原理
变分自编码器(VAE)
VAE是一种无监督学习模型,它试图通过将输入数据映射到一个低维的潜在空间(latent space),然后从这个潜在空间重构原始输入,以此来学习数据的分布。VAE的关键特性是其能够对潜在变量施加先验分布(通常是标准正态分布),从而允许我们从该分布中抽样并解码为新的数据点。这使得VAE不仅具备降维功能,还能作为生成模型。
在VAE中,有两个主要的网络:
编码器:负责将输入数据映射到潜在空间中的概率分布参数(如均值和方差)。
解码器:负责根据潜在空间中的样本重建输入数据。
为了确保潜在变量遵循预设的先验分布,VAE引入了KL散度损失项,它衡量了编码器输出的分布与先验分布之间的差异。总损失函数通常包括重构误差和KL散度损失。
生成对抗网络(GAN)
GAN由生成器和判别器组成,它们相互对抗地训练。生成器尝试创建看起来真实的样本以欺骗判别器,而判别器则试图区分真实样本和生成样本。通过这种对抗性的训练过程,生成器可以学会生成高质量的数据样本。
结合VAE和GAN
VAE-GAN将VAE的编码-解码框架与GAN的对抗训练机制结合起来。具体来说:
编码器:接收输入数据,并将其映射到潜在空间中的分布。
解码器/生成器:从潜在空间抽取样本,并尝试重建或生成新的数据样本。
判别器:评估生成样本的真实性,帮助解码器更好地学习数据的真实分布。
在这种结构下,VAE部分负责保证潜在表示的有效性和可解释性,而GAN部分则致力于提高生成样本的质量,使其更加逼真。
cycleGAN
CycleGAN(Cycle-Consistent Adversarial Network)是一种生成对抗网络(GAN)的变体,由Jun-Yan Zhu等人在2017年提出。它特别适用于图像到图像的转换任务,能够在没有成对训练数据的情况下进行跨域图像翻译。例如,它可以将马变成斑马、将夏天的风景变成冬天的风景等。CycleGAN的关键创新在于其引入了循环一致性损失(cycle consistency loss),以确保转换过程中的信息保真度。
CycleGAN的工作原理
无监督图像到图像转换
传统的图像到图像转换方法通常依赖于成对的数据集,即每张源域图像都有一个对应的目标域图像。然而,在实际应用中,获取这样的成对数据可能是困难或不可能的。CycleGAN解决了这个问题,它允许使用非配对的训练数据来学习两个不同域之间的映射关系。
双向映射与循环一致性
CycleGAN包含两个生成器和两个判别器:
生成器G:负责将A域的图像转换为B域的图像。
生成器F:负责将B域的图像转换为A域的图像。
判别器D_A:用于判断输入图像是来自A域的真实图像还是通过F从B域转换来的图像。
判别器D_B:用于判断输入图像是来自B域的真实图像还是通过G从A域转换来的图像。
为了保证转换的有效性和可逆性,CycleGAN引入了循环一致性损失。这意味着如果我们将一张图像从A域转换到B域再转换回A域,最终的结果应该尽可能接近原始图像。同理,对于从B域到A域再到B域的过程也应如此。这种机制帮助模型学习到了更稳定的映射关系,并减少了模式崩溃(mode collapse)的风险。