我们可以了解一下马尔可夫链,但是在GAN中没有涉及到马尔科夫链,可以当作一个扩展来学习一下。

GAN原理解析

原理解析

GAN译名生成对抗网络,强调为俩个网络(也可以是多个)互相对抗,共同进步最终达到一个稳态。

Generative Adversarial Nets 中GAN可以看成两个模型的整合,即生成器G和判别器D。两者在文中关系被比作了造假者和警察,造假者制造假币,而警察识别假币;造假者可以根据警察的识别真币的能力更新出更难以识别的假币,而警察也可以根据造假者的造假能力强化自己的识别能力;最终,我们希望得到一个收敛的生成器G(D已经无法判别G生成的数据是真实数据还是生成数据)。

我们以图片生成为例,如下

  • G是一个生成图片的网络,它接受一个随机的噪声z,通过这个噪声生成图片,记作G(z)
  • D是一个判别网络,判别一张图片是不是真实的。它的输入参数是x(代表一张图片),输出D(x)代表x为真实图片的概率,如果为1,就代表表100%是真实的图片,而输出为0,就代表不可能是真实的图片。

GAN的原理图

以上为GAN在训练过程中的原理图,其中对于模型的目标函数的设计,Generative Adversarial Nets 给出了一个定量的函数,如下

对于在训练时的更新,我们可以固定一个模型来更新另一个模型的参数,可以理解为如下情景

  • 更新G参数时,固定D更新目标函数
  • 更新D参数时,固定G更新目标函数

这里的 $\hat{x}$ 是 $z$ 空间在生成器 $G$ 上映射后的结果;对于 $p_g$ 是生成器 $G$ 将 $z$ 映射成 $\hat x$ 的后关于 $\hat x$ 分布,即生成器 $G$ 所捕捉的分布。

具体的训练算法如下:

训练算法

收敛图像化

理论部分

  • 固定住生成器 $G$ ,我们可以判别器 $D$ 最后一定收敛到如下公式

得到最优判别器之后,我们可以将 $D^*$ 带入上述目标函数 得到一个新的目标函数 $C(G)$

  • 当 $C(G)$ 的取最小值时,代表着 $p_{data}(\boldsymbol x) = p_g(\boldsymbol x)$ ,并且最小值恒定为 $-\log 4$

此部分证明用到了KL散度和JS散度,可以先去简单学习一下这部分