尽管 gan 领域的进步令人印象深刻,但其在应用过程中仍然存在一些困难。本文梳理了 gan 在应用过程中存在的一些难题,并提出了最新的解决方法。
使用 gan 的缺陷
众所周知,gan 是由 generator 生成网络和 discriminator 判别网络组成的。
1. modecollapse(模型奔溃)
注:mode collapse 是指 gan 生成的样本单一,其认为满足某一分布的结果为 true,其他为 false,导致以上结果。
自然数据分布是非常复杂,且是多峰值的(multimodal)。也就是说数据分布有很多的峰值(peak)或众数(mode)。每个 mode 都表示相似数据样本的聚集,但与其他 mode 是不同的。
在 modecollapse 过程中,生成网络 g 会生成属于有限集 mode 的样本。当 g 认为可以在单个 mode 上欺骗判别网络 d 时,g 就会生成该 mode 外的样本。
上图表示 gan 的输出没有 mode collapse. 下图则出现了 mode collapse。
判别网络最后会判别来自该 mode 的样本是假的。最后,生成网络 g 会简单地锁定到另一个 mode。该循环会无限进行,就会限制生成样本的多样性。
2. convergence(收敛)
gan 训练过程中遇到的一个问题是什么时候停止训练?因为判别网络 d 损失降级会改善生成网络 g 的损失(反之亦然),因此无法根据损失函数的值来判断收敛,如下图所示:
典型的gan损失函数图。注意该如何从这个图中解释收敛性。
3. quality(质量)
与前面提到的收敛问题一样,很难量化地判断生成网络 g 什么时候会生成高质量的样本。另外,在损失函数中加入感知正则化则在一定程度上可缓解该问题。
4. metrics(度量)
gan 的目标函数解释了生成网络 g 或 判别网络 d 如何根据组件来执行,但它却不表示输出的质量和多样性。因此,需要许多不同的度量指标来进行衡量。
改善性能的技术
下面总结了一些可以使 gan 更加稳定使用的技术。
1. alternative loss functions (替代损失函数)
修复 gan 缺陷的最流行的补丁是 wasserstein gan (https://arxiv.org/pdf/1701.07875.pdf)。该 gan 用 earth mover distance( wasserstein-1 distance 或 em distance) 来替换传统 gan 的 jensen shannon divergence ( j-s 散度)。em 距离的原始形式很难理解,因此使用了双重形式。这需要判别网络是 1-lipschitz,通过修改判别网络的权重来维护。
使用 earth mover distance 的优势在于即使真实的生成数据分布是不相交的,它也是连续的。同时,在生成的图像质量和损失值之间存在一定关系。使用 earth mover distance 的劣势在于对于每个生成模型 g 都要执行许多判别网络 d 的更新。而且,研究人员认为权重修改是确保 1-lipschitz 限制的极端方式。
左图中 earth mover distance 是连续的, 即便其分布并不连续, 这不同于优图中的 the jensen shannon divergence。
另一个解决方案是使用均方损失( mean squared loss )替代对数损失( log loss )。lsgan (https://arxiv.org/abs/1611.04076)的作者认为传统 gan 损失函数并不会使收集的数据分布接近于真实数据分布。
原来 gan 损失函数中的对数损失并不影响生成数据与决策边界(decision boundary)的距离。另一方面,lsgan 也会对距离决策边界较远的样本进行惩罚,使生成的数据分布与真实数据分布更加靠近,这是通过将均方损失替换为对数损失来完成的。
2. two timescale update rule(ttur)
在 ttur 方法中,研究人员对判别网络 d 和生成网络 g 使用不同的学习速度。低速更新规则用于生成网络 g ,判别网络 d使用 高速更新规则。使用 ttur 方法,研究人员可以让生成网络 g 和判别网络 d 以 1:1 的速度更新。 sagan (https://arxiv.org/abs/1805.08318) 就使用了 ttur 方法。
3. gradientpenalty (梯度惩罚)
论文improved training of wgans(https://arxiv.org/abs/1704.00028)中,作者称权重修改会导致优化问题。权重修改会迫使神经网络学习学习更简单的相似(simpler approximations)达到最优数据分布,导致结果质量不高。同时如果 wgan 超参数设置不合理,权重修改可能会出现梯度消失或梯度爆炸的问题,论文作者在损失函数中加入了一个简单的梯度惩罚机制以缓解该问题。
加入 gradientpenalty 作为正则化器
dragan (https://arxiv.org/abs/1705.07215)的作者称,当 gan 的博弈达到一个局部平衡态(local equilibrium state),就会出现 mode collapse 的问题。而且判别网络 d 在这种状态下产生的梯度是非常陡(sharp)的。一般来说,使用梯度惩罚机制可以帮助避免这种状态的产生,极大增强 gan 的稳定性,尽可能减少 mode collapse 问题的产生。
4. spectral normalization(谱归一化)
spectral normalization 是用在判别网络 d 来增强训练过程的权重正态化技术 (weight normalization technique),可以确保判别网络 d 是 k-lipschitz 连续的。sagan(https://arxiv.org/abs/1805.08318)这样的实现也在判别网络 d 上使用了谱正则化。而且该方法在计算上要比梯度惩罚方法更加高效。
5. unrolling andpacking (展开和打包)
文章 mode collapse in gans(http://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 解决任务中的一些简单问题。比如,fashiongan(https://www.cs.toronto.edu/~urtasun/publications/zhu_etal_iccv17.pdf)就使用 2 个 gan 来执行图像定位翻译。
fashiongan 使用两个 gans 进行图像定位翻译。
因此,可以让 gan 慢慢地解决更难的问题。比如 progressive gans (progans,https://arxiv.org/abs/1710.10196) 就可以生成分辨率极高的高质量图像。
7. relativistic gans(相对生成对抗网络)
传统的 gan 会测量生成数据为真的可能性。relativistic gans 则会测量生成数据“逼真”的可能性。研究人员可以使用相对距离测量方法(appropriate distance measure)来测量相对真实性(relative realism),相关论文链接:https://arxiv.org/abs/1807.00734。
图 a 表示 js 散度的最优解,图 b 表示使用标准 gan 损失时判别网络 d 的输出,图 c 表示输出曲线的实际图。
在论文中,作者提到判别网络 d 达到最优状态时,d 的输出应该聚集到 0.5。但传统的 gan 训练算法会让判别网络 d 对图像输出“真实”(real,1)的可能性,这会限制判别网络 d 达到最优性能。不过这种方法可以很好地解决这个问题,并得到不错的结果。
经过 5000 次迭代后,标准 gan (左)和相对 gan (右)的输出。
8. self attention mechanism(自注意力机制)
self attention gans(https://arxiv.org/abs/1805.08318)作者称用于生成图像的卷积会关注本地传播的信息。也就是说,由于限制性接收域这会错过广泛传播关系。
将 attention map (在黄色框中计算)添加到标准卷积操作中。
self-attention generative adversarial network 允许图像生成任务中使用注意力驱动的、长距依赖的模型。自注意力机制是对正常卷积操作的补充,全局信息(长距依赖)会用于生成更高质量的图像,而用来忽略注意力机制的神经网络会考虑注意力机制和正常的卷积。(相关论文链接:https://arxiv.org/pdf/1805.08318.pdf)。
使用红点标记的可视化 attention map。
9. 其他技术
其他可以用来改善 gan 训练过程的技术包括:
特征匹配
mini batch discrimination(小批量判别)
历史平均值
one-sided label smoothing(单侧标签平滑)
virtual batch normalization(虚拟批量正态化)
国内研发出多色温防雾霾LED路灯 将改善节能和安全问题
英特尔收购网络芯片初创公司 加强网络芯片技术创新
EEPROM 和 flash 这样讲,早就懂了!
橱柜空间小装不了热水器?卡萨帝管装管改3小时完成!
STM32的中断机制 stm32中断方式有几种
GAN应用缺陷的解决方法分享
智能卡的芯片是怎样进行封装的?
物联网解决方案正在改变生活
隔音箱的测试测量
有线网络电视的的双向互动技术体制的应用探讨
嵌入式编程中的高低位交换如何实现?
发布华为计算视觉研究计划,进一步开展AI的研究、开发和部署
2019年5G手机的销售量将达不到市场的1%未来几年还是4G的天下
液位开关如何接线
32处渗漏快速治理!焦化厂冷凝液循环槽、初冷器水封槽渗漏治理案例详解
全球存储产业的观察重点和趋势
Win10磁盘占用率100%怎么办
功率射频半导体产业创新基地,加快构建昆山自主创新、安全可控
LoRa有无源晶振测试对比以及最大频偏偏差透传测试
无线基站防雷接地技术要求解读