简介
gan,全名Generative Adversarial Nets,翻译成中文,生成对抗网络。顾名思义,有生成过程,有对抗过程的一种net model。
这种模型大致工作流程:
有一生产者,也可以称其为造假者,他的工作是生成类似于源数据的数据,比如与古董真假难辨的伪造古董。生产者在这里就扮演了伪造古董的“工艺大师”。
有一对抗者,形象一点称其为鉴别者,他的工作就是判断某一数据是否来源于源数据,比如说,判断某一可能是古董的工艺品是不是真的古董。对抗者在这里就充当了“鉴宝大师”。
“工艺大师”和“鉴宝大师”相互竞争(对抗),驱使着他们各自变得更加优秀(前者生成真假难辨的古董,后者对再怎么真假难辨的古董也能分辨出来)。
gan的目的就是让这个“工艺大师”能够生成无限接近于(相似于)源数据的数据。对于工艺大师,就是生成“古董”。
gan数学表达
假设源数据集(古董数据)分布:p_{data}
假设生成的数据集(伪造的古董)分布:p_{g}(x_i,\theta_g),定义一个先验噪声p_z(z),经过多层感知机处理,噪声经过G(z,\theta_g)处理得到x,即x = G(z,\theta_g).
假设D(x)表示x来自源数据集p_{data}被鉴别为真(古董)的概率,那么D(G(z))则可以表示为x = G(z,\theta_g)来自于p_g而被鉴别为真(古董的概率)。
- 趋于0。因此可以这样表达:
- 趋于1,产生误判。因此可以这样表达:
- 结合以上两者,可以归纳为一个公式
gan数学表达的全局最优解
将上式记为
求其全局最优解,将G固定,求此时的\mathop{max}\limits_{D}V(D)
对上式中的D求偏微分,使其偏微分为0,于是有
解得有:D_G^* = \frac{p_{data}}{p_{data}+p_g}
再将D_G^* = \frac{p_{data}}{p_{data}+p_g}代回\mathop{min}\limits_{G}\mathop{max}\limits_{D} V(G,D) ,此时有
关于求解上式,有一个叫KL散度的东西,相对熵,衡量两个概率P(x),Q(x)分布的距离:如下
其中
在本式中,除以2处理
当p_g==p_{data}时,取全局最优最小值。
论文中实现生成对抗伪算法
gan论文
视频讲解
实验
略。