揭秘:Wasserstein GAN与梯度惩罚(WGAN-GP)

news2024/12/23 7:29:24

一、说明

        什么是梯度惩罚?为什么它比渐变裁剪更好?如何实施梯度惩罚?在提起GAN对抗网络中,就不能避免Wasserstein距离的概念,本篇为系列读物,目的是揭示围绕Wasserstein-GAN建模的一些重要概念进行探讨。

图1(左)使用配重裁剪时的梯度范数要么爆炸,要么消失,不使用GP。(右)与 GP 不同,权重裁剪将权重推向两个值。 

二、背景资料

        在这篇文章中,我们将研究带有梯度惩罚的Wasserstein GAN。虽然最初的Wasserstein GAN[2]提高了训练稳定性,但仍存在生成较差样本或无法收敛的情况。回顾一下,WGAN的成本函数为:

公式 1:WGAN 值函数。

        其中  1-利普希茨连续的。WGAN的问题主要是因为用于对批评者强制执行Lipschitz连续性的权重裁剪方法。WGAN-GP用对批评家的梯度范数的约束代替了权重裁剪,以强制执行Lipschitz的连续性。这允许比WGAN更稳定的网络训练,并且需要很少的超参数调优。WGAN-GP和这篇文章建立在Wasserstein GANs之上,这已经在揭秘系列的上一篇文章中讨论过。查看下面的帖子以了解 WGAN。

揭秘:瓦瑟斯坦·甘斯(WGAN)

瓦瑟斯坦距离是多少?使用Wasserstein距离训练GAN背后的直觉是什么?怎么...

报表 1

可微的最优1-Lipschitz函数,最小化方程1的f*在Pr和Pg下几乎在任何地方都有单位梯度范数。

Pr 和 Pg 分别是真假分布。语句 1 的证明可以在 [1] 中找到。

三、渐变剪切问题

3.1 容量未充分利用

图2:WGAN评论家(上)使用梯度裁剪学习的值表面,(下)使用梯度惩罚学习的值表面。图片来源: [1]

使用权重裁剪来强制执行 k-Lipschitz 约束会导致批评者学习非常简单的函数。

从语句 1 中,我们知道最优批评者的梯度范数在 Pr 和 Pg 中几乎无处不在都是 1。在权重裁剪设置中,批评家试图达到其最大梯度范数 k并最终学习简单的函数。

图2显示了这种效果。批评者被训练收敛固定生成分布(Pg)作为实际分布(Pr)+单位高斯噪声。我们可以清楚地看到,使用权重裁剪训练的批评家最终学习了简单的函数并且未能捕捉到更高的时刻,而使用梯度惩罚训练的批评家则没有这个问题。

3.2 梯度爆炸和消失

权重约束和损失函数之间的相互作用使得WGAN的训练变得困难,并导致梯度爆炸或消失。

这在图1(左)中可以清楚地看到,其中注释器的权重在不同的削波值下爆炸或消失。图 1(右)还显示,渐变削波将注释器的权重推到两个极端削波值。另一方面,接受梯度惩罚训练的批评家不会遇到此类问题。

四、梯度惩罚

梯度惩罚的想法是强制执行一个约束,使得批评者输出的梯度与输入具有单位范数(语句 1)。

作者提出了该约束的软版本,对样本x̂∈P的梯度范数进行惩罚。新目标是

公式2:批评家损失函数

在方程 2 中,总和左侧的项是原始批评者损失,总和右侧的项是梯度惩罚。

Px̂ 是通过在实分布和生成的分布 Pr 和 Pg 之间沿直线均匀采样而获得的分布。这样做是因为最优注释器在从Pr和Pg耦合的样品之间具有单位梯度范数的直线。

λ,惩罚系数用于对梯度惩罚项进行加权。在论文中,作者为所有实验设置了λ = 10。

批规范化不再在注释中使用,因为批范数将一批输入映射到一批输出。在我们的例子中,我们希望能够找到每个输出的梯度,w.r.t它们各自的输入。

五、代码示例

5.1 梯度惩罚

 梯度惩罚的实现如下所示。

def compute_gp(netD, real_data, fake_data):
        batch_size = real_data.size(0)
        # Sample Epsilon from uniform distribution
        eps = torch.rand(batch_size, 1, 1, 1).to(real_data.device)
        eps = eps.expand_as(real_data)
        
        # Interpolation between real data and fake data.
        interpolation = eps * real_data + (1 - eps) * fake_data
        
        # get logits for interpolated images
        interp_logits = netD(interpolation)
        grad_outputs = torch.ones_like(interp_logits)
        
        # Compute Gradients
        gradients = autograd.grad(
            outputs=interp_logits,
            inputs=interpolation,
            grad_outputs=grad_outputs,
            create_graph=True,
            retain_graph=True,
        )[0]
        
        # Compute and return Gradient Norm
        gradients = gradients.view(batch_size, -1)
        grad_norm = gradients.norm(2, 1)
        return torch.mean((grad_norm - 1) ** 2)

5.2 关于WGAN-GP代码

训练 WGAN-GP 模型的代码可以在这里找到:

GitHub - aadhithya/gan-zoo-pytorch:GAN实现的动物园

GAN 实现的动物园。通过在GitHub上创建一个帐户,为aadhithya/gan-zoo-pytorch开发做出贡献。

github.com

5.3 输出

图3:WGAN-GP模型生成的图像。请注意,结果是早期结果,一旦确认模型按预期训练,训练就会停止。

 

        图例.3显示了训练WGAN-GP的一些早期结果。请注意,图 3 中的图像是早期结果,一旦确认模型按预期训练,训练就会停止。该模型未经过训练以收敛。

六、结论

        Wasserstein GAN 在训练生成对抗网络方面提供了急需的稳定性。但是,使用梯度削波导致各种问题,例如梯度爆炸和消失等。梯度惩罚约束不受这些问题的影响,因此与原始WGAN相比,允许更容易的优化和收敛。这篇文章研究了这些问题,介绍了梯度惩罚约束,还展示了如何使用 PyTorch 实现梯度惩罚。最后,提供了训练WGAN-GP模型的代码以及一些早期阶段的输出。阿迪西亚·桑卡尔

七、引用

[1] Gulrajani, Ishaan, et al. “改进了 wasserstein gans 的训练”。arXiv预印本arXiv:1704.00028(2017)。

[2] 阿尔约夫斯基、马丁、苏米斯·钦塔拉和莱昂·博图。“Wasserstein generative adversarial networks。”机器学习国际会议。PMLR, 2017.

[3] GitHub - aadhithya/gan-zoo-pytorch: A zoo of GAN implementations

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

建筑模板桉木好还是松木好?

在建筑行业中,选择合适的建筑模板材料对于确保施工质量和效率至关重要。桉木和松木是常见的木质建筑模板材料,但在两者之间做出选择时,桉木往往是更好的选择。本文将探讨桉木建筑模板的优势,并为您提供选择建筑模板的指导。 桉木作…

从人工测绘到无人机航测:探索测绘技术的巨大变革

在测绘领域,随着科技的不断进步,测绘技术也在不断演进。人工测绘、传统航测以及如今的无人机航测,每一次进步都为我们提供了更加精确和高效的地图数据。本文将带你深入探索这些技术的演变及其应用。 一、人工测绘的时代 早期的地图制作依赖于…

公司的固定资产怎么管理的

固定资产的管理是公司运作的重要组成部分。它不仅影响到公司的运营效率,也直接影响到公司的财务状况。然而,如何有效地管理公司的固定资产,仍然是一个需要深入研究和解决的问题。  有效的固定资产管理需要建立一个全面、系统的管理体系。这…

【数据分享】2006-2021年我国省份级别的排水和污水处理相关指标(20多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况,在之前的文章中,我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国省份级别的市政设施水平相关指标、2006-2021年我国省份级别的各类建设用地面积数…

台积电的战略布局:“曲线”抢单 | 百能云芯

郭明錤最新的分析引发了广泛关注,他指出台积电采取了一系列重大战略投资举措,旨在争夺未来的半导体订单,尤其是来自苹果和英伟达的12纳米订单。这些战略举措包括认购英特尔手中的IMS Nanofabrication Global股权以及投资安谋(Arm&…

这4款优秀的国产开源低代码开发平台,值得开发者尝试!

这4款优秀的国产开源低代码开发平台有哪些? 以下是一些常用的开源团队协作平台和项目管理工具: 我们现在用的就是简道云这样的低代码平台,有免费版可以使用,灵活简单,比开源系统的安全性也更高 1、简道云 官网&…

Window10安装PHP7.4

1. 下载PHP 7 首先需要下载PHP 7的安装包,可以从PHP官网(https://www.php.net/downloads.php)或者Windows下的PHP官网(http://windows.php.net/download/)下载Windows版本的PHP 7安装包。根据自己的系统架构&#xff…

多商家多店铺多用户商城_入驻审核系统源码_OctShop

多商家多店铺入驻是指一个可以支持多商家入驻,入驻的商家可以开多个店铺的多用户多店商城电商平台系统,这样的商城系统主要是以商家入驻为核心,以店铺为基础,集合互联网移动模式,OctShop商城把B2B2C模式和O2O模式集合在…

Gartner 2023API管理市场指南重磅发布,得帆云iPaaS标杆入榜

中国API管理-市场指南 Market Guide for API Management, China 是由全球最具权威的IT咨询与研究机构Gartner发布、聚焦中国API管理市场领域的专业研究报告,通过对市场概况以及代表厂商的分析,为企业决策者提供重要依据与参考。 得帆云iPaaS融合集成平台…

问道管理:头肩底形态选股公式?

股票投资中有许多技能剖析办法,其中头肩底形状是一种很重要的形状。头肩底形状是预示着股票价格将会回转的技能形状之一,它涵盖了价格走势、成交量的改变以及相应的趋势线。本文将从成交量的视点、价格走势的视点和头肩底形状的特色三个方面,…

SpringBoot 集成 SpringSecurity 从入门到深入理解

完整的目录 介绍 SpringSecurity简述 SpringSecuritySpringSecurity 的主要功能说明 项目源码入门案例项目工程路径第一步:加载依赖第二步:创建核心的配置类第三步:增加controller第三步:启动程序小结界面跳转说明密码生成说明 重…

【2023集创赛】信诺达杯:基于Sinodyne ST3020的音频功放芯片LM386N-1的测试

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)信诺达杯全国三等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子…

唯品会的两个常用API分享(商品详情和关键字搜索)

万邦vip API 接入说明 API地址:https://api-test.cn/vip/ 调用示例&#xff1a; -- 请求示例 url 默认请求参数已经URL编码处理 curl -i "https://api-服务器.cn/vip/item_get/?key<您自己的apiKey>&secret<您自己的apiSecret>&num_iid1710613157-…

YSA Toon (Anime/Toon Shader)

这是一个Toon着色器/Cel阴影着色器,用于Unity URP 此着色器的目的是使角色或物体阴影实时看起来尽可能接近真实的动画或卡通效果 可以用于游戏,渲染,插图等 着色器特性,如:面的法线平滑、轮廓修复、先进的边缘照明、镜面照明、完全平滑控制 这个文档包括所有的功能https:/…

基于SSM的健康综合咨询问诊平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

【算法专题突破】滑动窗口- 将 x 减到 0 的最小操作数(12)

目录 1. 题目解析 2. 算法原理 3. 代码编写 写在最后&#xff1a; 1. 题目解析 题目链接&#xff1a;1658. 将 x 减到 0 的最小操作数 - 力扣&#xff08;Leetcode&#xff09; 这道题并不难理解&#xff0c;其实就是在数组里找值&#xff0c;直到把x减成0&#xff0c; 这…

电压放大器和电荷放大器的区别是什么

电压放大器和电荷放大器一样吗&#xff1f; 电压放大器和电荷放大器不是一样的。你要明白&#xff0c;电压放大器是将输入信号的电压进行放大的装置&#xff0c;通常直接连接到信号源&#xff0c;不需要电容来耦合信号。而电荷放大器是将输入信号的电荷量进行放大的装置&#x…

更安全、更清晰、更高效——《C++ Core Guidelines解析》

由资深技术专家Rainer Grimm撰著的《C Core Guidelines解析》&#xff0c;从内容上说&#xff0c;选取了现代C语言最核心的相关规则;从篇幅上说&#xff0c;对软件工程师非常友好。以“八二原则”看&#xff0c;这个精编解析版是一-个非常聪明的选择。同时&#xff0c;Rainer G…

软件报错提示vcomp140.dll丢失怎么办?这5个修复方法可帮到你

随着科技的飞速发展&#xff0c;电脑已经成为人们日常生活和工作中不可或缺的重要工具。然而&#xff0c;在使用电脑的过程中&#xff0c;难免会遇到一些问题&#xff0c;如电脑报错 vcomp140.dll 丢失。这给许多用户带来了困扰&#xff0c;那么&#xff0c;究竟该如何解决这个…

『吴秋霖赠书活动 | 第二期』《ChatGPT原理与实战》

文章目录 1. 写在前面2. Tansformer架构模型3. ChatGPT原理4. 提示学习与大模型能力的涌现4.1 提示学习4.2 上下文学习4.3 思维链 5. 行业参考与建议5.1 拥抱变化5.2 定位清晰5.3 合规可控5.4 经验沉淀 千模大战正酣&#xff0c;吃透ChatGPT是制胜关键&#xff01; 声明&#x…