架构
简单说就是一个生成器Generator 一个判别器Discriminator。生成器和判别器都是网络,所以你也可以叫成生成网络和判别网络。
生成器不断从某个固定的分布(一般是正态分布)上采样数据,然后根据采样的数据生成逼近真实的图像。而判别器负责判断一个图像是真实图像还是生成器伪造的图像(从这里能看出来判别器是在做二分类任务)。
GAN的作者们说这个是一种架构/模式/方法,而非普通的网络。
训练
GAN实际上并不好收敛(至少我自己手搓了一个GAN来回改也没收敛,即便是DCGAN没做到稳定收敛,也许是我的问题)。
因为GAN有两个网络,同时考虑到两个网络的对抗性(G A N的A,Adversarial),所以训练是两个网络分开进行训练和更新。将真实图像和虚假图像给判别器进行判别,然后根据二分类的结果来做损失函数可以简单的进行训练。在训练判别器后进行更新,然后开始生成器的训练——从采样然后生成图像,交给判别器训练,如果能够欺骗判别器则获得分数。
AI 补充
GAN (Generative Adversarial Network) 架构与训练
1. 架构 (Architecture)
GAN由两个核心部分组成:
- 生成器 (Generator, G): 这是一个神经网络,其任务是学习从一个低维的随机噪声向量(通常从正态分布或均匀分布中采样,这个空间被称为潜在空间 Latent Space)映射到高维真实数据空间(例如图像)。生成器的目标是生成看起来尽可能真实的假数据。
- 判别器 (Discriminator, D): 这是另一个神经网络,其任务是区分输入的数据是真实的(来自真实数据集)还是虚假的(由生成器G生成)。判别器本质上是一个二分类器,输出一个概率值,表示输入数据是真实的概率。
GAN被提出时,其作者将其视为一种架构、框架或思想,而非仅仅是一个特定的网络模型,因为它定义了一种通过对抗过程训练两个网络的新范式。
2. 训练 (Training)
- 核心思想: GAN的训练可以被看作是一个极小极大博弈 (Minimax Game)。生成器G试图通过生成更逼真的数据来“欺骗”判别器D,使其判别为真;判别器D则试图不断提升自己的判别能力,更准确地识别出假数据。G和D在相互竞争中共同进步。
- 收敛性与训练难度: 您关于GAN不易收敛的体会是完全正确的,这也是GAN训练中的一个主要挑战。相较于很多单网络的训练任务,GAN的对抗训练过程更难达到稳定状态(纳什均衡),容易出现训练不稳定、模式坍塌(Generator只生成有限几种样本)等问题。即使是DCGAN等改进模型,也需要仔细调整参数和架构才能获得较好的收敛。
- 交替训练过程: 由于G和D是竞争关系,它们不能同时优化同一个目标。GAN的训练采用**交替优化 (Alternating Optimization)**的方式:
- 训练判别器 (Train D): 固定生成器G的参数,训练判别器D。将真实数据标记为“真”,将G生成的假数据标记为“假”。使用标准的二分类损失(如二元交叉熵)来优化D,使其能够最大化正确区分真实数据和虚假数据的能力。目标是让 D(x) 接近 1 (真实数据 x),让 D(G(z)) 接近 0 (生成器输出 G(z))。
- 训练生成器 (Train G): 固定判别器D的参数,训练生成器G。G生成假数据并输入给D。G的目标是让D将其生成的假数据判别为“真”。生成器的损失函数通常是基于D的输出,比如最小化 log(1−D(G(z))) 或最大化 log(D(G(z)))。通过优化G,使其生成的 G(z) 能够使得 D(G(z)) 接近 1。
这两个步骤(训练D,然后训练G)在一个训练迭代中交替进行。通过这种对抗学习,生成器G不断提高生成数据的质量以试图欺骗判别器D,而判别器D也不断提高判别能力以识别生成的数据,最终达到一个动态平衡,此时生成器能够生成与真实数据分布非常相似的样本。
修改历史
- 初稿。2025-05-08
- 修改历史。2025-05-09 13:38:26