GAN有不少未解决的问题:1、虽然在DCGAN和improveGAN中提出了不少训练GAN的tricks,但是GAN还是很难训练。2、很难控制G网络的多样性。3、D网络和G网络之间的平衡性很难控制,大部分情况下D网络在训练之初能力会更强。
而BEGAN提出了能够使得训练过程快又稳定的方法;解决了D网络和G网络能力平衡问题;有能力控制生成图片的多样性和质量平衡问题以及衡量收敛性的近似方法。
BEGAN
上图是BEGAN在mnist数据上设计的一个模型,借助了EBGAN的encoder-decoder作为D网络结构的思想。一共有三个网络,分别是G网络,以及D网络中的encoder和decoder。其中G网络和decoder的网络结构是一样的,这两个网络旁边灰色部分是可选的优化结构(跳跃连接和加入h0信息)。
看完模型结构例子,我们在看看began的损失函数:
其中L 表示重构误差:
(x)=L1_loss(采样而来的真实图片y−y经过D网络重构出来的图片)L(x)=L1_loss(采样而来的真实图片y−y经过D网络重构出来的图片)
(G(zG))=L1loss(随机向量zG经过decoder生成的图片−G网络生成的图片经过D网络重构出来的图片)L(G(zG))=L1loss(随机向量zG经过decoder生成的图片−G网络生成的图片经过D网络重构出来的图片)
γ∈[0,1]γ∈[0,1] 是一个超参数。值越低表示生成的样本的多样性越低。λkλk 是kt+1kt+1 的更新步长。
另外论文还提出了衡量模型训练收敛性的公式:

其实到这边BEGAN的内容就差不多了。但由于论文的大部分内容都是在讲损失函数是怎么来的,所以我们接着看看上面的损失函数的由来。
BEGAN损失函数的由来
由上面的介绍我们知道L 是一个自编码器的重构误差函数。现在我们假设自编码有两个重构误差的分布函数分别是μ1,μ2μ1,μ2,并用
Γ(μ1,μ2)Γ(μ1,μ2) 表示μ1,μ2μ1,μ2 的所有可能集合,m1,2m1,2 为μ1,μ2μ1,μ2 的期望。这样我可以将Wasserstein 距离定义为:
其中,x1,x2x1,x2 分别为从γ=(μ1,μ2)γ=(μ1,μ2) 采样出来的两个损失函数值。
要真正优化上面的公式是不可能的,因为ΓΓ 的样本空间太大了。但是使用Jensen不等式我们可以得到:

|m1−m2||m1−m2| 是Wasserstein距离的一个更低的界。
在BEGAN里,我们令μ1μ1 为 (x)L(x) 的分布,μ2μ2 为 (G(z))L(G(z)) 的分布。又因为最大化|m1−m2||m1−m2|,只有两种情况:

同时我们目标是让G网络生成的图片更接近真实。因此我们选择(b),于是有:

这就是BEGAN的损失函数了。为了控制G网络和D网络之间能力的平衡,以及G网络生成样本多样性和质量之间的平衡,作者还引入一开始介绍的BEGAN损失函数最终形式中的k和γγ 两个参数。
实验结果
看一个就好了,简直惊人。

BEGAN解决了GAN训练的稳定性问题,实现了D和G网络的平衡,以及生成多样性与质量的控制。它利用了自编码器的重构误差作为损失函数,并通过Jensen不等式优化Wasserstein距离的下界。实验结果显示,BEGAN能生成高质量且多样性的图像。
6292

被折叠的 条评论
为什么被折叠?



