为什么生成对抗网络中的最优判别器?D*G( x ) =p数据( × )p数据( x ) +pG( × )DG∗(x)=pdata(x)pdata(x)+pg(x)

机器算法验证 机器学习 神经网络 深度学习
2022-03-09 17:06:15

命题1
最优判别器为 证明时,我无法理解积分变量的变化。

DG(x)=pdata(x)pdata(x)+pg(x)

为什么第一行改为第二行?!

V(G,D)=xpdata(x)log(D(x))dx+zpZ(z)log(1D(g(z)))dz=xpdata(x)log(D(x))+pg(x)log(1D(x))dx

我试着自己计算了一下。

但是需要以下条件才能将 V(G,D) 的第一行更改为第二行V(G,D)V(G,D)

pz(z)1g(z)=pg(x)

总之..我的问题是..

  1. 为什么V(G,D)的第一行可以改成V(G,D)的第二行
  2. 在我自己尝试更改 V(G,D) 时,需要上述条件。条件合适吗?!
4个回答

Hi~ 要了解变量的变化,我们可以先看一下Generative Adversarial Networks , Goodfellow et al (2014), eprint arXiv:1406.2661 中的图 1。

根据论文。

下面的水平线是从中的域,上面的水平线是的域的一部分。向上的箭头表示变换zxx=g(z)

回到等式,很明显:

zpZ(z)log(1D(g(z))dz=Epz[log(1D(g(z))]

由于,我们可以用变量另请注意,在这种情况下,的分布。结果,我们有这个:x=g(z)g(z)xpgx

EpZ[log(1D(g(z))]=Epg[log(1D(x))]

然后我们将期望扩展为一个积分形式:

Epg[log(1D(x))]=xpg(x)log(1D(x))dx

Q1:为什么 V(G,D) 的第一行改为的第二行?V(G,D)V(G,D)

的最大值,因此第一行的更好表示法可能是V(G,D)

max[V(G,D)]=max[xpdata(x)log(D(x))dx+zpZ(z)log(1D(g(z)))dz]

然后是第二行

max[V(G,D)]=max[xpdata(x)log(D(x))+pg(x)log(1D(g(z)))dx]

在积分内部有的形式,它在中达到最大值这意味着允许积分的最大和,这允许第一行通向第二行。yalog(y)+blog(1y)[0,1]aa+bz=x

Q2:这样合适吗?

如果我认为问题表明除非答案的形式为,其中g(z)=1max[pg(x)]max[V(G,D)]V(G,D)DG(x)=pdata(x)pdata(x)+pg(x)aa+bpdata(x)=aPg(x)=b

你基本上已经明白了。因此的定义(参见第 4 节理论结果的第一段)是来自分布的分布。因此pgG(z)zpz

zpZ(z)log(1D(g(z))dz=EpZ[log(1D(g(z))]=Epx[log(1D(x))]

由于是从的确定性映射,因此令,则 . 所以zG(z)ZXy=G(z)p(y|z)=δ(yG(z))

Xpg(y)log(1D(y))dy=X[Zp(z,y)dz]log(1D(y))dy=X[Zp(z)p(y|z)dz]log(1D(y))dy=X[Zp(z)dz]p(y|z)log(1D(y))dy=Zp(z)[Xδ(yG(z))log(1D(y))dy]dz=Zp(z)[δ(yG(z))log(1D(y))]dz=Zp(z)log(1D(G(z)))dz.

倒数第二行到最后一行是狄拉克δ函数的卷积性质。