上一篇文章讲的是《BEGAN: Boundary Equilibrium Generative Adversarial Networks》将能量函数(Energy)与Wasserstein Distance相结合,再辅之以比例反馈控制,让GAN迅速收敛,并保持了多样性。具体是:
- 让Auto-Encoder作为Discriminator,将原图与重建图的逐点差异(pixel-wise error)作为能量。
- 将D输出的能量看成是一个概率分布,用Wasserstein Distance作为衡量概率分布的距离:真图能量概率分布、假图能量概率分布。
对Wasserstein Distance简化处理,真正衡量的是两个能量分布重心的距离
由Auto-Encoder重建差异构成的能量作为Discriminator的输出其出处是在《ENERGY-BASED GENERATIVE ADVERSARIAL NETWORKS》中,文中提到EBGAN模型,比较EBGAN与BEGAN差异在哪里呢?
BEGAN与EBGAN的模型(D-G)是相似的,如图:
BEGAN的Loss:
而EBGAN的Loss:
其中, 表示max(0,x),即就是x大于0的部分,(6)被称为margin loss(边沿损失),是能量学习的一种Loss定义方式。
比较BEGAN和EBGAN:(5)与(1)是一样的,(2)和(6)相对应,(3)和(7)相对应。通过比较,可以发现只是(2)、(7)有差异,(2)是 乘以一个幅度控制量 ,而(7)则是将 控制在一个范围内。若 为一个常数(如:1),而 时,(6)和(2)在求导时就是一样的。Auto-Encoder之所以有效,是因为Encoder时将真图空间与假图空间的流形在编码时统一在了一个低维空间上(Encoder生成的Code的空间),然后再通过梯度后向调整生成器,使生成器所形成的空间与真实空间接近。以下是EBGAN实验效果:
生成图的效果如下:
(a)未经训练G生成的图像 (b)BEGAN训练后G的输出
若对BEGAN的训练步骤做以下调整,过程和效果如下:
1、先训练好Discriminator
(c)原图 (d)训练好的Discriminator恢复出来的重建图
2、固定Discriminator参数,训练生成器。Discriminator产生Fake Image的能量,最小化该能量,让生成器生成的假图落在真图流形之中。
(e)固定最优D后,未对G进行训练时,由噪声序列生成的重建图 (f)固定最优D后,对G进行训练后,由噪声序列生成的重建图
从图中可见(d)并未出现数字,但却比(c)离目标近。
3、在前两步的基础上,再次执行完整的EBGAN训练。(G-D)
(g)联合调整D-G实现EBGAN的生成
(g)图与数字有些相似了,但仍无法收敛到目标数字。
以下(h)是另一次实验(与上面实验,设置相同,只是重新开始)的G生成图像,生成效果好多了。
(h)另一次实验效果
小结:从两次实验上看,能量学习并不一定能够得到我们预期的效果(g图和h图),但可以直观地判断g图较f图的确是与a图更接近了。能量学习还是有效果的,《A tutorial on energy based learning》对能量学习有完整的介绍。
所谓能量模型(Energy model)就是赋予每一个状态一个能量,所谓能量就是一个非负实数。模型学习的目标:对一个正确状态(Correct state)能给出一个低的能量(
),对一个错误状态(Incorrect state)给出一个高的状态(
)。学习的过程,必须完成两方面任务:一方面,拉低正确的状态能量,另一方面,抬高错误的能量,如图所示:
上图中
是正确状态,能量应该低,而
是错误状态,能量应该高,学习过程就是一个“一拉一抬”的过程。一般可认为,Ground-Truth的状态
是正确状态,与之不同的是错误状态。《A tutorial on energy based learning》给出的Loss方程有如下一些:
EBGAN所采用的margin loss是hinge loss的一个调整,它将max()中的
拿到了外面,是让Discriminator在
$E(W,\tilde Y^i,X^i) \$
时也能对Auto-Encoder进行调整。