论文:ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS
EBGAN的思想是,将D网络看做一个能量方程。当G网络生成的数据靠近真实的数据流形区域时能量就比较低,相反的能量就高。EBGAN能生成更好的图片以及更高分辨率(256*256)

EBGAN的损失函数不再是传统GAN使用交叉熵损失函数。而是:
深度学习【42】EBGAN
其中D(x) = ||Dec(Enc(x))-x||,也就是D网络是一个自编码网络,D(x)是重构误差。[]+=max(0,),而m是一个常数。该损失函数也叫margin loss。论文还对该损失函数的最优解进行了证明,具体可参考论文2.2小节。

刚才提到D网络的是个自编码器,我们可以看看整个EBGAN的结构图:
深度学习【42】EBGAN

这个设计的合理性:
1、相较于只使用1bit的信息来训练模型,使用重构误差的损失函数会有更多的信息提供给D网络。binary logistic loss只有简单的两个targets来更新模型,因此在一个batch里面不同的样本的梯度不是正交的(没有区分度),这样使得模型训练起来很低效。而重构误差损失函数对于不同的样本的梯度则能够避免上述情况发生。
2、自编码器本身就很适合表征基于能量的模型。只要有合适的正则项自编码器就能够不使用监督或者反例数据,而很好的学习能量流形。

为了使得G网络能够生成多样性的图片,作者还提出了一个正则项Pulling-away Term(PT):
深度学习【42】EBGAN

其中,SRsN表示一个batch的样本的encoder输出特征。

实验结果

与DCGAN的比较

深度学习【42】EBGAN

imageNet上生成128*128 和256*256的图片:
深度学习【42】EBGAN

相关文章: