【计算机视觉中的 GAN 】如何稳定GAN训练(3)

一、说明

    在上一篇文章中,我们达到了理解未配对图像到图像翻译的地步。尽管如此,在实现自己的超酷深度GAN模型之前,您必须了解一些非常重要的概念。如本文所提的GAN模型新成员的引入:Wasserstein distance,boundary equilibrium 和 progressively growing GAN三个方面。

上篇文章地址: 【计算机视觉中的 GAN 】 - 条件图像合成和 3D 对象生成(2)

二、关于:瓦瑟斯坦距离、边界平衡,逐渐增长的GAN值

        GAN主导着深度学习任务,如图像生成和图像翻译。

        在上一篇文章中,我们达到了理解未配对图像到图像翻译的地步。尽管如此,在实现自己的超酷深度GAN模型之前,您必须了解一些非常重要的概念。

        在这一部分中,我们将看看一些基础工作。我们将看到最常见的GAN距离函数及其工作原因。然后,我们将 GAN 的训练视为试图找到双人博弈的平衡。最后,我们将看到一项革命性的增量训练工作,它首次实现了逼真的百万像素图像分辨率

        我们将探索的研究主要解决模式崩溃和训练不稳定性。从未训练过GAN的人很容易争辩说我们总是提到这两个轴。在现实生活中,为新问题训练大规模 GAN 可能是一场噩梦

        如果您开始阅读和实施最新的方法,则几乎不可能在新问题中成功训练新的 GAN。实际上,这就像中了彩票一样。

当你离开最常见的数据集(CIFAR、MNIST、CELEBA)时,你就陷入了混乱。

通常情况下,您尝试直观地将学习曲线理解为调试,以便猜测可能更好地工作的超参数。但是GAN训练非常不稳定,以至于这个过程往往是浪费时间。这部可爱的工作是最早为 GAN 培训计划提供广泛理论依据的工作之一。有趣的是,他们发现了分布之间所有现有距离之间的模式。

2.1 核心理念

        核心思想是有效地测量模型分布与实际分布的接近程度。因为选择测量距离的方式直接影响模型的收敛性。正如我们现在所知,GAN 可以表示低维流形(噪声 z)的分布。

直观地说,这个距离越弱,就越容易定义从参数空间(θ-space)到概率空间的映射,因为事实证明,分布更容易收敛。

        我们有理由要求这种连续映射。主要是因为可以定义一个连续函数来满足这种连续映射,该映射给出所需的概率空间或生成的样本。

        出于这个原因,这项工作引入了一个新的距离,称为Wasserstein-GAN。它是推土机(EM)距离的近似值,理论上表明它可以逐步优化GAN的训练。令人惊讶的是,在训练期间不需要平衡D和G,也不需要网络架构的特定设计。通过这种方式,减少了 GAN 中固有存在的模式崩溃。

2.2 了解瓦瑟斯坦距离

        在我们深入研究拟议的损失之前,让我们看一些数学。正如 wiki 中完美描述的那样,偏集合的子集的上确界 sup) 是大于或等于 的所有元素的最小元素。因此,上确界也被称为最小上限。我个人将其称为可以在 T 中找到的所有可能组合的子集的最大值。

        现在,让我们在GAN术语中引入这个概念。T 是我们可以从 G 和 D 得到的所有可能的对函数近似 f。S 将是那些函数的子集,我们将约束这些函数以使训练更好(某种正则化)。排序自然来自计算的损失函数。基于上述,我们最终可以看到测量两个分布 Pr 和 Pθ 之间距离的 Wasserstein 损失函数。

取自 theaisummer.com https://theaisummer.com/gan-computer-vision-incremental-training/

        严格的数学约束称为 K-Lipschitz 函数,用于获取子集 S。但是,如果数学得到广泛证明,则不需要了解更多。但是,我们如何引入这种约束呢?

解决这个问题的一种方法是大致近似这个约束,方法是训练一个神经网络,其权重位于一个紧凑的空间中。 为了实现这一目标,最简单的方法是将砝码夹紧到固定范围内。

        就是这样,重量剪辑可以按照我们想要的方式工作!因此,在每次梯度更新后,我们将w范围裁剪为[−0.01,0.01]。这样,我们就可以显著地强制执行 Lipschitz 约束。简单,但我可以向你保证它有效!

        事实上,有了这个距离损失函数,当然,它是连续的和可微的,我们现在可以用提出的准则训练D直到最优,而其他距离则饱和。饱和意味着鉴别器的损耗为零,生成的样本仅在某些情况下有意义。所以现在,饱和(自然导致模式崩溃)得到了缓解,我们可以在所有训练范围内使用更线性风格的梯度进行训练。让我们看一个例子来澄清这一点:

图片来自WGAN论文[https://arxiv.org/abs/1701.07875]
WGAN标准在空间的所有部分提供干净的梯度

        为了在实践中查看所有以前的数学,我们在 Pytorch 中提供了 WGAN 编码方案。您可以直接修改项目以包含此损失标准。通常,最好在实际代码中看到它。值得一提的是,要保存子集并取上限,这意味着我们必须取很多对。这就是为什么你会看到我们每隔几次训练生成器,以便鉴别器获得更新。这样,我们就有了定义上确界的集合。请注意,为了接近上确界,我们还可以在升级 D 之前为 G 做很多步骤。

        在后来的工作中,证明即使这个想法是可靠的,重量裁剪也是强制执行所需约束的糟糕方法。强制函数成为K-Lipschitz的另一种方法是梯度惩罚

关键思想是相同的:将重量保持在紧凑的空间内。然而,他们通过约束批评家输出相对于其输入的梯度范数来做到这一点。

        我们不会介绍本文,但为了用户的一致性和易于实验,我们提供了代码作为原版 wgan 的改进替代方案。

2.3 结果和讨论

        按照我们的简要描述,我们现在可以跳入一些结果。很高兴看到GAN在训练过程中如何学习,如下图所示:

图片来自WGAN论文[https://arxiv.org/abs/1701.07875]

DCGAN发电机的瓦瑟斯坦损耗准则。如您所见,损失迅速稳定地减少,而样品质量提高。这项工作被认为是GAN理论方面的基础,可以总结为:

        TL;RL

  • Wasserstein 准则允许我们训练 D 直到最优。当标准达到最佳值时,它只是为生成器提供损失,我们可以像任何其他神经网络一样训练该生成器。
  • 我们不再需要正确平衡 G 和 D 容量。
  • Wasserstein损失导致训练G的梯度质量更高。
  • 据观察,WGAN在生成器和超参数调优的架构选择方面比普通GAN更健壮

        的确,我们确实提高了优化过程的稳定性。但是,没有什么是零成本的。WGAN训练在基于动量的优化器(如Adam)以及高学习率下变得不稳定。这是合理的,因为标准损失是高度非平稳的,因此基于动量的优化器似乎表现得更差。这就是他们使用RMSProp的原因,众所周知,RMSProp在非平稳问题上表现良好。

        最后,理解本文的一种直观方法是对层内激活函数的历史进行梯度类比。具体来说,sigmoid 和 tanh 激活的梯度消失了,取而代之的是 ReLU,因为整个值范围内的梯度有所改善。

三、开始(边界均衡生成对抗网络2017)

        我们经常看到判别器在训练开始时进步太快。尽管如此,平衡鉴别器和生成器的收敛性仍然是一个现有的挑战。

        这是第一部能够控制图像多样性和视觉质量之间权衡的工作。用简单的模型架构和标准的训练方案获取高分辨率图像。

        为了实现这一点,作者引入了一个技巧来平衡生成器和鉴别器的训练。BEGIND的核心思想是这种新实施的均衡,它与描述的Wasserstein距离相结合。为此,他们训练了一个基于自动编码器的鉴别器。有趣的是,由于D现在是一个自动编码器,它产生图像作为输出,而不是标量。在我们继续之前,让我们记住这一点!

        正如我们所看到的,匹配误差的分布而不是直接匹配样本的分布更有效。关键的一点是,这项工作旨在优化自动编码器损失分布之间的Wasserstein距离,而不是样本分布之间的Wasserstein距离。BEGIND的一个优点是它没有明确要求判别器受到K-Lipschitz约束。自动编码器通常使用 L1 或 L2 范数进行训练。

3.1 两人博弈均衡的表述

        为了用博弈论来表达这个问题,增加了一个平衡判别器和生成器的均衡项。假设我们可以理想地生成无法区分的样本。然后,它们的误差分布应该是相同的,包括它们的预期误差,这是我们在处理每批后测量的误差。完全平衡的训练将导致 L(x) 和 L(G(z) 的预期值相等。然而,事实并非如此!因此,BEGIN决定量化余额比率,定义为:

图片由作者提供,最初用Latex编写

        此数量在网络中建模为超参数。因此,新的训练方案涉及两个相互竞争的目标:a)自动编码真实图像和b)区分

        从生成的图像中真实。γ术语让我们平衡这两个目标。较低的γ值会导致较低的图像多样性,因为鉴别器更侧重于自动编码真实图像。但是,当预期损失发生变化时,如何控制此超参数呢?

3.2 边界平衡GAN(开始)

        答案很简单:我们只需要引入另一个落在 [0, 1] 范围内的变量 kt。此变量将设计用于控制训练期间放在 L(G(z)) 上的焦点。

图片由作者提供,最初用Latex编写

 

        它初始化为 k0 = 0,λ_k在本研究中也被定义为 k 的比例增益(使用 0.001)。这可以看作是闭环反馈控制的一种形式,其中kt在每一步都进行调整,以保持所选超参数γ所需的平衡。

        请注意,在早期训练阶段,G 倾向于为 D 生成易于重建的数据。同时,尚未准确学习真实的数据分布。基本上,L(x)>L(G(z))。与许多 GAN 相反,BEGIN 不需要预训练,可以使用 Adam 进行优化。最后,利用均衡概念推导出收敛的全局度量。

        从本质上讲,可以将收敛过程表述为找到 a) 最接近的重建 L(x) 和 b) 控制算法的最低绝对值 ||γ L(x)−L(G(z)) ||.加上这两个术语,我们可以识别网络何时收敛。

3.3 模型体系结构

        模型架构非常简单。一个主要区别是引入了指数线性单位而不是 ReLU。他们使用带有深度编码器和解码器的自动编码器。超参数化旨在避免典型的GAN训练技巧。

图片来自 BEGIN [https://arxiv.org/abs/1703.10717] 论文。模型体系结构
模型体系结构

使用 U 形架构,无需跳跃连接。下采样实现为子采样卷积,内核为 3,步幅为 2。另一方面,上采样是通过最近邻插值完成的。在编码器和解码器之间,处理数据的张量通过全连接层映射,之后没有任何非线性。

3.4 结果和讨论

在下面的 128x128 插值图像中可以看到一些呈现的视觉结果:

图片来源:BEGAN[https://arxiv.org/abs/1703.10717] .由 BEGIN 生成的插值 128x128 图像

图片来源:BEGAN[https://arxiv.org/abs/1703.10717] .由 BEGIN 生成的插值 128x128 图像

值得注意的是,观察到多样性随着γ而增加,但伪像(噪点)也是如此。可以看出,插值显示出良好的连续性。在第一行,头发过渡和发型被改变。还值得注意的是,左图中的某些特征消失了(香烟)。第二行和最后一行显示简单的旋转。虽然旋转很平稳,但我们可以看到个人资料图片并没有完美捕获。

最后,使用BEGIND平衡方法,网络收敛到多样化且视觉上令人愉悦的图像。在 128x128 分辨率下,只需稍作修改,情况仍然如此。训练稳定、快速,并且对微小的参数变化具有鲁棒性。

但是让我们看看在真正的高分辨率下会发生什么!

四、渐进式 GAN(GANs 的渐进增长以提高质量、稳定性和变化 2017)

        到目前为止,我们描述的方法会产生清晰的图像。但是,它们仅以相对较小的分辨率和有限的变化生成图像。分辨率保持较低的原因之一是训练不稳定。如果您已经部署了自己的GAN模型,您可能知道,由于计算空间的复杂性,大分辨率需要较小的小批量。这样,时间复杂度的问题也随之上升,这意味着你需要几天的时间来训练一个GAN。

4.1 增量增长架构

        为了解决这些问题,作者逐渐增加了生成器和鉴别器,从低分辨率图像到高分辨率图像。

直觉是,随着训练的进行,新添加的层旨在捕获与高分辨率图像相对应的更高频率的细节

但是,是什么让这种方法如此出色呢?

答案很简单:模型不必同时学习所有尺度,而是首先发现大规模(全局)结构,然后发现局部细粒度细节。增量训练性质旨在朝这个方向发展。需要注意的是,在整个训练过程中,所有层都是可训练的,并且网络架构是对称的(镜像)。所述体系结构的图示如下所示:

图片来自 GAN 论文的渐进增长 [https://arxiv.org/abs/1710.10196]

图片来自 GAN 论文的渐进增长 [https://arxiv.org/abs/1710.10196]

然而,由于不健康的竞争,模式崩溃仍然存在,这增加了GD中误差信号的大小。

4.2 在过渡之间引入平滑层

这项工作的关键创新是新增加的层数平稳过渡以稳定训练。但是每次过渡后会发生什么?

图片来自 GAN 论文的渐进增长,链接:https://arxiv.org/abs/1710.10196
图片来自 GAN 论文的渐进式增长

图片来自 GAN 论文的渐进式增长,链接:https://arxiv.org/abs/1710.10196

        真正发生的事情是图像分辨率翻了一番。因此,在 G 和 D 上添加了一个新层。这就是魔术发生的地方。在过渡期间,以更高分辨率运行的层被用作残差跳跃连接块,其权重 (α) 从 0 线性增加到 1。一个表示跳过连接被丢弃。

        所描绘的 toRGB 块表示将一维特征向量投影并重塑为 RGB 颜色的层。它可以被视为始终使图像具有正确形状的连接层。同时,fromRGB 执行相反的操作,而两者都使用 1 × 1 卷积。真实图像相应地缩小以匹配当前尺寸。

有趣的是,在过渡期间,作者在真实图像的两种分辨率之间进行插值,类似于类似GAN的学习。此外,对于渐进式 GAN,大多数迭代都是以较低的分辨率执行的,导致 2 到 6 个列车加速。因此,这是第一部达到百万像素分辨率的作品,即 1024x1024

与遇到协方差偏移的下游任务不同,GAN 表现出不断增加的误差信号幅度和竞争问题。为了解决这些问题,他们使用正态分布初始化和每层权重归一化,通过每批动态计算的标量。这被认为可以使模型学习尺度不变性。为了进一步约束信号幅度,它们还将像素特征向量归一化为生成器中的单位长度。这可以防止特征图的升级,同时不会显着恶化结果。随附的视频可能有助于理解设计选择。官方代码在TensorFlow中发布在这里。

4.3 DR:结果和讨论

        结果可以总结如下:

        1)网络容量的逐渐增加解释了融合性的改善。直观地说,现有层学习较低的比例,因此在过渡之后,引入的层的任务只是通过越来越小的比例效果来细化表示。

        2)渐进式增长的加速随着输出分辨率的提高而增加。这首次能够生成 1024x1024 的清晰图像。

        3)尽管实现这样的架构确实很困难,并且缺少许多培训细节(即何时进行过渡以及为什么过渡),但它仍然是我个人喜欢的令人难以置信的工作。

图片来自 GAN 的渐进增长,百万像素分辨率,链接:https://arxiv.org/abs/1710.10196

图片来自 GANs的渐进增长,百万像素分辨率,链接:https://arxiv.org/abs/1710.10196

4.4 结论

在这篇文章中,我们遇到了一些即使在今天也使用的最高级培训概念。我们专注于涵盖这些重要培训方面的原因是能够进一步介绍更高级的应用程序。如果你想从更多的博弈论角度看待GANs,我们强烈建议你观看Daskalakis的演讲。最后,对于我们的数学爱好者,这里有一篇精彩的文章,更详细地介绍了向 WGAN 的过渡。

总而言之,我们已经找到了几种通过增量训练来处理模式崩溃、大规模数据集和百万像素分辨率的方法。对于整个文章系列,请随时访问AI之夏。

五、引用

[1] Arjovsky, M., Chintala, S., & Bottou, L. (2017).瓦瑟斯坦甘。arXiv预印本arXiv:1701.07875

[2] Berthelot, D., Schumm, T., & Metz, L. (2017).开始:边界均衡生成对抗网络。arXiv预印本arXiv:1703.10717

[3] Karras, T., Aila, T., Laine, S., & Lehtinen, J. (2017).逐步生长甘氏,以提高质量、稳定性和变化。arXiv预印本arXiv:1710.10196

[4] Daskalakis, C., Ilyas, A., Syrgkanis, V., & Zeng, H. (2017).训练人乐观。arXiv预印本arXiv:1711.00141

[5] Gulrajani, I., Ahmed, F., Arjovsky, M., Dumoulin, V., & Courville, A. C. (2017).改进了瓦瑟斯坦甘斯的训练。神经信息处理系统进展(第5767-5777页)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/73355.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四、JVM-对象内存模型

Java对象内存模型 一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充 数据 内存 – CPU 寄存器 -127 补码 10000001 - 11111111 32位的处理器 一次能够去处理32个二进制位 4字节的数据 64位操作系统 8字节 2的64次方的寻址空间 指针压缩技术 JDK1.6出…

尝试多数据表 sqlite

C 唯一值得骄傲的地方就是 通过指针来回寻址 😂 提高使用的灵活性 小脚本buff 加成

【计算机视觉 | 目标检测 | 图像分割】arxiv 计算机视觉关于目标检测和图像分割的学术速递(7 月 17 日论文合集)

文章目录 一、检测相关(5篇)1.1 TALL: Thumbnail Layout for Deepfake Video Detection1.2 Cloud Detection in Multispectral Satellite Images Using Support Vector Machines With Quantum Kernels1.3 Multimodal Motion Conditioned Diffusion Model for Skeleton-based Vi…

从录取成绩的角度来看,浙大MPA面试的客观公正性是有一定依据的

时间即将来到八月份!不知道目前考生们今年的备考情况怎么样了,度过比较煎熬的三伏天,距离考研冲刺的时间越来越近! 提前批面试申请对于不同的项目以及不同的考生意义都不一样。比如真正的学霸人物对于提面的申请与不申请一般差别不…

关于K8s的Pod的详解(一)

关于K8s的Pod的详解(一) Pod和API server的通信加快Pod启动更改Pod的资源Pod 的持久卷的单个访问模式Pod 拓扑分布约束Pod 拓扑分布中的最小域数 Pod 作为k8s创建,调度,管理的基本单位。由上级的Controller对Node上安装的Kubelet发…

Pytorch深度学习之余弦退火学习率设置

1. 什么是余弦退火学习率? 余弦退火学习速率调度是改进深度神经网络学习过程的常用方法。当深度神经网络在大型数据集上训练时,它尤其有用,因为在大型数据集中,学习过程可能会陷入局部极小值。在训练过程中,学习率以不…

MongoDB文档--架构体系

阿丹: 在开始学习先了解以及目标知识的架构体系。就能事半功倍。 架构体系 MongoDB的架构体系由以下几部分组成: 存储结构:MongoDB采用文档型存储结构,一个数据库包含多个集合,一个集合包含多个文档。存储形式&#…

C语言假期作业 DAY 01

题目 1.选择题 1、执行下面程序,正确的输出是( ) int x5,y7; void swap() { int z; zx; xy; yz; } int main() { int x3,y8; swap(); printf("%d,%d\n",x, y)…

ZooKeeper原理剖析

1.ZooKeeper简介 ZooKeeper是一个分布式、高可用性的协调服务。在大数据产品中主要提供两个功能: 帮助系统避免单点故障,建立可靠的应用程序。提供分布式协作服务和维护配置信息。 2.ZooKeeper结构 ZooKeeper集群中的节点分为三种角色:Le…

自动驾驶感知系统-全球卫星定位系统

卫星定位系统 车辆定位是让无人驾驶汽车获取自身确切位置的技术,在自动驾驶技术中定位担负着相当重要的职责。车辆自身定位信息获取的方式多样,涉及多种传感器类型与相关技术。自动驾驶汽车能够持续安全可靠运行的一个关键前提是车辆的定位系统必须实时…

【雕爷学编程】MicroPython动手做(33)——物联网之天气预报3

天气(自然现象) 是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象,即某瞬时内大气中各种气象要素(如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等&#xff…

STM32基础入门学习笔记:核心板 电路原理与驱动编程

文章目录: 一:LED灯操作 1.LED灯的点亮和熄灭 延迟闪烁 main.c led.c led.h BitAction枚举 2.LED呼吸灯(灯的强弱交替变化) main.c delay.c 3.按键控制LED灯 key.h key.c main.c 二:FLASH读写程序(有…

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境4

7、使用串口工具 (1)连接硬件 连接 Type C 线, 一端电脑一端开发板 查看设备是否已经正确识别: 在 Windows 下可以打开设备管理器来查看 如果没有发现设备, 需要确认有没有装驱动以及接触是否良好 (2&a…

华为数通HCIA-ARP(地址解析协议)详细解析

地址解析协议 (ARP) ARP (Address Resolution Protocol)地址解析协议: 根据已知的IP地址解析获得其对应的MAC地址。 ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取数据链路层地址的一个…

Android安卓实战项目(5)---完整的健身APP基于安卓(源码在文末)可用于比赛项目或者作业参考中

Android安卓实战项目(5)—完整的健身APP(源码在文末🐕🐕🐕)可用于比赛项目 一.项目运行介绍 1.大致浏览 【bilibili视频】 https://www.bilibili.com/video/BV1uX4y177iR/? (1&…

【css】nth-child选择器实现表格的斑马纹效果

nth-child() 选择器可以实现为所有偶数&#xff08;或奇数&#xff09;的表格行添加css样式&#xff0c;even&#xff1a;偶数&#xff0c;odd&#xff1a;奇数。 代码&#xff1a; <style> table {border-collapse: collapse;width: 100%; }th, td {text-align: cente…

手机python编程软件怎么用,手机python编程软件下载

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;手机python编程软件保存的代码在哪里&#xff0c;手机python编程软件怎么运行&#xff0c;现在让我们一起来看看吧&#xff01; 原标题&#xff1a;盘点几个在手机上可以用来学习编程的软件 前天在悟空问答的时候&#…

SpringCloud深入理解 | 生产者、消费者

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; SpringCloud Spring Cloud是一组用于构建分布式系统和微服务架构的开源框架和工具集合。它是在Spring生态系统的基础上构建的&#xff0c;旨在简化开发人员构建分布式…

牛客网Verilog刷题——VL55

牛客网Verilog刷题——VL55 题目答案 题目 请用Verilog实现4位约翰逊计数器&#xff08;扭环形计数器&#xff09;&#xff0c;计数器的循环状态如下&#xff1a;   电路的接口如下图所示&#xff1a; 输入输出描述&#xff1a; 信号类型输入/输出位宽描述clkwireInput1系统…

【计算机网络】NAT及Bridge介绍

OSI七层模型 七层模型介绍及举例 为通过网络将人类可读信息通过网络从一台设备传输到另一台设备&#xff0c;必须在发送设备沿 OSI 模型的七层结构向下传输数据&#xff0c;然后在接收端沿七层结构向上传输数据。 数据在 OSI 模型中如何流动 库珀先生想给帕尔梅女士发一封电…