import matplotlib.pyplot as plt
import numpy as np
x = np.arange(0, 5, 0.01)
y1=np.log(x)
y2=x-1
y3=y2-y1
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2)
plt.axhline(color="grey")
plt.axvline(color="grey")
plt.figure()
plt.plot(x,y3)
plt.axhline(color="grey")
plt.axvline(color="grey")
以上是推导gibbs不等式的重要基础函数图像
(见篇首)
熵
构造Discriminator的目标函数是:
求解D,使得样本期望最大化,而生成器期望最小化。这样,判别器就会收敛于样本数据。生成器生成一个东西,输入到判别器中,然后由判别器来判断这个输入是真实的数据还是机器生成的,如果没有骗过判别器,那么生成器继续进化,输出第二代Output,再输入判别器,判别器同时也在进化,对生成器的output有了更严格的要求。这样生成器和判别器不断进化,他们的关系有点像一个竞争的关系,所以有了“生成对抗网络(adversarial)”的名字的由来。
因此, 目标函数的最大值就是JS散度。
下一步,固定D,求解G。
求解G可以直接求解JS散度最小值,使得生成器和样本数据的分布最接近。
具体训练步骤是,先求D,再求G,交替进行: