首页技术文章正文

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

更新时间:2018-12-13 来源:黑马程序员 浏览量:

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

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

L(X,Y,θ)=∫x∫yp(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,θ)=∫x∫yp(x,y)log⁡q(y|x)dydx=∫p(x)[p(yi=1|xi)log⁡q(yi=1|xi)+p(yi=0|xi)log⁡q(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
L(X,Y,θ)=∫[p(x,y=1)log⁡q(y=1|x)+p(x,y=0)log⁡q(y=0|x)]dx=∫[p(x,y=1)log⁡q(y=1|x)+p(x,y=0)log⁡q(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(x∈real)logq(y=1|x)+p(x∈fake)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(1−D(x))dx=Epr(x)[log(D(x))]+Epg(x)[log(1−D(x))]
L(X,Y,θ)=∫[p(x,y=1)log⁡q(y=1|x)+p(x,y=0)log⁡q(y=0|x)]dx=∫[p(x∈real)log⁡q(y=1|x)+p(x∈fake)log⁡q(y=0|x)]dx=∫pr(x)log⁡q(y=1|x)dx+∫pg(x)log⁡q(y=0|x)]dx=∫pr(x)log⁡D(x)dx+∫pg(x)log⁡(1−D(x))dx=Epr(x)[log⁡(D(x))]+Epg(x)[log⁡(1−D(x))]
判别器
判别器作为一个二分类器,其目标函数是极大似然估计,那么当D(x)取什么值的时候,似然函数达到最大值呢?因为有 
L(D)=∫[pr(x)logD(x)+pg(x)log(1−D(x))]dx
L(D)=∫[pr(x)log⁡D(x)+pg(x)log⁡(1−D(x))]dx

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

其中,有两个点:
Δx=|x|NΔx=|x|N,意思是说把x的定义域等分成N份
xi+1=xi+Δxxi+1=xi+Δx
由于对所有的采样点xixi来说,ΔxΔx都相同的,因此如果能够使得求和里面的每一项f(D)都能够达到最大值,那么自然就取得了L(D)的最大值。而f(D)的最大值可以通过对D求导获得:

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

令导数为0,可以求得能够使得似然函数最大的最优判别器为:
D⋆(x)=pr(x)pr(x)+pg(x)
D⋆(x)=pr(x)pr(x)+pg(x)
几个概率的思考
这里的思考主要来自于上面的式子。

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

各个概率之间的关系
有这几种概率 
- p(y=1|x)p(y=1|x),上面已经讨论过了 
- p(x,y=1)p(x,y=1),它实际上等于pr(x)pr(x),也就是真实数据的分布 
- p(x|y=1)=p(x,y=1)p(y=1)p(x|y=1)=p(x,y=1)p(y=1)
这些概率之间的关系,可以参考之前思考过的二维高斯分布的情况。

作者:黑马程序员云计算大数据培训学院
首发:http://cloud.itheima.com/


分享到:
在线咨询 我要报名
和我们在线交谈!