GANs正在多个层面有所突破

简介: 作者:inFERENce 翻译:余志文 去年我一直在研究如何更好地调整GANs中的不足,但因为之前的研究方向只关注了损失函数,完全忽略了如何寻找极小值问题。直到我看到了这篇论文才有所改变: 详解论文: The Numerics of GANs 我参考了Mar的三层分析,并在计算层面上仔细考虑了这个问题:我们这样做的最终目标是什么?我相信GANs在这个层面已经有所突破了,因为他们试图优化错误的东西或寻求不存在的平衡等。


作者:inFERENce

翻译:余志文


去年我一直在研究如何更好地调整GANs中的不足,但因为之前的研究方向只关注了损失函数,完全忽略了如何寻找极小值问题。直到我看到了这篇论文才有所改变:

详解论文: The Numerics of GANs

我参考了Mar的三层分析,并在计算层面上仔细考虑了这个问题:我们这样做的最终目标是什么?我相信GANs在这个层面已经有所突破了,因为他们试图优化错误的东西或寻求不存在的平衡等。这就是为什么我喜欢f-GANs、Wasserstein GANs、实例噪声,而不大喜欢在优化层面上做一些修复的尝试:比如DCGAN或改进技术(Salimans等,2016)等原因。我认为在大多数深度学习中,算法层面上随机梯度的下降是大家所认可的。你可以去提升它,但是如果没有突破性进展,它通常不需要修复。

但阅读本文后,我有一个启示:

GANs可以同时在计算层面和算法层面有所突破

即使我们修复了目标,我们也没有算法工具来寻找实际解决方案。

文章摘要:

结合我目前在研究的内容,我将通过一个不同的视觉来分析该论文

介绍关于收敛与不收敛的矢量场的概念,并强调其一些属性然后描述Mescheder等人文章提出的 consensus、optimization等方面的一些结论:在复杂的不收敛矢量场与理想的收敛矢量场之间进行插值

最后,正如我研究的期望那样,我还强调了另一个重要的细节,一个在文中没有讨论的:我们应该如何在小批量设置中做到所有这些?

简介:从GAN到矢量场

GANs可以被理解为博弈游戏(一个各不相互合作的双人游戏)。一个玩家控制θ并希望最大化其收益f(θ,φ),另一个控制φ并寻求最大化g(θ,φ)。当两个玩家都不再会通过改变参数来提高收益的时候游戏就达到了纳什均衡。因此,现在我们必须要设计一个算法来帮助达到这个纳什均衡。

但目前GANs似乎存在两个问题:

1.计算层面:纳什平衡(Nash equilibrium)达不到可能会退化。

2.算法层面:我们依然还没有找到可靠的工具来达到纳什均衡(即使我们现在的算法能很好的收敛到局部纳什均衡)。

Mescheder等在2017年非常成功地解决了第二个问题,为了找到纳什均衡,我们最好的工具是同步梯度上升算方法,一个由以下递归定义的迭代算法:

其中是第t次迭代的结果,h是步长,v(x)是如下向量场:

起初大家觉得这是一个重要的发现,可能看起来还挺矛盾的:将GANs训练视为神经网络训练的一个特殊例子是很自然的,但实际上它是另外一种方法。

同步梯度下降算法(simultaneous gradient descent)是梯度下降算法的概括,而不是特例。

不收敛的矢量场

普通梯度下降算法与同步梯度下降算法(simultaneous gradient descent)的一个关键区别在于,前者只能够收敛到向量场的固定点,后者可以处理不收敛的向量场。因此,我想花大部分在这篇文章里谈论这个差异以及这些术语是什么意思。

矢量场是一个简单的函数,,输入为矢量并输出具有相同维数的另一矢量

我们经常使用的矢量场是标量函数的梯度,例如其中可以是训练对象,能量或损失函数。这些类型的矢量场是非常特别的。它们被称为收敛的矢量场,可以简单的解释为“没有什么太复杂的因子”。标量函数的梯度和收敛的矢量场是一对一映射的:当且仅当向量v是收敛的时候,则存在标量φ的梯度等于v。

我们经常在机器学习中遇到的则是另一个种(但不经常将其视为矢量场)是由自动编码器定义的矢量场。 AE的输入一些向量x,并返回另一个相同大小的向量v(x)。比如在图5是Alain和Bengio在201年对2D数据的自动编码去噪声的矢量场训练,效果相当不错:

由AE定义的矢量场不一定是收敛的,这意味着可能会产生一些不确定性的奇奇怪怪的问题。会有什么样的奇怪的事情产生呢?让我们来看一个极端的例子:恒定卷积矢场,这是一个非常典型的不收敛矢量场例子:

这个向量场在零和游戏中经常出现(译者注:zero-sum game就是指“零和博弈”,指参与博弈的各方,在严格竞争下,一方的收益必然意味着另一方的损失,博弈各方的收益和损失相加总和永远为“零”,双方不存在合作的可能),其中。这和Salimans等人在2016年论文“Improved Techniques for Training GANs”中第3节里面提到的对抗生成网络的框架里的一个小例子非常相似。如同在圆圈中的矢量场,可以很明显的看到它 场中的旋转。事实上,如果你沿着这个矢量场(同时这也是梯度下降的方向)的箭头,你最终会进入圈子里,如图所示:

 可以把此矢量比作与埃舍尔的《不可思议城堡》(译者注:埃舍尔,荷兰 版画家,因其绘画中的数学性而闻名,有兴趣的可以看看《不可能存在的存在》:http://www.360doc.com/content/17/0705/08/27794381_668875548.shtml)。在埃舍尔的“不可能存在的城堡”中,仆人认为他们正在上台阶或者是在下台阶,但实际上他们所做的都是围绕着圈子。当然如果要将Escher的城堡构建成是一个真正的3D 模型则是不可能的。类似地,不可能将卷积矢量场表示为标量函数的梯度。

一个坏消息是,即使旋度场在处具有平衡点,同步梯度下降算法也将永远发现不了。虽然我们我们共认梯度下降算法能在局部收敛到最小值,但是同步下降算法一般不能收敛到均衡点。它会陷入一个死循环,基于动量的变量甚至可以积累无限的动量直到完全崩溃。

一致优化方法(Consensus optimization):训练一个不收敛的矢量场

Mescheder等人提出的解决方案是从原始构造一个收敛的矢量场,如下: 因为我们将它定义为标量函数L的梯度,这显然是收敛的。很容易看出,这个新的矢量场-∇L具有与v相同的固定点。下面我绘制了对应于上述旋度场的收敛矢量场-∇L:

这和我们之前熟悉的一样,L的梯度下降要收敛到局部最小值,即固定点v。现在的问题是,我们无法控制我们收敛到什么样的固定点。我们要寻求一个正平衡,但是-δL不能区分鞍点(既不是极大值点也不是极小值点的临界点)或平衡,或负平衡或正平衡之间。如下图说明了矢量场



在左侧的图片中,我注释了平衡点和鞍点。中间的图片说明了收敛松弛点L,其中鞍点和平衡都转向局部最小值。 

那我们该怎么办?我们可以简单地采用原始v和它相关的-∇L进行线性组合,这种组合仍然是不收敛的矢量场看起来像旋度场(即上图第三个图片)。

通过这两个矢量场的组合,我们可能会得到一个稍微更好的模型,但仍然是不收敛的矢量场。衡量矢量场的效果的一种方法是查看其雅可比矩阵v'(x)的特征值。雅可比矩阵是矢量场的导数,对于收敛的矢量场,它被称为海森矩阵或二阶导数(译者注:关于雅可比矩阵和海森矩阵可以参阅网络资料——http://jacoxu.com/jacobian%E7%9F%A9%E9%98%B5%E5%92%8Chessian%E7%9F%A9%E9%98%B5/)。与总是对称的海森矩阵不同,非收敛场的雅可比是非对称的,它可以具有复杂的特征值。例如旋度场的雅可比矩阵是

其特征值完全是虚构的+ i和-i。

Mesceder等人通过将v与-∇L线形组合,可以控制组合场的特征值(详见论文),如果我们选择足够大的γ,则同步梯度下降算法将收敛到平衡。这真的是太赞了(6666666)!

可悲的是,当我们增加γ时,我们也会像以前一样引入虚假的均衡。这里所谓的平衡,其实际上只是v的鞍点。所以我们不能一味的关注γ,我们必须找到一个合理的中间地带。这是这种方法的局限性,目前尚不清楚实际中极限是多少。

再说说另一种方法:随机梯度方法的变种

我想再提一下这篇文章中没有讨论的一种方法,但是我认为对于任何想要达成一致优化效果的学者来说都是非常重要的:我们如何通过随机优化和小批量来实现的?虽然本文是在讲一般的应用场景,在对抗生成网络中,f和g实际上是数据点之间的一些回报的平均值,例如,这样对于L我们有如下表达式:

这样做的问题是,如何从一个样本中小批量的构建一个无偏差的估计量并不是一个简单的问题。在Jensen不等式中,上限是指简单的对每个数据点逐步的进行规范,然后平均将给出一个有偏差的估计。虽然在小批量处理的平均梯度计算标准中仍然存在偏差,但它可以更接近这个上限值。要构建一个无偏估计,我们可以使用以下表达式:

平均指标(average norm)和总体方差(population variance )可以以无偏差的方式估计。 我已经和作者讨论过了,我会邀请他们发表评论,说明他们在实验中是如何做到的。 他们还承诺会在会议集影印版的论文中描述更多的细节。

总结

这篇论文让我开拓了视野,本来我一直认为在我们对抗生成网络中使用的梯度下降算法只是梯度下降的一种特殊情况,但实际上它只是是一个泛化,梯度下降的良好属性在这里并不能被认为是理所当然有的。希望这篇文章可以给大家带来一个对抗生成网络的满意答案。


原文发布时间为:2017-10-24

本文作者:inFERENce

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“大数据文摘”微信公众号


相关文章
|
11天前
|
人工智能 开发工具 iOS开发
Claude Code 新手完全上手指南:安装、国产模型配置与常用命令全解
Claude Code 是一款运行在终端环境中的 AI 编程助手,能够直接在命令行中完成代码生成、项目分析、文件修改、命令执行、Git 管理等开发全流程工作。它最大的特点是**任务驱动、终端原生、轻量高效、多模型兼容**,无需图形界面、不依赖 IDE 插件,能够深度融入开发者日常工作流。
3287 9
|
3天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
1633 5
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
13天前
|
Shell API 开发工具
Claude Code 快速上手指南(新手友好版)
AI编程工具卷疯啦!Claude Code凭借任务驱动+终端原生的特性,成了开发者的效率搭子。本文从安装、登录、切换国产模型到常用命令,手把手带新手快速上手,全程避坑,30分钟独立用起来。
3335 23
|
7天前
|
人工智能 Linux BI
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
JeecgBoot AI专题研究 一键脚本:Claude Code + JeecgBoot Skills + DeepSeek 全平台接入 一行命令装好 Claude Code + JeecgBoot Skills + DeepSeek 接入,无需翻墙使用 Claude Code,支持 Wind
2370 4
国内用 Claude Code 终于不用翻墙了:一行命令搞定,自动接 DeepSeek
|
26天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23599 15
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
13天前
|
人工智能 JSON BI
DeepSeek V4-Pro 接入 Claude Code 完全实战:体验、测试与关键避坑指南
Claude Code 作为当前主流的 AI 编程辅助工具,凭借强大的代码理解、工程执行与自动化能力深受开发者喜爱,但原生模型的使用成本相对较高。为了在保持能力的同时进一步降低开销,不少开发者开始寻找兼容度高、价格更友好的替代模型。DeepSeek V4 系列的发布带来了新的选择,该系列包含 V4-Pro 与 V4-Flash 两款模型,并提供了与 Anthropic 完全兼容的 API 接口,理论上只需简单修改配置,即可让 Claude Code 无缝切换为 DeepSeek 引擎。
2854 3
|
5天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全+三种模式+记忆体系+实战工作流完整手册
Claude Code 是当前最流行的终端级 AI 编程助手,能够直接在命令行中完成代码生成、项目理解、文件修改、命令执行、错误修复等全流程开发工作。它不依赖图形界面、不占用额外资源,却能深度理解项目结构,自动生成规范代码,大幅提升研发效率。
931 2
|
12天前
|
存储 Linux iOS开发
【2026最新】MarkText中文版Markdown编辑器使用图解(附安装包)
MarkText是一款免费开源、跨平台的Markdown编辑器,主打所见即所得实时预览,支持Windows/macOS/Linux。内置数学公式、流程图、代码高亮、多主题及PDF/HTML导出,是Typora的轻量免费替代首选。(239字)

热门文章

最新文章