GAN(生成对抗网络)原理与目标函数

GAN(生成对抗网络)原理与目标函数

什么是 GAN?

GAN 是一种生成模型,全名是 生成对抗网络 (Generative Adversarial Network)。它由两个部分组成:

  • 生成器 (Generator, G):负责生成"假数据"。
  • 判别器 (Discriminator, D):负责判断输入的数据是真实数据还是生成器生成的假数据。

这两部分通过一种对抗的方式互相竞争,最终生成器会变得越来越"聪明",能够生成接近真实的数据。


GAN 的基本思路

GAN 就像一个"造假者"和一个"鉴定师"之间的对抗游戏:

  • 生成器 G:试图生成"看起来像真的"数据,欺骗判别器。
  • 判别器 D:试图识别哪些数据是真实数据,哪些是生成器生成的"假数据"。

GAN 的目标

  • 生成器的目标:让判别器无法分辨出生成的数据是假的。
  • 判别器的目标:尽可能准确地区分真实数据和生成数据。

这种对抗的训练过程会让生成器越来越优秀,最终它生成的数据会逐渐接近真实数据的分布。


GAN 的训练过程

GAN 的训练过程可以分为以下几个步骤:

  1. 初始化

    • 给生成器和判别器随机分配初始的参数。
    • 定义一个简单的潜在分布 ( P_z )(比如一个标准正态分布 ( z \sim N(0, 1) )),生成器将从这个分布中采样。
  2. 训练判别器 D

    • 判别器接收两种数据:
      1. 真实数据 ( r \sim P_r )(从真实数据分布中采样)。
      2. 生成器生成的假数据 ( g \sim P_g )(从生成器生成的数据分布中采样)。
    • 判别器的目标是最大化它对真实数据的预测概率,同时最小化它对生成数据的预测概率。
  3. 训练生成器 G

    • 生成器的目标是生成能骗过判别器的数据,也就是说,它希望判别器把生成数据也认为是真实的。
    • 生成器通过判别器的反馈不断调整自己的参数,逐渐生成更真实的数据。
  4. 重复上述过程

    • 不断交替训练 G 和 D,直到生成器生成的数据足够接近真实数据。

GAN 的目标函数

GAN 的目标函数可以表示为一个最小-最大问题:

\\min_G \\max_D V(G, D) = \\mathbb{E}*{r \\sim P_r}\[\\log D®\] + \\mathbb{E}* {z \\sim P_z}\[\\log(1 - D(G(z)))

]

目标函数分解理解

  1. 判别器的目标

    判别器希望最大化:

    V(D) = \\mathbb{E}*{r \\sim P_r}\[\\log D®\] + \\mathbb{E}* {z \\sim P_z}\[\\log(1 - D(G(z)))

    ]

    • 第一项 ( \mathbb{E}_{r \sim P_r}[\log D®] ):表示判别器对真实数据的预测准确性。
    • 第二项 ( \mathbb{E}_{z \sim P_z}[\log(1 - D(G(z)))] ):表示判别器对生成数据识别为假的准确性。
  2. 生成器的目标

    生成器希望最小化:

    V(G) = \\mathbb{E}_{z \\sim P_z}\[\\log(1 - D(G(z)))

    ]

    • 生成器的目标是生成能让 ( D(G(z)) ) 尽可能接近 ( 1 ) 的数据,从而骗过判别器。
  3. 最小-最大博弈

    • 判别器 ( D ) 希望最大化目标函数。
    • 生成器 ( G ) 希望最小化目标函数。
    • 这种对抗的关系让它们互相推动,最终生成器会变得越来越强,能够生成接近真实分布的数据。

GAN 的原理总结

  • GAN 是一个博弈过程,生成器和判别器互相竞争。
  • 生成器通过学习真实数据分布 ( P_r ),从一个简单的潜在分布 ( P_z ) 中采样,然后生成接近 ( P_r ) 的数据。
  • 判别器的任务是区分真实数据和生成数据,而生成器的任务是尽量骗过判别器。
  • GAN 的训练目标是让生成器生成的数据分布 ( P_g ) 无限接近于真实数据分布 ( P_r )。

举个例子

假设我们用 GAN 来生成"假钞":

  • 生成器 G:是一个"造假者",它尝试生成看起来像真的钞票。
  • 判别器 D:是一个"验钞机",它试图判断钞票是真钞还是假钞。
  • 在训练过程中:
    • 生成器不断改进它的造假技术,让验钞机无法分辨钞票的真假。
    • 验钞机也不断提高识别能力,更好地区分真假钞票。
  • 最终,生成器变得非常强大,能够生成完全无法区分的"假钞"。

GAN 的挑战

虽然 GAN 很强大,但也有一些挑战:

  1. 不稳定性

    • GAN 的训练过程是一个动态博弈,可能会导致不收敛或者模式崩塌。
  2. 模式崩塌 (Mode Collapse)

    • 生成器可能只生成一部分样本,忽略了真实数据分布的多样性。
  3. 训练难度

    • 需要小心调整超参数,保证生成器和判别器的能力均衡。

GAN 的应用

GAN 的应用非常广泛,包括但不限于:

  • 图像生成(如生成高清人脸图片)。
  • 图像修复(修补损坏的图像)。
  • 图像风格迁移(如将照片变成油画风格)。
  • 数据增强(生成更多样本用于训练)。
  • 视频生成、语音合成等。

R1 正则项

R1 正则项是一种通过对判别器的梯度进行惩罚的方法,用于鼓励判别器将生成器生成的图像与真实图像区分开来。

具体来说,在 R1 正则项中,我们首先计算判别器对真实图像的预测结果,并求出其对输入图像的梯度。然后,我们计算这些梯度的平方,并对它们进行求和,最后取平均值。这个平均值就是 R1 正则项,用于对判别器的预测结果进行惩罚。对于生成器的输出,我们同样可以对其进行类似的处理,得到对应的 R1 正则项。

相关推荐
一点.点31 分钟前
自动驾驶(ADAS)领域常用数据集介绍
人工智能·深度学习·机器学习·自动驾驶
JOYCE_Leo166 小时前
一文详解卷积神经网络中的卷积层和池化层原理 !!
人工智能·深度学习·cnn·卷积神经网络
Donvink7 小时前
【视频生成模型】通义万相Wan2.1模型本地部署和LoRA微调
人工智能·深度学习·aigc·音视频
极小狐7 小时前
如何对极狐GitLab 议题进行过滤和排序?
人工智能·git·机器学习·gitlab
小雅痞8 小时前
[Mac] 使用homebrew安装miniconda
深度学习·conda
小墙程序员8 小时前
机器学习入门(九)多层感知机
机器学习
Ai多利9 小时前
顶会招牌idea:机器学习+组合优化 优秀论文合集
人工智能·机器学习·组合优化
尼罗河女娲9 小时前
深度剖析RLHF:语言模型“类人输出”的训练核心机制
人工智能·深度学习·语言模型
万事可爱^9 小时前
TensorFlow 安装全攻略
人工智能·python·深度学习·机器学习·tensorflow·tensorflow安装