1. 原始GAN的优化
原始GAN的目标函数为:
m i n G m a x D V ( D , G ) min_Gmax_DV(D,G) minGmaxDV(D,G)
V ( D , G ) = E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] V(D,G)=E_{x\sim p_{data}(x)}[logD(x)]+E_{z\sim p_z(z)}[log(1-D(G(z)))] V(D,G)=Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))]
先是固定生成器G,优化判别器D(真实数据希望被分成1,生成数据希望被分成0):
m a x D ( E x ∼ p d a t a ( x ) [ l o g D ( x ) ] + E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] ) max_D (E_{x\sim p_{data}(x)}[logD(x)]+E_{z\sim p_z(z)}[log(1-D(G(z)))]) maxD(Ex∼pdata(x)[logD(x)]+Ez∼pz(z)[log(1−D(G(z)))])
判别器最优解为:
D ∗ ( x ) = P d a t a ( x ) P d a t a ( x ) + P g ( x ) D^{*}(x)=\frac{P_{data(x)}}{P_{data}(x)+P_g(x)} D∗(x)=Pdata(x)+Pg(x)Pdata(x)
然后固定判别器D,优化生成器G(第一项不包含G,是常数,可省略):
m i n G E z ∼ p z ( z ) [ l o g ( 1 − D ( G ( z ) ) ) ] min_G E_{z\sim p_z(z)}[log(1-D(G(z)))] minGE