GAN中判别器与极大似然估计的关联

那年仲夏 提交于 2019-12-05 09:22:15

在GAN中,对于判别器D来说,实际上就是一个普通的二分类问题。

根据文章《交叉熵,KL散度以及多分类问题下的极大似然估计》当中的思考,对于二分类问题的极大似然估计,有如下式子成立:

L(X,Y,θ)=xyp(x,y)logq(y|x)dydx=p(x)[p(yi=1|xi)logq(yi=1|xi)+p(yi=0|xi)logq(yi=0|xi)]dx

那么,将上式的最后一步重新写成联合概率的形式,有

L(X,Y,θ)=[p(x,y=1)logq(y=1|x)+p(x,y=0)logq(y=0|x)]dx=[p(x,y=1)logq(y=1|x)+p(x,y=0)logq(y=0|x)]dx

对应到GAN中来,D分类器要做的就是给定一个x,需要判断这个样本x是属于real data还是generated data,如果我们把属于real data当作y=1,generated data当作y=0,那么便有

L(X,Y,θ)=[p(x,y=1)logq(y=1|x)+p(x,y=0)logq(y=0|x)]dx=[p(xreal)logq(y=1|x)+p(xfake)logq(y=0|x)]dx=pr(x)logq(y=1|x)dx+pg(x)logq(y=0|x)]dx=pr(x)logD(x)dx+pg(x)log(1D(x))dx=Epr(x)[log(D(x))]+Epg(x)[log(1D(x))]

判别器

判别器作为一个二分类器,其目标函数是极大似然估计,那么当D(x)取什么值的时候,似然函数达到最大值呢?因为有

L(D)=[pr(x)logD(x)+pg(x)log(1D(x))]dx

从积分的微观角度来解决这个问题的话,实际上这个式子可以变形为
L(D)=i=1N[pr(xi)logD(xi)+pg(xi)log(1D(xi))]Δx=i=1Nf(D(xi))Δx

其中,有两个点:
  • Δx=|x|N,意思是说把x的定义域等分成N份
  • xi+1=xi+Δx

由于对所有的采样点xi来说,Δx都相同的,因此如果能够使得求和里面的每一项f(D)都能够达到最大值,那么自然就取得了L(D)的最大值。而f(D)的最大值可以通过对D求导获得:

f(D)D=pr(x)D(x)(pr(x)+pg(x))D(x)(1D(x))

令导数为0,可以求得能够使得似然函数最大的最优判别器为:

D(x)=pr(x)pr(x)+pg(x)

几个概率的思考

这里的思考主要来自于上面的式子。

概率p(y=1|x)的分布

在GAN中,给定一个样本x,它有可能来自于真实的数据,即xpr(x),也有可能来自于生成的假的数据分布,即xpg(x),而这两个分布可能存在重叠区域,也有可能存在不重叠的区域
- 在重叠区域概率分布p(y=1|x)为一个0到1的某个数
- 在不重叠区域分为两种情况:一种是只有真实数据样本的分布,那么p(y=1|x)=1;另一种是只有生成数据样本的分布,那么p(y=1|x)=0
- 假如在一维的x轴上,从左侧到右侧依次是:只有真实数据分布,有重叠区域,只有生成数据分布,那么p(y=1|x)的形状便是从左侧到右侧依次是:恒等于1,根据实际数据情况而波动,恒等于0

各个概率之间的关系

有这几种概率
- p(y=1|x),上面已经讨论过了
- p(x,y=1),它实际上等于pr(x),也就是真实数据的分布
- p(x|y=1)=p(x,y=1)p(y=1)

这些概率之间的关系,可以参考之前思考过的二维高斯分布的情况。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!