来源:https://arxiv.org/abs/1406.2661
符号解释 G G G Generator生成器 D D D Discriminator判别器 P d a t a P_{data} Pdata 真实数据分布 P G P_G PG 生成器生成数据分布
目标公式 min G max D E x ∼ P d a t a [ log D ( x ) ] + E z ∼ P G [ log ( 1 − D ( G ( z ) ) ) ] \min _{G} \max _{D} \mathbb{E}_{\boldsymbol{x} \sim P_{data}}[\log D(\boldsymbol{x})]+\mathbb{E}_{\boldsymbol{\boldsymbol{z}} \sim P_G}[\log (1-D(G(\boldsymbol{z})))] GminDmaxEx∼Pdata[logD(x)]+Ez∼PG[log(1−D(G(z)))]
判别器 loss函数 l o s s D = − E [ l o g ( D ( x ) ) ] − E [ l o g ( 1 − D ( G ( z ) ) ) ] loss_D = -\mathbb{E}[log(D(\boldsymbol{x}))] - \mathbb{E}[log(1 - D(G(\boldsymbol{z})))] lossD=−E[log(D(x))]−E[log(1−D(G(z)))]
生成器 loss函数 l o s s G = − E [ l o g ( D ( G ( z ) ) ) ] loss_G = -\mathbb{E}[log(D(G(\boldsymbol{z})))] lossG=−E[log(D(G(z)))]
即最小二乘GAN 来源:https://arxiv.org/abs/1611.04076
判别器 loss函数 min D l o s s D = 1 2 E x ∼ P d a t a ( x ) [ ( D ( x ) − b ) 2 ] + 1 2 E z ∼ P G ( z ) [ ( D ( G ( z ) ) − a ) 2 ] {\min _{D} loss_D=\frac{1}{2} \mathbb{E}_{\boldsymbol{x} \sim P_{\mathrm{data}}(\boldsymbol{x})}\left[(D(\boldsymbol{x})-b)^{2}\right]+\frac{1}{2} \mathbb{E}_{\boldsymbol{z} \sim P_{\boldsymbol{G}}(\boldsymbol{z})}\left[(D(G(\boldsymbol{z}))-a)^{2}\right]} DminlossD=21Ex∼Pdata(x)[(D(x)−b)2]+21Ez∼PG(z)[(D(G(z))−a)2] 生成器 loss函数 min G l o s s G = 1 2 E z ∼ P G ( z ) [ ( D ( G ( z ) ) − c ) 2 ] {\min _{G} loss_G=\frac{1}{2} \mathbb{E}_{\boldsymbol{z} \sim P_{\boldsymbol{G}}(\boldsymbol{z})}\left[(D(G(\boldsymbol{z}))-c)^{2}\right]} GminlossG=21Ez∼PG(z)[(D(G(z))−c)2] 其中作者设置a=c=1,b=0
加上梯度惩罚的WGAN 来源:https://arxiv.org/abs/1704.00028
判别器 loss函数 l o s s D = − E x ∼ P data [ D ( x ) ] + E x ∼ P G [ D ( x ) ] + λ E x ∼ P x ^ [ ∥ ∇ x D ( x ) ∥ p − 1 ] 2 loss_D=-\mathbb{E}_{x \sim P_{\text {data }}}[D(x)]+\mathbb{E}_{x \sim P_{G}}[D(x)]+\lambda \mathbb{E}_{x \sim P_{\hat{x}}}\left[\left\|\nabla_{x} D(x)\right\|_{p}-1\right]^{2} lossD=−Ex∼Pdata [D(x)]+Ex∼PG[D(x)]+λEx∼Px^[∥∇xD(x)∥p−1]2 生成器 loss函数 l o s s G = − E x ∼ P G [ D ( G ( z ) ) ] loss_G = -\mathbb{E}_{x \sim P_{G}}[D(G(\boldsymbol{z}))] lossG=−Ex∼PG[D(G(z))]
我们已做过的测试结果中,使用wgan-gp的loss作为模型中的loss函数需要花费的训练时间是上述其他两种方法的4倍左右,效果上没有太大的区别。最终LSGAN效果较好且速度较快。 当然在今后的不同数据的训练中,还需要额外的测试来对比哪种方案比较优秀,并采用。