42_GAN网络详解(2)---常见的GAN

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)的风险。

相关推荐
欧特克_Glodon11 小时前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
richard_first11 小时前
Transformer与大语言模型:第13章 Decoder
人工智能·机器学习
寒霜雨刃20 小时前
【原创】海光Z100 DCU适配vLLM实录(二):W4A16大M Prefill结构重写、GDN融合与长上下文HIP Attention
深度学习·神经网络·amd·rocm·ai infra·海光z100·gfx906
罗西的思考1 天前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha60161 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
IJCAST1 天前
IJCAST最新一期已经发布
人工智能·深度学习·神经网络
躺柒1 天前
读数据可视化19层次数据
信息可视化·数据挖掘·数据分析·数据可视化·层次数据·层次结构
chunmiao30321 天前
OpenAI 官宣断供 Cursor,AI 编程迎来第一次模型断供
人工智能·深度学习
147API1 天前
评测分数不理想,什么时候值得补蒸馏数据
人工智能·深度学习·机器学习
张人玉1 天前
基于 Python 机器学习 与 PyQt5 桌面框架开发的可视化分析系统——基于大数据的网上购物消费行为分析可视化大屏
python·qt·机器学习·echarts·three.js