当前位置: 首页 > news >正文

GAN生成对抗网络小记

生成对抗网络(GAN)深入解析:数学原理与优化

生成对抗网络(Generative Adversarial Network, GAN)是一个基于博弈论的深度学习框架,通过生成器(G)和判别器(D)之间的对抗训练,生成高度逼真的数据。其核心思想是让 G G G 生成伪造数据以欺骗 D D D,而 D D D 则努力分辨真实数据与伪造数据。GAN 在理论上可以看作一个极小极大(Minimax)优化问题


1. GAN 的数学公式

1.1 生成器与判别器的定义

  • 生成器 G ( z ) G(z) G(z) 输入一个随机噪声 z ∼ p z ( z ) z \sim p_z(z) zpz(z)(通常为高斯分布或均匀分布),输出一个生成样本 G ( z ) G(z) G(z),试图让这个样本与真实样本相似。
  • 判别器 D ( x ) D(x) D(x) 输入一个样本 x x x,输出一个介于 0 和 1 之间的概率 D ( x ) D(x) D(x),表示样本是真实数据的概率。

1.2 GAN 的目标函数

GAN 采用极小极大(Minimax)损失函数,其目标是让生成器尽可能生成真实数据,而判别器尽可能区分真实数据和伪造数据:

min ⁡ G max ⁡ D V ( D , G ) = E x ∼ p data ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] \min_G \max_D V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log (1 - D(G(z)))] GminDmaxV(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

其中:

  • p data ( x ) p_{\text{data}}(x) pdata(x) 是真实数据的分布,
  • p z ( z ) p_z(z) pz(z) 是输入噪声的分布,
  • D ( x ) D(x) D(x) 试图最大化分类准确率,
  • G ( z ) G(z) G(z) 试图最小化判别器的分类能力。

1.3 最优判别器

如果固定生成器 G G G,则判别器 D D D 需要最大化目标函数:

V ( D , G ) = E x ∼ p data ( x ) [ log ⁡ D ( x ) ] + E z ∼ p z ( z ) [ log ⁡ ( 1 − D ( G ( z ) ) ) ] V(D, G) = \mathbb{E}_{x \sim p_{\text{data}}(x)}[\log D(x)] + \mathbb{E}_{z \sim p_z(z)}[\log (1 - D(G(z)))] V(D,G)=Expdata(x)[logD(x)]+Ezpz(z)[log(1D(G(z)))]

可以证明,最优判别器 D ∗ ( x ) D^*(x) D(x) 的形式是:

D ∗ ( x ) = p data ( x ) p data ( x ) + p g ( x ) D^*(x) = \frac{p_{\text{data}}(x)}{p_{\text{data}}(x) + p_g(x)} D(x)=pdata(x)+pg(x)pdata(x)

其中, p g ( x ) p_g(x) pg(x) 是由生成器 G ( z ) G(z) G(z) 生成的数据的分布。


2. 训练过程

GAN 训练是一个交替优化的过程,通常采用**梯度下降(SGD, Adam)**来更新 G G G D D D

  1. 训练判别器 D D D

    • 取真实数据 x ∼ p data ( x ) x \sim p_{\text{data}}(x) xpdata(x),计算 D ( x ) D(x) D(x) 并最大化 log ⁡ D ( x ) \log D(x) logD(x)
    • 取生成数据 G ( z ) G(z) G(z) 使 D ( G ( z ) ) D(G(z)) D(G(z)) 尽可能小,即最小化 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z)))
    • 更新判别器参数 θ D \theta_D θD 以提高区分能力。
  2. 训练生成器 G G G

    • 生成数据 G ( z ) G(z) G(z),然后让判别器对其分类。
    • 生成器希望让 D ( G ( z ) ) D(G(z)) D(G(z)) 输出接近 1(让判别器误判)。
    • 生成器的优化目标是最小化 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z))),或者直接最大化 log ⁡ D ( G ( z ) ) \log D(G(z)) logD(G(z))(这被称为改进版 GAN 损失)。
  3. 循环迭代,直到 G G G 生成的数据与真实数据无法区分。


3. 训练挑战

3.1 模式崩溃(Mode Collapse)

  • 生成器可能学会只生成一小部分数据,而非整个数据分布。
  • 例如, G G G 只生成某一类图像,导致 D D D 很容易识别 G G G 的模式。

解决方案:

  • Minibatch Discrimination:让 D D D 学习样本之间的多样性,防止 G G G 只生成少量模式。
  • Unrolled GAN:考虑 D D D 在未来几步更新中的影响,使 G G G 不会局部最优。

3.2 训练不稳定

  • GAN 训练是非凸优化问题,可能导致梯度消失或振荡。
  • 训练过程中, G G G D D D 的能力必须匹配,否则其中一方会迅速胜出,导致训练失败。

解决方案:

  • 使用 WGAN(Wasserstein GAN):WGAN 使用 Wasserstein 距离替代 KL 散度,使训练更加稳定。
  • 调整判别器与生成器的更新频率:例如,训练判别器多步,再训练一次生成器。

3.3 梯度消失

  • D D D 过强时, G G G 可能学不到有意义的梯度。
  • 由于 log ⁡ ( 1 − D ( G ( z ) ) ) \log(1 - D(G(z))) log(1D(G(z))) D ( G ( z ) ) D(G(z)) D(G(z)) 远离 1 时梯度趋于 0, G G G 可能难以更新。

解决方案:

  • 使用改进损失 max ⁡ G log ⁡ D ( G ( z ) ) \max_G \log D(G(z)) maxGlogD(G(z)) 以提供更好的梯度信号。
  • 使用 Batch Normalization调整学习率

4. GAN 的变种

  • DCGAN(深度卷积 GAN):使用卷积神经网络(CNN),提升图像质量。
  • CGAN(条件 GAN):在 G G G D D D 额外输入条件信息(如类别标签)。
  • WGAN(Wasserstein GAN):使用 Wasserstein 距离替代交叉熵,提高训练稳定性。
  • StyleGAN:用于高分辨率人脸生成,生成风格可控。
  • CycleGAN:用于图像到图像的转换(如将马变成斑马)。

5. 总结

  1. GAN 通过博弈思想训练生成模型,使得生成数据逐步逼近真实数据分布。
  2. 核心数学公式:GAN 是一个极小极大优化问题,目标是让 G G G 生成的分布 p g ( x ) p_g(x) pg(x) 逼近真实分布 p data ( x ) p_{\text{data}}(x) pdata(x)
  3. 训练时, G G G D D D 交替优化,使得 G G G 学会欺骗 D D D,最终生成高质量数据。
  4. 存在模式崩溃、梯度消失等问题,改进版本如 WGAN 和 StyleGAN 解决了一些问题。

GAN 目前广泛用于图像生成、风格转换、语音合成等领域,是最重要的生成模型之一。

相关文章:

  • 【leetcode100】括号生成
  • Linux内核,mmap_pgoff在mmap.c的实现
  • MyBatis SqlSessionFactory 是如何创建的?
  • Linux上位机开发实战(x86和arm自由切换)
  • java -jar 执行基于Maven构建的Java应用的方法总结
  • 剑指 Offer II 087. 复原 IP
  • RustDesk自建远程桌面服务教程
  • Vue与Django是如何传递参数的?
  • matlab 谐波分析公式绘图
  • C语言:基于链表实现栈
  • java多线程基础
  • 深入解析 Vue 3 Teleport:原理、应用与最佳实践
  • MySQL基本语句以及表约束练习
  • 单口路由器多拨号ADSL实现方法
  • Flutter小白开发笔记
  • 自动化测试框架学习总结-hytest学习
  • OpenEuler20.3 安装 Elasticsearch7.17
  • 关于新奇的css
  • IDEA:项目结构不见了,项目文件消失解决
  • FastDVDnet:不需要显示学习运动的实时视频降噪
  • 线下哪些商家支持无理由退货?查询方法公布
  • 中国恒大:清盘人向香港高等法院申请撤回股份转让
  • 白玉兰奖征片综述丨综艺市场破局焕新,多元赛道重塑价值坐标
  • 湛江霞山通报渔船火灾:起火船舶共8艘,无人员伤亡或被困
  • 马克龙称法英正与乌克兰商议“在乌部署欧洲军队”
  • 河北邯郸一酒店婚宴发生火灾:众人惊险逃生,酒店未买保险