关于时空数据的培训 GAN:实用指南(第 01/3 部分)

2023-09-14 07:12:27

第 1 部分:深入了解 GAN 训练中最臭名昭著的不稳定性。

一、说明

        GAN 是迄今为止最受欢迎的深度生成模型,主要是因为它们最近在图像生成任务上产生了令人难以置信的结果。然而,GAN并不容易训练,因为它们的基本设计引入了无数的不稳定性。如果你尝试过用MNIST以外的任何东西训练GAN,你很快就会意识到,所有关于训练他们的痛苦(以及试图解决这个问题的相关研究领域)的说法并没有把问题放大。

二、GAN的不稳定性

        我们将系统地解决这些臭名昭著的不稳定性的原因和解决方案,我们在广泛尝试了书中的几乎所有技巧后,在我们的实验中发现这些不稳定性在经验上运作良好。这个由三部分组成的系列文章是关于训练 GAN 的实用指南,重点是时空数据生成,结构如下:

1. 第 1 部分:深入了解 GAN 训练中最臭名昭著的不稳定性

2. 第 2 部分:第 1 部分中讨论的常见陷阱的可能解决方案

3. 第 3 部分:在时空数据上训练 GAN 的特殊情况——要跟踪的指标、独特的复杂性及其解决方案

        本系列中讨论的不稳定性和解决方案与模型和用例无关,也与时空情况相关。它们是任何GAN训练练习的良好起点。在本文中,我们将通过详细介绍 GAN 训练中最臭名昭著的不稳定性来讨论为什么训练 GAN 如此难以捉摸。我们将研究 a) 鉴别器 (D) 和生成器 (G) 训练之间的不平衡如何导致模式崩溃和由于梯度消失而导致的静音学习;b) GAN 对超参数的敏感性,以及 c) 在模型性能方面误导性 GAN 损失。

        [注意:我们假设本文的读者具备 GAN 基础知识的先决条件,并且在某些时候也有一些训练 GAN 的经验。为此,我们将跳过“什么是 GAN?”请读者阅读本文以快速回顾一下。]

三、为什么训练 GAN 如此难以捉摸?

        在本节中,我们详细介绍了GAN训练中一些最臭名昭著的不稳定性,并详细介绍了在我们的实验中在实践中运作良好的每个可能的解决方案。话虽如此,建议在原版设置下运行前几次迭代,以探测在手头的架构和任务中观察到以下哪些陷阱。随后,您可以迭代地实现上述解决方案(根据解决方案的复杂性及其根据我们的经验的有效性进行排序)以进一步稳定训练。请注意,这些提示仅用作方向起点,而不是一次性解决方案的详尽列表。建议读者进一步探索其架构和训练动态,以获得最佳结果。

3.1. 生成器和鉴别器之间的不平衡

        判断一幅画是否是梵高很容易,但要真正制作一幅画却非常困难。因此,人们认为G的任务比D的任务更困难。同时,G 学习生成现实输出的能力取决于 D 的训练程度。最优 D 将给 G 丰富的信号,以学习并改进其生成。因此,重要的是要平衡G和D的训练以获得最佳学习条件。

        GAN基于零和非合作博弈,试图实现纳什均衡。然而,众所周知,某些成本函数不能收敛于梯度下降,特别是对于非凸博弈。这在GAN训练中引入了许多不稳定性,因为G和D训练步骤在最小-最大游戏中不平衡,导致学习梯度欠佳。这些不稳定性将在下面讨论:

        1. 渐变消失:

        对于最佳GAN训练,D是否应该优于G,反之亦然,需要通过查看以下参数来回答-

a) 如果 D 变得太好太快,G 的梯度就会消失,它永远无法赶上。

b) 另一方面,如果 D 是次优的,那么由于 D 的预测性能很差,G 很容易用胡言乱语来愚弄它。这再次导致没有梯度可供学习,导致G输出没有改善。

        因此,在理想情况下,G和D应该以周期性的方式比另一个更好。如果您看到其中一个损失单调地向任何方向移动,那么您的 GAN 训练很可能已经崩溃。

        2. 模式崩溃:如果 G 被不成比例地训练得更多,它会收敛到重复产生相同的输出,从而很好地愚弄 D,而没有任何动力专注于样本的多样性。

3.2  渐变消失原因

        原始GAN目标的生成器(Ian Goodfellow,2014)优化了非饱和JS发散,如下所示:

        在这种情况下,很容易看出,如果生成器错过了某些分布模式(即,当 p(x) > 0 但 q(x) → 0 时,惩罚很高),以及如果生成的数据看起来不真实(即,如果 p(x) → 0 但 q(x) > 0,则惩罚很高)。这促使发生器产生更高质量的输出,同时保持多样性。

        然而,当鉴别器达到最优时,该公式会导致生成器的梯度消失。从下面的例子中可以明显看出这一点,其中 p 和 q 是高斯分布的,p 的平均值为零。右图显示 JS-背离的梯度从 q1 到 q3 消失。这将导致GAN生成器在这些区域的损失饱和时学习非常缓慢(甚至根本不学习)。这种情况在GAN训练的早期就表现出来了,当时pq非常不同,并且D的任务更容易,因为G的近似与实际分布相去甚远。

3.3  模式折叠常识

        模式崩溃是迄今为止训练 GAN 时最困难、最不平凡的问题。虽然对模式崩溃有很多直观的解释,但在实践中我们对它的理解仍然非常有限。到目前为止,一个关键的直观解释已经帮助了从业者,那就是在D上没有足够的更新的情况下,G被训练得不成比例。生成器最终收敛到找到最愚弄D的最佳图像x*,即从鉴别器角度看最真实的图像。在这种情况下,x* 变得独立于 z,这意味着对于每个 z,它都会生成相同的图像。

        最终,D(再次训练时)学会了丢弃该模式的图像作为假图像。这反过来又迫使生成器寻找下一个脆弱点并开始生成该漏洞点。D和G之间的猫捉老鼠追逐仍在继续,G过于专注于“作弊”,以至于它甚至失去了检测其他模式的能力。这在上图中可以看到,其中顶行显示了 G 应该遵循的理想学习过程。底行演示了模式折叠的情况,其中 G 专注于很好地产生一种模式,而忽略其他模式。

3.4 对超参数的敏感性

        GAN对超参数非常敏感,周期。如果没有良好的超参数,任何成本函数都不起作用,因此建议首先广泛调整超参数,而不是在开始时尝试不同的损失函数。调整超参数需要时间和耐心,在开始使用高级损失函数之前,了解架构的基本训练动态非常重要,这些函数将引入自己的超参数集。

四、GAN损失与生成质量的相关性

        在通常的分类任务中,成本函数与模型的准确性相关(较低的损失意味着较低的误差意味着更高的准确性)。然而,GAN的损失衡量了一个参与者在最小-最大博弈(生成器与鉴别器)中与另一个参与者的表现。发生器损耗增加,但图像质量却在改善是很常见的。因此,在训练GAN时,损失“收敛”与生成质量之间的相关性很小,因为不稳定的GAN损失通常具有误导性。图像生成任务中使用的一种非常有效且被广泛接受的技术是通过在不同训练阶段对生成的图像进行目视检查来跟踪训练进度。但这随后使模型比较更加困难,并使调优过程进一步复杂化,因为很难从这种主观评估中选择最佳模型。然而,在我们的实验中,我们很快意识到GAN训练的这个非常关键的方面 - 通过正确的指标跟踪生成进度 - 也是人们谈论训练GAN时最容易被忽视的方面之一。此外,与图像不同,我们无法“直观地”有效地评估时空数据的训练进度。因此,设计和跟踪与时空数据相关的指标变得至关重要,这些指标客观地指示模型性能。

        现在我们已经详细介绍了一些突出的GAN训练陷阱,接下来出现的问题是我们如何检测和解决它们?我们将在本系列的下一篇博客中详细讨论这个主题,在广泛尝试了书中的每个技巧后,我们为每个解决方案提供了多种解决方案。我们按照其易于实施及其各自影响的顺序编制列表,以就GAN培训的迭代增强功能提出建议尚塔努·钱德拉

·
更多推荐

c++ unordered_set

unordered_set可直译为“无序set容器”,即unordered_set容器和set容器很像,唯一的区别就在于set容器会自行对存储的数据进行排序,而unordered_set容器不会。本质是使用hash散列的方式存储数据,是一种使用hash值作为key的容器,所以当有频繁的搜索、插入和移除拥有常数时间。un

动态dp(ddp)

模板题动态修改节点权值求树上最大权点独立集。首先考虑朴素dp:设fu,0/1f_{u,0/1}fu,0/1​表示节点uuu不选/选,uuu子树内最大权独立集的大小。转移就是(vvv是uuu的所有儿子):{fu,0=∑vmax⁡{fv,0,fv,1}fu,1=hu+∑vfv,0\left\{\begin{matrix}f

万里牛与金蝶云星空对接集成查询调拨单连通调拨单新增(万里牛调拨单-金蝶【直接调拨单】)

万里牛与金蝶云星空对接集成查询调拨单连通调拨单新增(万里牛调拨单-金蝶【直接调拨单】)源系统:万里牛万里牛是杭州湖畔网络技术有限公司旗下SaaS软件品牌,主要针对电商、外贸、实体门店等业务群体,帮助企业快速布局新零售,提升订单处理效率,实现数据化业务管理,为企业降本增效。对接目标系统:金蝶云星空金蝶K/3Cloud结合

blog--4美化主题

配置/美化bug把你的网站名/themes/hugo-theme-stack/exampleSite/目录下的config.yaml复制到网站根目录(也就是你的网站名这个目录)删除网站根目录的config.tomlstack主题不需要这个配置文件打开网站根目录下的config.yaml进行填空博主头像放在/themes

Twitter账号优化:吸引更多关注与互动

创建Twitter账号并进行优化优化你的Twitter个人数据有助于提高企业的可视性并促进与用户的互动。通过与其他社交媒体页面的相互协调,你还可以建立一个专业且一致的品牌形象。创建一个标准的Twitter个人数据非常简单,但为了优化它适应您的业务需求,需要一些专业知识。前提是您是刚刚加入Twitter,还是已经在这个平

基于Python+Flask实现一个简易网页验证码登录系统案例

在当今的互联网世界中,为了防止恶意访问,许多网站在登录和注册表单中都采用了验证码技术。验证码可以防止机器人自动提交表单,确保提交行为背后有一个真实的人类用户。本文将向您展示如何使用Python的Flask框架来创建一个简单的验证码登录系统。1.开始之前首先,确保你已经安装了以下所需的库:pipinstallflaskP

2023年浙工商MBA新生奖学金名单公布,如何看待?

    浙工商MBA项目官方最新公布了2023年的非全日制新生奖学金名单,按照政策约定,共分为特等奖学金1名,一等奖学金10名,二等奖学金15名,三等奖学金30名,额度对应3万、1万、0.8万、0.5万不等,主要名单信息如下:2023浙工商MBA奖学金名单2023浙工商MBA奖学

vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)

目录1、需求2.想要的效果就是由图一变成图二​编辑3.组件集成了以下功能4.参数配置示例代码参数说明5,组件6.页面使用1、需求一般后台管理系统,通常页面都有增删改查;而查不外乎就是渲染新增/修改的数据(由输入框变成输入框禁用),因为输入框禁用后颜色透明度会降低,显的颜色偏暗;为解决这个需求于是封装了详情组件2.想要的

【C++】C++11——列表初始化及decltype

统一的列表初始化{}的初始化initializer_list容器autotypeid(变量名).name()decltype统一的列表初始化注意这里的列表初始化和初始化列表是两个性质哦{}的初始化在C++98的时候,我们的大括号只准许到了对数组或者结构体元素进行统一的列表初始化。例如//结构体structPoint{i

搜索技术领域的“奥林匹克”,飞桨支持“第二届百度搜索创新大赛”正式启动!...

秋季,是丰收的季节,以“新搜索·新奇点”为主题、由百度搜索携手英伟达联合发起,飞桨AIStudio星河社区支持的第二届百度搜索创新大赛,开赛啦!超过60万丰厚奖金,十余套赛事优质课程,优质的竞赛交流社区,等你来战!五大赛道:聚焦百度一线核心业务场景+大模型产品创新本次大赛设立五大赛题,题目涉及搜索核心业务场景,如语义检

利用面向对象方法,处理数据文件【Python】

题目背景:处理两份数据文件(文本数据和JSON数据),用面向对象的方法,效果图用柱状图呈现。本题思路:1.首先,创建一个【基础数据类】,名为Record,它将包含成员属性和成员方法。这个类将作为数据处理的基础结构。2.接着,创建一个【处理数据父类】,名为FileReader,它将包含成员方法,这个成员方法将被子类继承和

热文推荐