关于时空数据的培训 GAN:实用指南(第 02/3 部分)
一、说明
在本系列关于训练 GAN 实用指南的第 1 部分中,我们讨论了 a) 鉴别器 (D) 和生成器 (G) 训练之间的不平衡如何导致模式崩溃和由于梯度消失而导致静音学习,以及 b) GAN 对超参数的敏感性。
在本文中,我们将为每种不稳定性提供多种解决方案。这些解决方案在我们的实验中经验上运作良好,在广泛尝试了书中的每一个技巧来稳定GAN训练之后。我们按照其易于实施和各自影响的顺序编制列表,以就GAN培训的迭代增强功能提出建议。 另外,请注意,此处讨论的所有解决方案都是任何形式的GAN培训的通用解决方案,并且也与时空用例直接相关。JUST时空GAN特有的问题和解决方案将在本系列的最后一部分进一步详细讨论。
二、驯服 GAN 的不稳定性
2.1. 生成器和鉴别器之间的不平衡
如上一篇文章所述,训练 G 和 D 之间的不平衡(即,G 或 D 中的任何一个被不成比例地训练为优于另一个)会导致梯度消失,以及当 G 没有动力产生不同的样本来欺骗其竞争对手时模式崩溃。 为了解决这个问题,通常的解决方案围绕着:
·更改成本函数以获得更好的优化目标。
·在成本函数中添加额外的惩罚以强制执行约束(例如多样性)。
· 避免过度自信和过度拟合。
梯度消失和模式崩溃的解决方案将在以下小节中详细讨论。在每个部分中,我们首先列出所有(排名)建议的解决方案以及每个解决方案背后的直觉。随后,我们最后总结了每个部分的要点。
2.2 消失梯度:
为了减轻梯度消失,通常部署的策略是使D的任务更难,并给G一个追赶的机会。这是出于这样的信念:“判断一幅画是否是梵高很容易,但实际制作一幅画却非常困难。因此,基本假设是G的任务比D的任务困难得多。
1. 单侧标签平滑:如果 D 对其预测过于自信,则会导致梯度消失,G 无法从此类观测中学习——将实际样本预测为 ~1(例如,0.999),将生成的样本预测为 ~0(例如,0.0001)给出 ~0 的损失。解决此问题的一种简单但高效的技术是将真实数据的所有“1”基本真实标签转换为 [0.7 到 1.2] 的范围,将生成数据的所有“0”基本真实标签从“0”转换为 [0.0 到 3.<>]。 当 D 对其预测过于自信时,这会惩罚它,并确保即使在正确的预测场景下也能保持梯度流动,使 G 能够从这些实例中学习。请注意,这仅在更新 D 的权重时完成,而不是在 G 更新期间完成(因此称为“单侧”)。
2.单面翻转标签:如果你注意到损失仍然很快下降到0,你可以进一步削弱表现优异的D.从业者通常会翻转真实数据和生成数据的标签(真实数据标签从1随机翻转到0;生成的数据从0到1)。这增加了 D 训练的噪音,并防止它在训练的任何阶段变得太强大。同样,这仅适用于 D 更新。
3. 由于 G 的任务比较困难,G 通常会在再次训练 D 之前训练 x 步(~2-5)(同时保持 D 不变)。这允许生成器在训练早期弥合 p 和 q 分布之间的差距,并从 D 获得有意义的反馈以改进生成。我们建议在尝试列表中的其他建议之前不要在此步骤上花费太多时间,因为 GAN 训练的不同阶段无法通过这种固定相对更新的启发式来控制。相对更新将根据G和D之间不断发展的学习动态而动态变化,并且这些更新不能以启发式方式预定义。但是,G:D 的系数为 2:1理想情况下可以遵循培训步骤。
4. 在 D 中使用批量归一化 (BN) 与下面的提示 #5 共轭。批量归一化是一种监督学习方法,用于归一化神经网络的层间输出。它有助于稳定训练过程(通过减少协变量偏移)并通过防止过度拟合来改善泛化。
5.将生成的样本和实际样本分别馈送到D。这个小技巧可以防止 D 使用快捷方式进行分类,这些分类不会给 G 任何反馈来改进其生成。BN 的目的是通过使所有激活均匀分布(均值为零且 std 等于 1)来减少激活映射中的内部协方差偏移。在这种情况下,NN 没有必要适应由于训练过程中权重变化而发生的激活分布的变化。因此,这种规范化大大简化了学习。在GAN训练的一开始,小批量中的真实和假样本具有非常非常不同的分布,因此如果我们尝试对其进行规范化,我们最终不会得到居中良好的数据。此外,在训练过程中,这种归一化数据的分布将发生显著变化(因为 G 会逐渐提供越来越好的结果),鉴别器将不得不适应这些变化。
6. 使用其他提供更稳定梯度分布的损失函数,如 WGAN、RSGAN 等。然而,Google Brain 的论文实证表明,没有损失函数是明显的赢家(Mario Lucic,2018),GAN损失函数的选择仍然是一个尚未被征服的模糊领域。
7. 在监督任务上对生成器进行某种形式的预训练,使其与潜在空间广泛对齐,并学习捕获任务的一些基本特征(例如图像生成时的边缘和轮廓)。这有助于在对抗训练开始时弥合 p 和 q 之间的差距,从而防止由于 G 输出与真实世界数据之间的巨大脱节而导致 JSD 梯度消失。
2.3 模式折叠:
为了缓解这种情况,部署的常用策略是:
1. 使用标签:尽可能使用带有辅助分类器 GAN 设置的标签(Augustus Odena,2016)。这鼓励G在潜在空间的不同区域与用作条件输入的不同标签之间建立连接。这可以防止G产生相同的输出,而不管其输入如何,从而防止模式崩溃。

2. 特征匹配:通过将 G 的目标从不惜一切代价成功愚弄 D 修改为匹配真实数据的潜在特征,从而促进生成的多样性。这涉及在批处理级别上获取各个特征向量均值之间的 L-2 距离。此小批量设置引入了随机性,这使得在单个模式下更难过度拟合。
3. 小批量判别:为了解决模式崩溃问题,将真实数据和生成的数据分别分批馈送到D,并计算数据点x与同批次数据点的相似性。然后将 中的相似性 o(x) 与鉴别器的倒数最后一层的特征连接起来,以对该数据 x 是真实的还是生成的进行分类。在模式崩溃的情况下,生成的数据的相似性开始增加,D可以使用此信息再次开始对生成的图像进行正确分类,并惩罚G缺乏多样性。计算这一点的确切机制比特征匹配稍微复杂一些,但声称在实践中效果更好(Tim Salimans,2016),总结如下。
在这里,xi是输入图像,xj是同一批次中的其余图像。这些操作如下图所示:
要点:
1. 尝试使用 G 和 D 的“容量”很可能不会产生太大区别(即它们的相对参数大小)。与 G 和 D 的相对模型大小相比,训练动态受正在优化的损失函数和确切的实验设置的影响更大。
2. 尝试针对 G:D 进行优化训练步长比是徒劳的练习。虽然一种直觉敦促你更多地训练G,但另一种直觉表明这可能是有害的。当GAN训练过程高度动态和敏感时,很难设计这种静态启发式方法。许多人尝试过这个,但失败了。
3.尝试单面标签平滑和标签翻转作为第一步。集成非常简单,但非常有效。通过使用这两个简单的技巧,我们看到了巨大的学习收益。
4. 使用批量归一化,并将生成的样本和实际样本分别馈送到 D。
5. 使用替代损失函数,如 WGAN、RSGAN 等,通过更好的梯度来稳定训练(但要有一点盐;这里没有明显的赢家)。
6. 使用辅助分类器GAN框架(当标签可用时),特征匹配和小批量判别来促进多样性并解决模式崩溃问题。
三. 对超参数的敏感性
GAN对超参数非常敏感,周期。尽管优化超参数需要大量的耐心和时间,但事实证明,此练习对于成就或破坏架构性能具有决定性意义。为了帮助完成此过程,一般提示是:
1. 学习率 (LR):学习率是最重要的超参数之一,可以成就或破坏您的训练,在选择一个时需要记住多种启发式方法:
a)两个时间尺度更新规则(TTUR):这本质上意味着对G和D使用不同的学习率,G的LR低于D。这可确保 G 采取小步骤来欺骗 D,这有助于防止模式崩溃。如果 G 在训练期间过早地采取太快和太精确的步骤,那么它更有可能选择一种欺骗 D 的单一模式来赢得对抗游戏。
b) LR 应取决于批量大小:对于较大的批量大小,较高的 LR 是可以的,因为它们在批次之间提供的噪音更新较少,这可能会导致 GAN 训练的巨动。但建议与 LR 总体上保持保守。
2.批量大小:较大的批量大小是首选,因为批次中覆盖了更多模式,这可以防止G从批次中的任何单个主导模式中大量学习并成为模式崩溃的牺牲品。
3.提前停止:GAN训练总是会波动的,一个常见的错误是在G损失开始发散时(特别是在训练初期)过早停止训练。不要使用基于启发式的提前停止,而是跟踪评估指标以查找模式崩溃或消失梯度,并根据观察到的行为重新开始训练。
要点:
- 学习率:用不同的LR训练G和D,G的LR最好低于D。
- 批量大小:首选较大的批量大小,以涵盖小批量中的更多模式。
- 提前停止:不要使用基于启发式的提前停止,而是跟踪评估指标以查找模式崩溃或消失梯度,并根据观察到的行为重新开始训练
这将我们带到该系列的第二个博客的结尾。在这一部分中,我们深入探讨了第 1 部分中讨论的 GAN 不稳定性的潜在解决方案。请注意,建议的解决方案排名列表基于我们的经验和实验,但可能会因您的特定用例而异。
在本系列的下一部分也是最后一部分中,我们将探讨时空数据的特殊情况。我们将首先讨论在训练期间要跟踪的客观评估指标,以检测一些讨论的陷阱。最后,我们将阐明一些在时空数据训练中特别出现的不稳定性以及它们的潜在解决方案。
四、引用
奥古斯都·奥德纳 克里斯托弗·奥拉,乔纳森·施伦斯使用辅助分类器 GAN 的条件图像合成 [期刊].— 2016.
伊恩·古德费罗 让·普盖特-阿巴迪、迈赫迪·米尔扎、徐冰、大卫·沃德-法利、谢吉尔·奥扎尔、亚伦·库尔维尔、约书亚·本吉奥生成对抗网络[期刊].— [s.l.] : 神经信息处理系统进展, 2014.
马里奥·卢西奇·卡罗尔·库拉赫、马尔钦·米哈尔斯基、西尔万·盖利、奥利维尔·布斯凯GAN 生而平等吗?一项大规模的研究[期刊]。— [s.l.] : 神经信息处理系统国际会议, 2018.
蒂姆·萨利曼斯 伊恩·古德费罗, 沃伊切赫·扎伦巴, 张薇琪, 亚历克·拉德福德, 陈曦, 陈曦改进的 GAN 训练技术 [期刊]。— [s.l.] : 神经信息处理系统进展, 2016.
关于作者:Shantanu是ZS卓越中心实验室的AI研究科学家。他在阿姆斯特丹大学获得了计算机科学工程学士学位和人工智能硕士学位(优等生),他的论文是几何深度学习和NLP的交叉点,与伦敦的Facebook AI和伦敦国王学院合作。他的研究领域包括图神经网络(GNN),NLP,多模态AI,深度生成模型和元学习。尚塔努·钱德拉
相关文章:

关于时空数据的培训 GAN:实用指南(第 02/3 部分)
一、说明 在本系列关于训练 GAN 实用指南的第 1 部分中,我们讨论了 a) 鉴别器 (D) 和生成器 (G) 训练之间的不平衡如何导致模式崩溃和由于梯度消失而导致静音学习,以及 b) GAN 对超参…...
UNIAPP利用canvas绘制图片和文字,并跟随鼠标移动
最近有个项目,要触摸组件,产生一条图片跟随移动,并显示相应的文字,在网上找了一些资料,终于完成构想,废话少说,直接上代码(测试通过) <template> <view>…...

【智能电表数据接入物联网平台实践】
智能电表数据接入物联网平台实践 设备接线准备设备调试代码实现Modbus TCP Client 读取电表数据读取寄存器数据转成32bit Float格式然后使用modbusTCP Client 读取数据 使用mqtt协议接入物联网平台最终代码实现 设备接线准备 设备调试 代码实现 Modbus TCP Client 读取电表数…...
Docker--network命令的用法
原文网址:Docker--network命令的用法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker的network网络命令的用法。 官网网址 docker network | Docker Documentation 命令概述 所有命令 命令名称 说明 docker network connect 将容器连接到网络 dock…...

优维低代码实践:图片和搜索
优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…...

[Qt]控件
文章摘于 爱编程的大丙 文章目录 1. 按钮类型控件1.1 按钮基类 QAbstractButton1.1.1 标题和图标1.1.2 按钮的 Check 属性1.1.3 信号1.1.4 槽函数 1.2 QPushButton1.2.1 常用API1.2.2 按钮的使用 1.3 QToolButton1.3.1 常用API1.3.2 按钮的使用 1.4 QRadioButton1.4.1 常用API…...

GEE:快速实现时间序列线性趋势和变化敏感性计算(斜率、截距)以NDVI时间序列为例
作者:CSDN @ _养乐多_ 本博客将向您介绍如何使用Google Earth Engine(GEE)平台来处理Landsat 5、7和8的卫星图像数据,构建时间序列,以NDVI为例,计算NDVI时间序列的斜率和截距,以及如何导出这些结果供进一步分析使用。 文章目录 一、代码详解1.1 核心代码详解1.2 核心代…...

LC1713. 得到子序列的最少操作次数(java - 动态规划)
LC1713. 得到子序列的最少操作次数 题目描述LIS 动态规划 二分法代码演示 题目描述 难度 - 困难 LC1713.得到子序列的最少操作次数 给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。 每一次…...

vr飞机驾驶舱模拟流程3D仿真演示加大航飞安全法码
众所周知,航空航天飞行是一项耗资大、变量参数很多、非常复杂的系统工程,因此可利用虚拟仿真技术经济、安全及可重复性等特点,进行飞行任务或操作的模拟,以代替某些费时、费力、费钱的真实试验或者真实试验无法开展的场合…...

一、八大排序(sort)
文章目录 一、时间复杂度(一)定义:常数操作 二、空间复杂度(一)定义: 三、排序(一)选择排序1.定义2.代码3.特性 (二)冒泡排序1.定义2.代码3.特性 (…...

【AWS】AI 代码生成器—Amazon CodeWhisperer初体验 | 开启开挂编程之旅
使用 AI 编码配套应用程序更快、更安全地构建应用程序 文章目录 1.1 Amazon CodeWhisperper简介1.2 Amazon CodeWhisperer 定价2.1 打开VS Code2.2 安装AWS ToolKit插件 一、前言 1.1 Amazon CodeWhisperper简介 1️⃣更快地完成更多工作 CodeWhisperer 经过数十亿行代码的训…...
【Mysql主从配置方法---单主从】
Mysql主从 主服务器 创建用户 create user “for_rep”“从服务器IP地址” IDENTIFIED by “123456” 授权 grant replication slave on . to “for_rep”“从服务器IP地址” IDENTIFIED by “123456” 查看用户权限 SHOW GRANTS FOR “for_rep”“从服务器IP地址”; 修改M…...

⼀⽂读懂加密资产交易赛道的新锐⼒量Bitdu
交易所,仍然是加密资产赛道的皇冠级赛道。围绕这个领域展开的商业竞争,最能引起⼴⼤⽤⼾的关注。 经历了数轮资产价格涨跌的⽜熊之后,⼀批批创业者也在不断地思考这⼀议题 — 如何在去中⼼化的世界中,最⾼效率地集结流量、资本和…...

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

虚拟DOM与diff算法
虚拟DOM与diff算法 snabbdom虚拟DOMdiff算法 snabbdom 是什么:snabbdom是著名的虚拟DOM库,是diff算法的鼻祖,Vue源码借鉴了snabbdom 虚拟DOM 是什么:本质上是存在内存里的 JavaScript 对象 作用:用来描述真实DOM的层…...

K8S:pod资源限制及探针
文章目录 一.pod资源限制1.pod资源限制方式2.pod资源限制指定时指定的参数(1)request 资源(2) limit 资源(3)两种资源匹配方式 3.资源限制的示例(1)官网示例(2࿰…...

CSS中的定位
position 的属性与含义 CSS 中的 position 属性用于控制元素在页面中的定位方式,有四个主要的取值,每个取值都会影响元素的布局方式,它们是: static(默认值): 这是所有元素的初始定位方式。在静…...

二、链表(linked-list)
文章目录 一、定义二、经典例题(一)[21.合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/description/)1.思路2.复杂度分析3.注意4.代码 (二)[86.分割链表](https://leetcode.cn/problems/partition-list…...

Android EditText筛选+选择功能开发
在日常开发中经常会遇到这种需求,EditText既需要可以筛选,又可以点击选择。这里筛选功能用的是AutoCompleteTextView,选择功能使用的是第三方库https://github.com/kongzue/DialogX。 Android AutoCompleteTextView(自动完成文本框)的基本使用…...
Linux 信号 alarm函数 setitimer函数
/*#include <unistd.h>unsigned int alarm(unsigned int seconds);功能:设置定时器。函数调用,开始倒计时,0的时候给当前的进程发送SIGALARM信号参数:倒计时的时长。。单位:秒 如果参数为0,无效返回…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

macOS 终端智能代理检测
🧠 终端智能代理检测:自动判断是否需要设置代理访问 GitHub 在开发中,使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新,例如: fatal: unable to access https://github.com/ohmyzsh/oh…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)
一、题目解析 对于递归方法的前序遍历十分简单,但对于一位合格的程序猿而言,需要掌握将递归转化为非递归的能力,毕竟递归调用的时候会调用大量的栈帧,存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧,而非…...

C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...