在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,可以求得能夠使得似然函數最大的最優(yōu)判別器為:
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),而這兩個分布可能存在重疊區(qū)域,也有可能存在不重疊的區(qū)域
- 在重疊區(qū)域概率分布p(y=1|x)p(y=1|x)為一個0到1的某個數
- 在不重疊區(qū)域分為兩種情況:一種是只有真實數據樣本的分布,那么p(y=1|x)=1p(y=1|x)=1;另一種是只有生成數據樣本的分布,那么p(y=1|x)=0p(y=1|x)=0
- 假如在一維的x軸上,從左側到右側依次是:只有真實數據分布,有重疊區(qū)域,只有生成數據分布,那么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)
這些概率之間的關系,可以參考之前思考過的二維高斯分布的情況。
作者:黑馬程序員云計算大數據培訓學院
首發(fā):http://cloud.itheima.com/