项目场景:
CycleGAN消融实验设计及相关问题分析
数据集:horse2zebra
CycleGAN Training Result
A2B Loss:
B2A Loss:
Both Direction Loss:
Some perfect results
A2B results:
B2A results:
问题描述:
通过观察发现,A2B 与 B2A 两个方向的结果存在细微差异,表现在这个数据集上是 “马—>斑马” 的效果普遍优于 “斑马—>马”,我们采用网络结构完全对称,理论上这种现象不应该出现在。
原因分析:
Asumption1: 两个数据集的大小不一样
Asumption2: 数据不对称,学习难度不一样
解决方案:
先采用同等大小的数据集
GAN:Mode collapse
忽略cycle loss,按original GAN训练
原因分析:
GAN训练随机性太强,引起模式崩溃,训练出鲁棒性强的GAN确实是一个难题
解决方案:
先重新训练一下看看结果
从优化目标考虑:
u n r o l l e d G A N [ 1 ] unrolled GAN^{[1]} unrolledGAN[1]:unrolled GAN认为,因为生成器缺乏“先见之明”,导致了无法跳出模式崩溃的困境,生成器每次更新参数时,只考虑在当前生成器和判别器的状态下可以获得的最优解,生成器并不知道当前选择的最优解从长远来看并不是最优解。通过一定的改进,来赋予生成器“先见之明”。即生成器在更新时,不仅仅考虑当前生成器的状态,还会额外考虑以当前状态为起始点,判别器更新K次后的状态,综合两个信息做出最优解。
D R A G A N [ 2 ] DRAGAN^{[2]} DRAGAN[2]:GAN的参数优化问题并不是一个凸优化问题,存在许多局部纳什均衡状态。即使GAN进入某个纳什均衡状态,损失函数表现为收敛,其仍旧可产生模式崩溃,我们认为此时参数进入一个坏的局部均衡点。通过实践,发现当GAN出现模式崩溃问题时,通常伴随着这样的表现:当判别器在训练样本附近更新参数时,其梯度值非常大,故DRAGAN的解决方法是:对判别器,在训练样本附近施加梯度惩罚项。试图在训练样本附近构建线性函数,因为线性函数为凸函数具有全局最优解。DRAGAN的形式与WGAN-GP颇为相似,只是WGAN-GP是在全样本空间施加梯度惩罚,而DRAGAN只在训练样本附近施加梯度惩罚。
从网络架构考虑:
M
A
D
−
G
A
N
[
3
]
MAD-GAN^{[3]}
MAD−GAN[3]:即使单个生成器会产生模式崩溃的问题,但是如果同时构造多个生成器,且让每个生成器产生不同的模式,则这样的多生成器结合起来也可以保证产生的样本具有多样性。在MAD(Multi-agent diverse)GAN中,共包括k个初始值不同的生成器和1个判别器,与标准GAN的生成器一样,每个生成器的目的仍然是产生虚假样本试图欺骗判别器。对于判别器,它不仅需要分辨样本来自于训练数据集还是其中的某个生成器(这仍然与标准GAN的判别器一样),而且还需要驱使各个生成器尽量产生不相似的样本。
MAD-GAN-Sim :MAD-GAN-Sim是一种“更强力”的版本,它不仅考虑了每个生成器都分别负责生成不同的样本,而且更细致地考虑了样本的相似性问题。其出发点在于:来自于不同模式的样本应该是看起来不同的,故不同的生成器应该生成看起来不相似的样本。
参考论文:
[1] Kodali N , Abernethy J , Hays J , et al. On Convergence and Stability of GANs[J]. 2017.
[2] Metz L , Poole B , Pfau D , et al. Unrolled Generative Adversarial Networks[J]. 2016.
[3] Ghosh A , Kulharia V , Namboodiri V , et al. Multi-Agent Diverse Generative Adversarial Networks[J]. 2017.
Ablation study
按照论文中消融实验的思路,设计GAN,CycleGAN, GAN+foward_loss,GAN+backward_loss,比对图像转换效果。
比较可惜的是训练出的GAN模型产生了模式崩溃,但对后三者进行对比还是可以说明问题的。
Direction A2B:
Direction B2A:
量化指标
Direction | Metric | Cycle-GAN | GAN + foward | GAN + backward |
---|---|---|---|---|
A2B | FID | 184.63 | 209.27 | 214.93 |
A2B | KIDx100 | 5.75 | 11.20 | 13.83 |
B2A | FID | 92.26 | 102.25 | 94.12 |
B2A | KIDx100 | 1.04 | 1.48 | 1.34 |
结论
从结果来看,当只考虑一个方向的循环损失时,另一个方向效果就会很差。
- 综合考量双向的Cycle Loss会有更好的表现效果。
GAN的一些评价指标
- Inception Score: 将GAN生成的样本丢给Inception网络,输出类别概率,对于同一类别的图片,其输出的概率分布应该趋向于一个脉冲分布,可以保证生成样本的准确性。对于所有类别,其输出的概率分布应该趋向于一个均匀分布,这样才不会出现mode dropping等,可以保证生成样本的多样性。
- Mode Score:Inception Score的改进版本,添加了生成样本和真实样本预测的概率分布相似性度量。
- Kernel MMD
- Wasserstein distance
- Fréchet Inception Distance (FID):计算真实样本和生成样本在特征空间之间的距离。首先利用Inception网络来提取特征,然后使用高斯模型对特征空间进行建模。根据高斯模型的均值和协方差来进行距离计算。