提高生成对抗网络(GAN)训练稳定性的9大tricks

使用GAN的缺陷

GAN 是由 Generator 生成网络和 Discriminator 判别网络组成的。

1. Mode collapse(模型崩溃)

:Mode collapse 是指 GAN 生成的样本单一,其认为满足某一分布的结果为 true,其他为 False,导致以上结果。

自然数据分布是非常复杂,且是多峰值的(multimodal)。也就是说数据分布有很多的峰值(peak)或众数(mode)。每个 mode 都表示相似数据样本的聚集,但与其他 mode 是不同的。

在 mode collapse 过程中,生成网络 G 会生成属于有限集 mode 的样本当 G 认为可以在单个 mode 上欺骗判别网络 D 时,G 就会生成该 mode 外的样本。

判别网络最后会判别来自该 mode 的样本是假的。最后,生成网络 G 会简单地锁定到另一个 mode。该循环会无限进行,就会限制生成样本的多样性。

2.Convergence(收敛)

GAN 训练过程中遇到的一个问题是什么时候停止训练?
因为判别网络 D 损失降级会改善生成网络 G 的损失(反之亦然),因此无法根据损失函数的值来判断收敛,如下图所示:
在这里插入图片描述

3. Quality(质量)

与前面提到的收敛问题一样,很难量化地判断生成网络 G 什么时候会生成高质量的样本。另外,在损失函数中加入感知正则化则在一定程度上可缓解该问题。

4.Metrics(度量)

GAN 的目标函数解释了生成网络 G 或 判别网络 D 如何根据组件来执行,但它却不表示输出的质量和多样性。因此,需要许多不同的度量指标来进行衡量。

改善性能的技术

下面总结了一些可以使 GAN 训练更加稳定的技术。

1. Alternative Loss Functions (替代损失函数)

①:修复 GAN 缺陷的最流行的补丁是 Wasserstein GAN (WGAN),该 GAN 用 Earth Mover distance ( Wasserstein-1 distance 或 EM distance) 来替换传统 GAN 的 Jensen Shannon divergence ( J-S 散度) 。

使用 Earth Mover distance 的优势在于即使真实的生成数据分布是不相交的,它也是连续的。同时,在生成的图像质量和损失值之间存在一定关系。使用 Earth Mover distance 的劣势在于对于每个生成模型 G 都要执行许多判别网络 D 的更新

Earth Mover distance:地球移动距离(EMD)是一种在D区域两个概率分布距离的度量,就是被熟知的Wasserstein度量标准。不正式的说,如果两个分布被看作在D区域上两种不同方式堆积一定数量的山堆,那么EMD就是把一堆变成另一堆所需要移动单位小块最小的距离之和。

②:另一个解决方案是使用均方损失( mean squared loss )替代对数损失( log loss )。LSGAN https://arxiv.org/abs/1611.04076.的作者认为传统 GAN 损失函数并不会使收集的数据分布接近于真实数据分布。原来 GAN 损失函数中的对数损失并不影响生成数据与决策边界(decision boundary)的距离。另一方面,LSGAN 也会对距离决策边界较远的样本进行惩罚,使生成的数据分布与真实数据分布更加靠近,这是通过将均方损失替换为对数损失来完成的。

决策边界(decision boundary):分类器将决策边界一侧的所有点分类为属于一个类,而将另一侧的所有点分类为属于另一个类。

2. Two Timescale Update Rule (TTUR)——(双时间尺度更新规则)

在 TTUR 方法中,研究人员对判别网络 D 和生成网络 G 使用不同的学习速度。低速更新规则用于生成网络 G ,判别网络 D使用 高速更新规则。使用 TTUR 方法,研究人员可以让生成网络 G 和判别网络 D 以 1:1 的速度更新。 SAGAN https://blog.csdn.net/z704630835/article/details/89150051.就使用了 TTUR 方法。

3. Gradient Penalty (梯度惩罚)

在论文Improved Training of WGANs:https://arxiv.org/abs/1704.00028.
中,作者称权重修改会导致优化问题。权重修改会迫使神经网络学习学习更简单的相似(simpler approximations)达到最优数据分布,导致结果质量不高。同时如果 WGAN 超参数设置不合理,权重修改可能会出现梯度消失或梯度爆炸的问题,论文作者在损失函数中加入了一个简单的梯度惩罚机制以缓解该问题。

加入惩罚项的公式如下:
在这里插入图片描述
DRAGAN https://arxiv.org/abs/1705.07215.的作者称,当 GAN 的博弈达到一个局部平衡态(local equilibrium state),就会出现 mode collapse 的问题。而且判别网络 D 在这种状态下产生的梯度是非常陡(sharp)的。一般来说,使用梯度惩罚机制可以帮助避免这种状态的产生,极大增强 GAN 的稳定性,尽可能减少 mode collapse 问题的产生。

对于DRAGAN的详解参考博客:https://blog.csdn.net/z704630835/article/details/89150051.

4. Spectral Normalization(谱归一化)

Spectral normalization 是用在判别网络 D 来增强训练过程的权重正态化技术 (weight normalization technique),可以确保判别网络 D 是 K-Lipschitz (连续没有间断点)连续的。 SAGAN https://arxiv.org/abs/1805.08318.
这样的实现也在判别网络 D 上使用了谱正则化。而且该方法在计算上要比梯度惩罚方法更加高效。

对于SAGAN的详细解读参考博客:
https://blog.csdn.net/z704630835/article/details/86648924.

5. Unrolling and Packing (展开和打包)

文章 Mode collapse in GANshttp://aiden.nibali.org/blog/2017-01-18-mode-collapse-gans/中提到一种预防 mode hopping(跳模) 的方法就是在更新参数时进行预期对抗(anticipate counterplay)。展开的 GAN ( Unrolled GANs )可以使用生成网络 G 欺骗判别网络 D,然后判别网络 D 就有机会进行响应。

另一种预防 mode collapse 的方式就是把多个属于同一类的样本进行打包,然后传递给判别网络 D 。PacGAN https://arxiv.org/abs/1712.04086就融入了该方法,并证明可以减少 mode collapse 的发生。

6. 多个 GAN

一个 GAN 可能不足以有效地处理任务,因此研究人员提出使用多个连续的 GAN ,每个 GAN 解决任务中的一些简单问题。比如,FashionGANhttps://www.cs.toronto.edu/~urtasun/publications/zhu_etal_iccv17.pdf就使用 2 个 GAN 来执行图像定位翻译。
在这里插入图片描述

7. Relativistic GANs(相对生成对抗网络)

传统的 GAN 会测量生成数据为真的可能性。Relativistic GANs 则会测量生成数据“逼真”的可能性。研究人员可以使用相对距离测量方法(appropriate distance measure)来测量相对真实性(relative realism),
相关论文链接:https://arxiv.org/abs/1807.00734

在论文中,作者提到判别网络 D 达到最优状态时,D 的输出应该聚集到 0.5但传统的 GAN 训练算法会让判别网络 D 对图像输出“真实”(real,1)的可能性,这会限制判别网络 D 达到最优性能。不过这种方法可以很好地解决这个问题,并得到不错的结果。

8. Self Attention Mechanism(自注意力机制)

Self Attention GANshttps://arxiv.org/abs/1805.08318 作者称用于生成图像的卷积会关注本地传播的信息。也就是说,由于限制性接收域这会错过广泛传播关系
在这里插入图片描述
Self-Attention Generative Adversarial Network 允许图像生成任务中使用注意力驱动的、长距依赖的模型。自注意力机制是对正常卷积操作的补充,全局信息(长距依赖)会用于生成更高质量的图像,而用来忽略注意力机制的神经网络会考虑注意力机制和正常的卷积。
(相关论文链接:https://arxiv.org/pdf/1805.08318.pdf.)

9. 其他技术

其他可以用来改善 GAN 训练过程的技术包括:

特征匹配

Mini Batch Discrimination(小批量判别)

历史平均值

One-sided Label Smoothing(单侧标签平滑)

Virtual Batch Normalization(虚拟批量正态化)

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
深度学习tricks是指在深度学习模型训练过程中使用的一些技巧和策略,旨在提高模型的性能和训练效果。以下是一些常用的深度学习tricks: 1. 数据增强(Data Augmentation):通过对原始数据进行随机变换和扩充,生成更多的训练样本,以增加模型的泛化能力。 2. 批归一化(Batch Normalization):在每个小批量数据上进行归一化操作,有助于加速模型的收敛速度,提高模型的稳定性和泛化能力。 3. 学习率调整(Learning Rate Schedule):根据训练的进程动态地调整学习率,例如使用学习率衰减或者学习率预热等策略,以提高模型的收敛性能。 4. 正则化(Regularization):通过添加正则化项,如L1正则化或L2正则化,限制模型的复杂度,防止过拟合。 5. 提前停止(Early Stopping):在训练过程中监控验证集上的性能指标,当性能不再提升时停止训练,以避免过拟合。 6. 参数初始化(Parameter Initialization):合适的参数初始化可以帮助模型更快地收敛和更好地泛化,常用的初始化方法包括Xavier初始化和He初始化等。 7. 梯度裁剪(Gradient Clipping):限制梯度的范围,防止梯度爆炸或梯度消失问题,提高模型的稳定性。 8. 集成学习(Ensemble Learning):通过结合多个模型的预测结果,可以提高模型的泛化能力和鲁棒性。 9. 迁移学习(Transfer Learning):利用已经训练好的模型在新任务上进行微调,可以加快模型的训练速度和提高模型的性能。 10. 深度网络结构设计:合理设计网络结构,包括层数、宽度、卷积核大小等,可以提高模型的表达能力和学习能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康x呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值