GAN:SNGAN-谱归一化GANs

论文:https://arxiv.org/pdf/1802.05957.pdf

代码:GitHub - pfnet-research/sngan_projection: GANs with spectral normalization and projection discriminator

发表:2018 ICLR

摘要

GANs的主要挑战是:训练的稳定性。本文作者提出一种新的权重归一化:spectral normalization(谱归一化)来帮助稳定训练GANs。SN-GAN只需要改变判别器权值矩阵的最大奇异值,这种方法可以最大限度地保存判别器权值矩阵的信息,这个优势可以让SN-GAN使用类别较多的数据集作为训练数据,依旧可以获得比较好的生成效果。此外,SNGAN使用power iteration(迭代法),加快训练速度。

本文方案的优点:仅有一个超参数,调整简单。并且实现简单,计算量小。

谱归一化的引入

这篇文章给出了比较好的解释:我这里借鉴一下

生成模型的训练可以作为 W 距离下的一个最小-最大问题

第一个 arg max 试图获得 W 距离的近似表达式,而第二个 arg min 则试图最小化 W 距离。然而,T 不是任意的,需要满足 ‖T‖L≤1,这称为 Lipschitz 约束(L 约束),该怎么施加这个约束呢?

L约束:目前有3种方案

  • 权重裁剪

这是 WGAN 论文提出的方案:在每一步的判别器的梯度下降后,将判别器的参数的绝对值裁剪到不超过某个固定常数。这是一种非常朴素的做法,现在基本上已经不用了。其思想就是:L 约束本质上就是要网络的波动程度不能超过一个线性函数,而激活函数通常都满足这个条件,所以只需要考虑网络权重,最简单的一种方案就是直接限制权重范围,这样就不会抖动太剧烈了。

这篇博文的观点:WGAN利用Wasserstein距离代替原始GAN中的JS距离,但是为了去衡量Wasserstein距离判别器必须要满足Lipschitz假设,Lipschitz就是让模型对输入的细微变化不敏感。在WGAN中是直接对判别器的参数做裁剪,迫使参数在[−c,c][−c,c]之间,这种操作的方法算是改变了权值矩阵的最大奇异值,多少会造成信息损耗。

  • 梯度惩罚

这是 WGAN-GP 论文提出的方案:这种思路非常直接,即 ‖T‖L≤1 可以由 ‖∇T‖≤1 来保证,所以干脆把判别器的梯度作为一个惩罚项加入到判别器的 loss 中:

但问题是我们要求 ‖T‖L≤1 是在每一处都成立,所以 r(x) 应该是全空间的均匀分布才行,显然这很难做到。所以作者采用了一个非常机智(也有点流氓)的做法:在真假样本之间随机插值来惩罚,这样保证真假样本之间的过渡区域满足 L 约束。显然,它比权重裁剪要高明一些,而且通常都 work 得很好。但是这种方案是一种经验方案,没有更完备的理论支撑。

这篇博文的观点:WGAN-GP中使用gradient penalty 的方法来限制判别器,但这种放法只能对生成数据分布与真实分布之间的分布空间的数据做梯度惩罚,无法对整个空间的数据做惩罚。这会导致随着训练的进行,生成数据分布与真实数据分布之间的空间会逐渐变化,从而导致gradient penalty 正则化方式不稳定。此外,WGAN-GP涉及比较多的运算,所以训练也比较耗时。

  • 谱归一化

这是 SNGAN 论文提出的方案:本质上来说,谱归一化和权重裁剪都是同一类方案,只是谱归一化的理论更完备,结果更加松弛。而且还有一点不同的是:权重裁剪是一种“事后”的处理方案,也就是每次梯度下降后才直接裁剪参数,这种处理方案本身就可能导致优化上的不稳定;谱归一化是一种“事前”的处理方案,它直接将每一层的权重都谱归一化后才进行运算,谱归一化作为了模型的一部分,更加合理一些。

尽管谱归一化更加高明,但是它跟权重裁剪一样存在一个问题:把判别器限制在了一小簇函数之间。也就是说,加了谱归一化的 T,只是所有满足 L 约束的函数的一小部分。因为谱归一化事实上要求网络的每一层都满足 L 约束,但这个条件太死了,也许这一层可以不满足 L 约束,下一层则满足更强的 L 约束,两者抵消,整体就满足 L 约束,但谱归一化不能适应这种情况。

GANs的难点

GANs训练中的一个持续挑战是鉴别器的性能控制。在高维空间中,鉴别器的密度比估计通常是不准确的,并且在训练过程中不稳定,所以生成器网络无法有效学习目标分布的模式结构。更糟糕的是,当模型分布和目标分布是不相交的,存在一个可以完全区分模型的鉴别器目标的分布。一旦这种情况发生:生成器的训练会完全停止,因为此时判别器的导数总会为0。

训练速度
SNGAN:使用power iteration(迭代法),加快训练速度。

WGAN-GP:使用gradient penalty后,模型在梯度下降的过程中相当于计算两次梯度,计算量更大,所以整体训练速度就变慢了。
 

参考

1:SN-GAN论文解读 | TwistedW's Home

2:WGAN-div:默默无闻的WGAN填坑者(附开源代码) - 知乎 

3:为什么spectral norm对应的SNGAN未使用WGAN的loss? - 知乎

4:GAN的优化(四):奇异值与SNGAN - 知乎 

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

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

相关文章

java 之 继承与多态的详细介绍

文章目录 类的继承1. 基本语法2. 继承的特点3. 方法的重写(方法的覆盖)super 关键字1. 调用父类的构造器2. 访问父类的成员变量3. 调用父类的方法4. 在构造器中调用父类方法封装性以及访问修饰符抽象方法1. 声明抽象类2. 抽象方法3. 继承抽象类4. 抽象类…

智能指针及强相关知识经验总结 --- 移动语义、引用计数、循环引用、move()、自定义删除器等

目录 前言 一、shared_ptr 1. 基本用法和构造方法 2. 引用计数机制 3. weak_ptr 解决循环引用 二、unique_ptr 1. 基本用法和构造方法 2. 独占性 3. 所有权转移 1)unique_ptr :: release() 2)移动语义 和 move() 三、 对比 shared_ptr 和 un…

Linux中项目部署步骤

安装jdk,tomcat 安装步骤 1,将压缩包,拷贝到虚拟机中。 通过工具,将文件直接拖到虚拟机的/home下 2,回到虚拟机中,查看/home下,有两个压缩文件 3,给压缩文件做解压缩操作 tar -z…

Hive数据倾斜之:数据类型不一致导致的笛卡尔积

Hive数据倾斜之:数据类型不一致导致的笛卡尔积 目录 Hive数据倾斜之:数据类型不一致导致的笛卡尔积一、问题描述二、原因分析三、精度损失四、问题解决 一、问题描述 如果两张表的jion,关联键分布较均匀,没有明显的热点问题&…

计算机基础知识64

ForeignKey属性 to:设置要关联的表 related_name: 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’ related_query_name:反向查询操作时,使用的连接前缀,用于替换表名 to_field:设置要关联的表…

最长连续序列(leetcode 128)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:排序方法二:哈希表 5.实现示例参考文献 1.问题描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你…

【华为OD题库-049】评论转换输出-java

题目 在一个博客网站上,每篇博客都有评论。每一条评论都是一个非空英文字母字符串。评论具有树状结构,除了根评论外,每个评论都有一个父评论。 当评论保存时,使用以下格式: 首先是评论的内容; 然后是回复当前评论的数量。 最后是当…

如何保持操纵机构丝杆的精度?

滚珠丝杆是操纵机构中的重要组成部分,可以传递较高的扭矩,并且具有低摩擦、高效率和快速响应的特性,这使得操纵机构能够实现高速、高精度的运动控制,这对于整个系统的性能和精度具有决定性的影响,保持操纵机构丝杆的精…

互联网Java工程师面试题·Spring Boot篇·第二弹

目录 8、什么是 YAML? 9、如何实现 Spring Boot 应用程序的安全性? 10、如何集成 Spring Boot 和 ActiveMQ? 11、如何使用 Spring Boot 实现分页和排序? 12、什么是 Swagger?你用 Spring Boot 实现了它吗? …

YoloV5改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…

【wvp】测试记录

ffmpeg 这是个莫名其妙的报错,通过排查,应该是zlm哪个进程引起的 会议室的性能 网络IO也就20M

全志T527设置gpio口输出高电平实际输出低电平

前言 在调试T527的时候,主板另外添加了gpio口去控制usb口的电源开关,软件上面需要在内核运行的时候将gpio口设置输出高电平,usb口才可以正常使用。改好系统固件后,升级发现,机器开机动画过程中可以控制gpio口去打开us…

ArkUI组件--Button组件

1.声明Button组件 Button(label?:ResourceStr) #label是按钮上显示的文本 ①label是文字类型 所写文字会在按钮上显示 ②不输入label内容,需要额外定义一些描述。例如插入图片(需要定义图片属性) Button(){Image($r(app.media.xxx)).wi…

【题目】栈和队列专题

文章目录 专题一:栈系列1. 中缀表达式转后缀表达式(逆波兰式)2. 有效的括号3. 用栈实现队列4. 最小栈 专题一:栈系列 1. 中缀表达式转后缀表达式(逆波兰式) 算法原理 2. 有效的括号 题目链接 算法原理 代…

SpringBoot-监听Nacos动态修改日志级别

目录 一、pom文件 二、项目配置文件 三、日志配置文件 四、日志监听类 五、日志动态修改服务类 线上系统的日志级别一般都是 INFO 级别,有时候需要查看 WARN 级别的日志,所以需要动态修改日志级别。微服务项目中使用 Nacos 作为注册中心&#xff0c…

C++面试宝典第2题:逆序输出整数

题目 写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。 解析 这道题本身并没有什么…

Java架构师技术架构路线

目录 1 概论2 如何规划短中长期的技术架构路线图3 如何规划面向未来的架构4 如何修订路线图执行过程中的偏差5 如何落地路线图-阿里系糙快猛之下的敏捷模式想学习架构师构建流程请跳转:Java架构师系统架构设计 1 概论 首先,规划一个短中长期的技术路线图是非常重要的。短中…

java SSM毕业生信息管理myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

前言 学校的规模不断扩大,学生数量急剧增加,有关学生的各种信息量也成倍增长。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范管理、科学统计和快速查询、修改、增加、删除等,从而减少管…

lv11 嵌入式开发 RTC 17

目录 1 RTC简介 ​编辑2 Exynos4412下的RTC控制器 2.1 概述 2.2 特征 2.3 功能框图 3 寄存器介绍 3.1 概述 3.2 BCD格式的年月日寄存器 3.3 INTP中断挂起寄存器 3.4 RTCCON控制寄存器 3.5 CURTICCNT 作为嘀嗒定时器使用的寄存器 4 RTC编程 5 练习 1 RTC简介 RTC(…

关于优雅的使用SQL多行转多列的记录(doris)

文章目录 应用需求场景记录过程1. 准备数据2. 给数据根据姓名分组,加上序号.3. 根据name分组成map结构4. 拆分map 应用需求场景 准备的数据是这样的: 需要将每个人的成绩显示在一行上,需要的结果如下,但是我的情况是课程有非常…