1. 程式人生 > >從互資訊角度理解生成對抗網路:infoGAN

從互資訊角度理解生成對抗網路:infoGAN

回顧:生成對抗網路 Generative Adversarial Nets

GAN的目標就是要學到一個數據分佈為p(x)的生成網路G,即希望pG(x)\displaystyle p_{G}( x)Pdata(x)\displaystyle P_{data}( x)儘可能接近。為此這裡引入了一個判別網路D,這個判別網路的作用就是用來儘可能區分xPG(x)\displaystyle x\sim P_{G}( x)xPdata(x)\displaystyle x\sim P_{data}( x)的資料。這一個minmax的遊戲可以用下面的公式表達:
min

GmaxDV(D,G)=Ep(x)[log(D(x))]+Ep(z)[log(1D(G(z)))] \min_{G}\max_{D} V(D,G)=E_{p(\mathbf{x} )} [\log (D(\mathbf{x} ))]+E_{p(\mathbf{z} )} [\log (1-D(G(\mathbf{z} )))]
當我們固定G時,判別器所使用的目標函式是:

maxDV(D,G)=Ep(x)[log(D(x))]+ExGpG(x)[log(1D(x

G))] \max_{D} V(D,G)=E_{p(\mathbf{x} )} [\log (D(\mathbf{x} ))]+E_{x_{G} \sim p_{G}( x)} [\log (1-D(x_{G} ))]
這裡把G(z)\displaystyle G(\mathbf{z} )所產生的樣本,用xG\displaystyle x_{G}來代替了。在這裡,如何判別器D判斷樣本為真實的話,那麼就等於1,如果是假的話,就等於0,可以想象,當判別器最優時,左邊那項一定等於0,因為來自真實樣本,右邊那項也等於0,因為樣本是來自x
G\displaystyle x_{G}
的。這時候這個目標函式就是最大的(這個目標函式一定小於等於0,因為概率是小於等於1的,那麼概率的對數就是小於等於0的)。

可以證明,當D達到最優時,即D(x)=pdata(x)pdata(x)+pG(x)D^{*} (\mathbf{x} )=\frac{p_{data} (\mathbf{x} )}{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )} ,該目標函式等價於優化JS散度:
V(DG,G)=pdata(x)logpdata(x)pdata(x)+pG(x)dx+pG(x)logpG(x)pdata(x+pG(x))dxlog4+log4=pdata(x)logpdata(x)pdata(x)+pG(x)dx+pG(x)logpG(x)pdata(x+pG(x))dxlog4+log4pG(x)dx=pdata(x)logpdata(x)pdata(x)+pG(x)dx+pG(x)logpG(x)pdata(x+pG(x))dxlog4+log2pdata(x)dx+log2pG(x)dx=pdata(x)log2pdata(x)pdata(x)+pG(x)dx+pG(x)log2pG(x)pdata(x+pG(x))dxlog4=pdata(x)logpdata(x)pdata(x)+pG(x)2dx+pG(x)logpG(x)pdata(x)+pG(x)2dxlog4=DKL(pdata(x)pdata(x)+pG(x)2)+DKL(p(x)pdata(x)+pG(x)2)log4=2JSD(pdata(x)pG(x))log4 \begin{aligned} V(D^{*}_{G} ,G) & =\int p_{data} (\mathbf{x} )\log\frac{p_{data} (\mathbf{x} )}{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )} d\mathbf{x} +\int p_{G} (\mathbf{x} )\log\frac{p_{G} (\mathbf{x} )}{p_{data} (\mathbf{x} +p_{G} (\mathbf{x} ))} d\mathbf{x} -\log 4\\ & +\log 4\\ & =\int p_{data} (\mathbf{x} )\log\frac{p_{data} (\mathbf{x} )}{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )} d\mathbf{x} +\int p_{G} (\mathbf{x} )\log\frac{p_{G} (\mathbf{x} )}{p_{data} (\mathbf{x} +p_{G} (\mathbf{x} ))} d\mathbf{x} -\log 4\\ & +\log 4\int p_{G} (\mathbf{x} )d\mathbf{x}\\ & =\int p_{data} (\mathbf{x} )\log\frac{p_{data} (\mathbf{x} )}{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )} d\mathbf{x} +\int p_{G} (\mathbf{x} )\log\frac{p_{G} (\mathbf{x} )}{p_{data} (\mathbf{x} +p_{G} (\mathbf{x} ))} d\mathbf{x} -\log 4\\ & +\log 2\int p_{data} (\mathbf{x} )d\mathbf{x} +\log 2\int p_{G} (\mathbf{x} )d\mathbf{x}\\ & =\int p_{data} (\mathbf{x} )\log\frac{2p_{data} (\mathbf{x} )}{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )} d\mathbf{x} +\int p_{G} (\mathbf{x} )\log\frac{2p_{G} (\mathbf{x} )}{p_{data} (\mathbf{x} +p_{G} (\mathbf{x} ))} d\mathbf{x} -\log 4\\ & =\int p_{data} (\mathbf{x} )\log\frac{p_{data} (\mathbf{x} )}{\frac{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )}{2}} d\mathbf{x} +\int p_{G} (\mathbf{x} )\log\frac{p_{G} (\mathbf{x} )}{\frac{p_{data} (\mathbf{x}) +p_{G} (\mathbf{x} )}{2}} d\mathbf{x} -\log 4\\ & =D_{KL}\left( p_{data} (\mathbf{x} )||\frac{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )}{2}\right) +D_{KL}\left( p(\mathbf{x} )||\frac{p_{data} (\mathbf{x} )+p_{G} (\mathbf{x} )}{2}\right) -\log 4\\ & =2\cdot JSD(p_{data} (\mathbf{x} )||p_{G} (\mathbf{x} ))-\log 4 \end{aligned}