【GAN优化】详解GAN中的一致优化问题

详解生成对抗网络(GAN) 详解生成对抗网络(GAN) 本篇博文从以下几个结构介绍GAN模型 概述 模型优化训练 GAN的一些经典变种 1 概述 GAN是由Ian Goodfellow于2014年首次提出,学习GAN的初衷,即生成不存在于真实世界的数据。类似于AI具有创造力和想象力。 GAN有两大护法G和D: G是generator,生成器: 负责凭空捏造数据出来 D是discriminator,判别器: 负责判断数据是不是真数据 这样可以简单看作是两个网络的博弈过程。在原始的GAN论文里面,G和D都是两个多层感知机 阅读详情

GAN的训练是一个很难解决的问题,上期其实只介绍了一些基本的动力学概念以及与GAN的结合,并没有进行过多的深入。动力学是一门比较成熟的学科,有很多非常有用的结论,我们将尝试将其用在GAN上,来得到一些有意义的结果,指导一下我们怎么训练GAN。

作者&编辑 | 小米粥

本期我们将首先介绍一个有关于动力学的收敛性命题,然后将GAN运用到上面,接着进行深入分析达到收敛的条件并最终引出了一个比较好的优化算法:一致优化。

1 一个重要的命题

先不谈GAN,先介绍一个特别重要的与动力学收敛性相关的命题,考虑一个如下形式的函数:

640?wx_fmt=jpeg

其中h大于0。有这样一个命题:如果存在一个比较特殊的点(不动点)使得:

640?wx_fmt=jpeg

而且在该不动点,函数F(x)的雅可比矩阵F'(x)的所有特征值(非对称矩阵的特征值为复数)的绝对值均小于1,则从该不动点的一小邻域内的任意一点开始,使用如下形式的数值迭代法:

640?wx_fmt=jpeg

则F最终会收敛至: 

640?wx_fmt=jpeg

为了直观描述,上述的数值迭代过程其实是在使用数值迭代的方式求:y=x和y=x+hG(x)两个函数的交点,如下示意:

640?wx_fmt=jpeg

非常难得有一个好的关于收敛性的结论,而且其数值迭代的方式与实际的GAN训练方式也吻合,我们考虑将GAN对接到这个结论中。

2 对接GAN

上一期中,我们已经给出了GAN的动力学系统的介绍,为了方便起见,我们将生成器和判别器的目标函数均写成max的形式: 

640?wx_fmt=jpeg

那么对应于第一小节的式子,x对应为GAN的参数:

640?wx_fmt=jpeg

而h可以对应为训练时候的学习速率,G(x)则对应为矢量场v:

640?wx_fmt=jpeg

这样看来,式子表达的意思就是使用同时梯度下降法进行参数更新(由于将目标函数写成max形式,准确来说是梯度上升法,无伤大雅):

640?wx_fmt=jpeg

将一般形式与GAN对接起来后,再次考虑之前关于收敛性的结论,即如果存在满足如下形式的点(即不动点),并且在不动点,矢量场v的雅可比矩阵的所有特征值的绝对值均小于1,则从该不动点的某一个邻域内任意一点开始迭代,最终会进入收敛状态。

640?wx_fmt=jpeg

其实前一个条件无非就是说在不动点,v=0,即损失函数的梯度为0。那么我们可以对GAN的训练过程进行“检查”,当出现一个梯度为0的参数点时,“检查”其矢量场的雅可比矩阵的特征值是否都在单位圆内,如果在则GAN的迭代最终会收敛进该点。

3 特征值分析

训练GAN要找到梯度为0似乎不是那么困难,但是实现第二个条件:在不动点的矢量场v的雅可比矩阵的所有特征值的绝对值均小于1 可能比较困难,我们来详细分析一下。考虑一般情况下的表达式:

640?wx_fmt=jpeg

F(x)的雅可比矩阵为: 

640?wx_fmt=jpeg

对其进行特征值分解,单位矩阵I的特征值是实数1,而考虑到一般情况下矩阵G'(x)是非对称矩阵,则其特征值必然是复数,设G'(x)分解出的特征值为:

640?wx_fmt=jpeg

F'(x)分解出的特征值为:

640?wx_fmt=jpeg

通常情况如下图所示:

640?wx_fmt=jpeg

特征值很容易跑出到单位圆之外。要保证其绝对值小于1(即在单位圆里),首先要保证a小于0,(a大于等于0时,该条件不可能满足),如下所示:

640?wx_fmt=jpeg

即G'(x)分解出的特征值的实部为负数,此时:

640?wx_fmt=jpeg

也就是说,要想进入收敛状态,特征值的实部要为负数,且同时要求学习速率h一定要足够小!其上界取决于特征值。但是这里有一个矛盾点,如果你将学习速率设置得太小,你的训练时长将会变得特别长。

同样地,在GAN中,需要保证矢量场v的雅可比矩阵

640?wx_fmt=jpeg

的所有特征值的实部为负数。但是实际中,这个条件是不太可能达到的,尤其是存在实部几乎为0而虚部的值比较大的情况,而且学习速率要设置的足够小。

注意到矢量场v的雅可比矩阵是与生成器和判别器的目标函数f、g相关的,考虑调整一下f和g,使得在不动点处的特征值的实部为负数。

4 一致优化

一致优化(Conseensus Optimization)是一种理论上比较好的方法,它做了一点“手脚”使得特征值的实部尽量为负数。先考虑一般的形式:

640?wx_fmt=jpeg

其中, γ 大于0,A为可逆矩阵,表达式为:

640?wx_fmt=jpeg

严谨起见,需要说明一下:如果某个x是

640?wx_fmt=jpeg

的一个不动点,则该x也是

640?wx_fmt=jpeg

的不动点,这里并没有因为在式子中添加A(x)而影响了不动点,之前可能在哪里收敛,之后还是可能在那个点收敛。而且在该不动点,

640?wx_fmt=jpeg

可以看出,相比于第3部分的表达式,新增加的一项会使得特征值向实数部的负数方向偏移(新增项为负定矩阵,其特征值必然为负实数),如图所示

640?wx_fmt=jpeg

如果超参数γ设置比较合理,“有希望”保证特征值均落在单位圆内。

现在,我们将上述方式对接到GAN中,将生成器和判别器的目标函数修改为:

640?wx_fmt=jpeg

其中, 

640?wx_fmt=jpeg

可以写成如下形式:

640?wx_fmt=jpeg

化简可有:

640?wx_fmt=jpeg

其雅可比矩阵的表达式为:

640?wx_fmt=jpeg

根据之前的结论,如果γ设置比较合理,学习速率h足够小,则其特征值均会落入单位圆内,参数随着不断更新迭代会进入不动点,也就是说进入纳什均衡的状态。添加的正则项虽然没有解决要求足够小的学习速率的问题,但是“保证”了特征值尽可能落入单位圆中。

最后说明一下,一般GAN中,生成器和判别器的目标函数符号是相反的,但是我们同时对它们增加相同符号的正则项,在正则项部分上,它们的优化目标是一致的,故称之为一致优化。

[1] Mescheder L , Nowozin S , Geiger A . The Numerics of GANs[J]. 2017.

[2] Nagarajan V, Kolter J Z, Nagarajan V, et al. Gradient descent GAN optimization is locally stable[J]. 2017.

总结

这篇文章承接上一篇文章,在GAN中利用动力学的成熟知识,添加了一个正则项,保证了GAN在足够小的学习速率的情况下能收敛进入纳什均衡状态,是一项非常有价值的工作。下一期的任务将继续延此路线展开。

下期预告:GAN训练中的正则项

GAN群

640?wx_fmt=jpeg

有三AI建立了一个GAN群,便于有志者相互交流。感兴趣的同学也可以微信搜索xiaozhouguo94,备注"加入有三-GAN群"。

有三AI夏季划

640?wx_fmt=png

有三AI夏季划进行中,欢迎了解并加入,系统性成长为中级CV算法工程师。

转载文章请后台联系

侵权必究

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

往期精选

GAN生成对抗网络入门篇 笔记整理:王小草 时间:2019年1月 一、GAN简介 1 背景 全称:generative adversarial network 生成式对抗网络(不一定是深度学习) 论文:https://arxiv.org/abs/1406.2661 提出者:Ian Goodfellow(也是深度学习花园书的作者) 2 Gan能做什么? 2.1 生成图片 下图,第一张图是真实图片,第二张是使用MSE为损失的监... 阅读详情

相关推荐

生成对抗网络(GAN)应用于图像分类

近年来,深度学习技术被广泛应用于各类数据处理任务中,比如图像、语音和文本。而生成对抗网络(GAN)和强化学习(RL)已经成为了深度学习框架中的两颗“明珠”。强化学习主要用于决策问题,主要的应用就是游戏,比如deepmind团队的AlphaGo。因为我的研究方向是高光谱图像的有监督分类问题,故本文主要讲解生成对抗网络及其在分类问题方面的应用。生成对抗网络框架  生成对抗网络(Generative ad

为之则易,不为则难 5万+

201901近期指的读的几篇GAN进展论文

1. 主要问题: 高分辨率图像的生成很困难,因为更高的分辨率使其更易于区分生成的图像和训练图像,从而极大地放大了梯度问题。 由于内存的限制,较大的分辨率还必须使用较小的小批处理,这进一步损害了训练的稳定性。 -解决方法: 作者的主要见解是,我们可以从更简单的低分辨率图像开始逐步增加生成器和鉴别器,并随着训练的进行添加新层,以引入更高分辨率的细节。 正如我们将在第2节中讨论的那样,这大大加快了训...

xiaojianzhao的博客 1204

原始GAN(生成对抗网络)详细解析

伟大的GAN(生成对抗网络)前言:以下所有内容是学习过程中产生的,不一定具有Ture可信度,仅供初学者学习参考,如果有不对的地方,敬请指正再批评;所有参考资料均来源于互联网和论文,文末贴出链接。摘要:主要从警察与造假币者的通俗例子讲解生成对抗网络的基本原理,生成器与判别器的概念,怎么样叫对抗过程?引出在图像生成中所用的生成对抗网络是怎么样的?论文中的原始GAN Loss函数的详细解释,它为什么就写...

hello_next_day的博客 6925

2021-12-24 GAN的一些优化技巧

1 当data和Generetor的分布没有重合,算出来的divergence都会是log2,loss都是一样 无法训练 1.1 LSGAN 把sigmoid换成线性的 1.2 Wasserstein GAN 用Earth Mover’s Distance来定义data和Generetor分布的距离 穷举所有铲土的计划,取铲土距离最小的那个 从轴坐标搬土到横轴,越亮越多: ...

weixin_42949850的博客 561

GAN!生成对抗网络GAN全维度介绍与实战

本文为生成对抗网络GAN的研究者和实践者提供全面、深入和实用的指导。通过本文的理论解释和实际操作指南,读者能够掌握GAN的核心概念,理解其工作原理,学会设计和训练自己的GAN模型,并能够对结果进行有效的分析和评估。

2401_85325519的博客 3397

GAN生成对抗网络介绍

GAN生成对抗网络、判别模型、生成模型、判别器、生成器

qq_52048052的博客 2688

实现高效的GAN训练:优化策略与技巧

1.背景介绍 GAN(Generative Adversarial Networks,生成对抗网络)是一种深度学习模型,它通过两个相互对抗的神经网络来学习数据的分布。这两个网络分别称为生成器(Generator)和判别器(Discriminator)。生成器的目标是生成逼真的假数据,而判别器的目标是区分真实数据和生成器产生的假数据。GAN在图像生成、图像补充、图像翻译等方面取得了显著的成果。 ...

AI天才研究院 1503

GAN(Generative Adversarial Network)—生成对抗网络

生成对抗网络 (GAN) 是一类功能强大的神经网络,用于无监督学习。GAN 由两个神经网络组成,一个判别器和一个生成器。他们使用对抗性训练来生成与实际数据相同的人工数据。生成器试图通过生成随机噪声样本来欺骗判别器,判别器的任务是准确区分生成的数据和真实数据。这种竞争互动产生了逼真的高质量样本,这推动了两个网络的发展。GAN 被证明是用途广泛的人工智能工具,它们在图像合成、样式迁移和文本到图像合成中的广泛使用证明了这一点。他们还彻底改变了生成建模。

jianqimingtian的博客 2936

【GAN优化】GAN训练的小技巧

头一阵子放假了,专栏都没有怎么更新了,今天开始继续更新(想问问小伙伴们都放了多久的假期?我们只有两周感觉时间好短呀~)作者&编辑 | 小米粥上一期中,我们说明了G...

hacker_long的专栏 6330

深度学习之生成对抗网络(GAN)

​ 某个模式(mode)出现大量重复样本,例如:​ 上图左侧的蓝色五角星表示真实样本空间,黄色的是生成的。生成样本缺乏多样性,存在大量重复。比如上图右侧中,红框里面人物反复出现。

weixin_43775295的博客 2816

GAN的改进与优化

1. 如何生成指定类型的图像——条件GAN, 条件生成对抗网络(CGAN) ​ 条件生成对抗网络(CGAN, Conditional Generative Adversarial Networks)作为一个GAN的改进,其一定程度上解决了GAN生成结果的不确定性。如果在Mnist数据集上训练原始GAN,GAN生成的图像是完全不确定的,具体生成的是数字1,还是2,还是几,根本不可控。为了让生成的数...

Jiashilin 3949

实战指南:用生成对抗网络(GAN)为‘没见过’的类别造数据,搞定广义零样本学习(GZSL)

本文深入探讨了生成对抗网络(GAN)在广义零样本学习(GZSL)中的实战应用,通过f-CLSWGAN框架为未见类别生成伪训练数据,解决传统模型无法识别新类别的问题。文章详细解析了网络架构设计、损失函数优化及完整GZSL系统构建,并分享了前沿优化策略如语义一致性增强和生成-分类联合优化,为AIGC领域的研究者提供了实用指南。

weixin_30342209的博客 470

对偶生成对抗网络(DualGAN)完整项目实战与解析

尽管现在有了更多先进的模型(如 StarGAN、MUNIT、StyleGAN),但 DualGAN 作为最早提出双向循环一致性思想的模型之一,其设计理念至今仍影响深远。它的最大贡献在于证明了:“只要给我两个未对齐的数据集,我就能学会它们之间的可逆映射。这不仅是技术突破,更是一种思维方式的革新。如今,类似的思想已被广泛应用于:- 多模态融合(文本↔图像)- 跨语言翻译(语音↔文字)- 机器人仿真(虚拟↔现实)

weixin_36364707的博客 486

生成对抗网络(GAN)

​ 某个模式(mode)出现大量重复样本,例如: ​ 上图左侧的蓝色五角星表示真实样本空间,黄色的是生成的。生成样本缺乏多样性,存在大量重复。比如上图右侧中,红框里面人物反复出现。​ 自回归模型通过对图像数据的概率分布$p_{data}(x)$进行显式建模,并利用极大似然估计优化模型。

sikh_0529的博客 3万+

ABAQUS中CDP模型在钢筋混凝土节点低周反复荷载模拟的关键技术解析

本文深入解析了ABAQUS中CDP模型在钢筋混凝土节点低周反复荷载模拟中的关键技术。通过详细介绍CDP模型的核心价值、建模关键技术、滞回曲线优化方法及典型问题排查指南,帮助工程师精准模拟混凝土的拉伸开裂和压缩压碎行为,提升抗震分析效率。文章还提供了实用的工程应用技巧,如快速建模模板和后处理自动化脚本。

weixin_30555125的博客 527

深入解析反射式DLL注入:从原理到实战优化

本文深入解析反射式DLL注入技术,从原理到实战优化全面剖析。通过PE文件内存重构、反射加载器实现及免杀增强方案,展示如何绕过安全检测并提升性能。适用于红队行动、内网渗透等场景,是高级攻防对抗中的关键技术。

weixin_28339967的博客 405

生成对抗网络GAN详细推导

生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络最最直接的应用是数据的生成,而数据质量的好坏则是评判GAN成功与否的关键。本文介绍了GAN最初被提出时的基本思想,模型和公式推导,以及训练。

ch18328071580的博客 3438

Matlab蒙特卡洛模拟二维伊辛模型相变过程

一、什么是伊辛模型 伊辛(Ising)模型是描述磁系统相变最简单的模型,但模型里自旋之间的相互作用赋予了它奇妙的特性,最有趣的就是对称性破缺。这一模型可以被推广用于研究连续的量子相变、基本粒子超弦理论、动力学临界行为等,甚至被认为可以描述深林火灾、交通拥堵、舆论传播等社会经济现象。 如图,每个格点的方向只有向上或向下两者状态,但临近的自旋之间有相互作用,而且点阵可以是一维、二维、三维、甚至更高维...

http://www.icfgblog.com/ 2万+

生成对抗网络(GAN)原理详记

生成对抗网络(GAN)原理详记前言一:什么是生成对抗网络(GAN)1.GAN是什么2.生成任务3.GAN的数学描述 前言 最近几天,入坑了生成对抗网络(GAN),主要是研读了缪茂文 潘志宏著写的《深入浅出GAN生成对抗网络原理剖析与Tensorflow实践》,这里把GAN一些基础的,必要的东西梳理一下。 一:什么是生成对抗网络(GAN) 1.GAN是什么 GAN网络结构是由生成器和判别器组成,训练过程中,生成器G不断的生成赝品,判别器D这识别生成器G生成的结果是真品还是赝品,两个网络相互对抗,生成器G努力生

weixin_45259896的博客 1万+

无人机蜂群联合指挥作战技术详解

随着人工智能、通信技术、新材料等领域的不断进步,无人机蜂群联合指挥作战技术将迎来更加广阔的发展前景。未来,无人机蜂群将更加智能化、自主化,能够执行更加复杂、精细的作战任务。同时,加强国际合作,共同制定国际规则和标准,将是推动无人机蜂群技术健康发展的重要方向。无人机蜂群技术,是指通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,执行复杂多样的军事任务。2. 通信与数据链:采用高速、低延迟、抗干扰的通信技术,保障群体内无人机间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1546

UE5与Cesium for Unreal结合:打造高效离线地图解决方案

本文详细介绍了如何利用UE5与Cesium for Unreal结合打造高效离线地图解决方案,特别适用于数字孪生、军事仿真等网络不稳定场景。通过优化配置、数据处理和性能调优,实现TB级地形数据的流畅渲染,并结合实战案例展示了在油田巡检等复杂环境中的应用效果。

weixin_29007135的博客 493

生成对抗网络(GAN)论文原文详解

最近在学习生成对抗网络的相关知识,首先接触到的当然是Ian Goodfellow的原始论文,文章中作者很简要的阐明了GAN的基本算法,同时也给出该算法可行的理论证明。该模型通俗点说可以利用已有的数据对模型进行训练,训练完成后,该网络能够自动的生成与原始数据相似的数据。举例来说,我给网络投喂一些 ...

coder_kang的博客 1万+

如何在huggingface上申请下载使用llama2/3模型

huggingface-cli download --resume-download 模型名称 --local-dir 存放模型的位置 --local-dir-use-symlinks False --resume-download --token token序列号xxxxxxx。登录huggingface,在模型详情页面上,找到这个表单,填写内容,提交申请。需要使用梯子,country填写梯子的位置吧(比如美国)等待一小时左右,会有邮件通知。

a61022706的博客 1万+

【机器学习】生成对抗网络 GAN

文章目录GAN能干什么?GAN的设计初衷GAN 的基本原理(大白话)生成对抗网络(GAN)由2个重要的部分构成训练过程GAN的总结GAN的提出:“Generative Adversarial Networks”(2014NIPS)GAN的优缺点GAN 的实际应用GAN的一些经典变种1. DCGAN:2. WGAN和WGAN-GP:3. Conditional GAN:参考链接 GAN能干什么? 要问生成对抗网络(GAN)为什么这么火,就得看看它能干什么。 GAN是最近2年很热门的一种无监督算法,他能生成出

weixin_44211968的博客 1万+

【k8s故障处理篇】calico-node启动失败“Felix is not live: Get “http://localhost:9099/liveness” 解决办法(V1.30.3版本)

【k8s故障处理篇】calico-node启动失败“Felix is not live: Get “http://localhost:9099/liveness” 解决办法(V1.30.3版本)

jks212454的博客 1091

Python爬虫实战——如何自动爬取百度搜索结果页面

本文介绍了如何使用Python爬虫抓取百度搜索结果页面的内容,包括如何构建搜索URL、获取页面HTML、解析内容、处理翻页以及存储数据等。通过该教程,您可以轻松实现批量抓取百度搜索结果,并为后续的数据分析和处理打下基础。希望本文能为您在爬虫开发、数据分析等领域提供帮助。如果您在实际应用过程中遇到问题,可以参考反爬虫应对策略,并结合实际需求进行调整。

2201_76125261的博客 1711
上一篇: 【杂谈】工程能力差,C++水平菜?CUDA没写过?我推荐玩下Caffe
下一篇: 【每周CV论文推荐】 初学深度学习图像分割必须要读的文章
言有三
言有三 领域专家: 人工智能技术领域 领域专家: 人工智能技术领域
博客等级 码龄15年 3635粉丝 976原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言有三

三人行必有AI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值