©PaperWeekly 原创 · 作者 | 苏剑林

单位 | 追一科技

研究方向 | NLP、神经网络

当前,WGAN 主流的实现方式包括参数裁剪(Weight Clipping)、谱归一化(Spectral Normalization)、梯度惩罚(Gradient Penalty),本来则来介绍一种新的实现方案:梯度归一化(Gradient Normalization),该方案出自两篇有意思的论文,分别是《Gradient Normalization for Generative Adversarial Networks》[1] 和《GraN-GAN: Piecewise Gradient Normalization for Generative Adversarial Networks》[2]。

有意思在什么地方呢?从标题可以看到,这两篇论文应该是高度重合的,甚至应该是同一作者的。但事实上,这是两篇不同团队的、大致是同一时期的论文,一篇中了 ICCV,一篇中了 WACV,它们基于同样的假设推出了几乎一样的解决方案,内容重合度之高让我一直以为是同一篇论文。果然是巧合无处不在啊~

基础回顾

关于 WGAN,我们已经介绍过多次,比如《互怼的艺术:从零直达WGAN-GP》和《从Wasserstein距离、对偶理论到WGAN》,这里就不详细重复了。简单来说,WGAN 的迭代形式为:

这里的关键是判别器 是一个带约束优化问题,需要在优化过程中满足 L 约束 ,所以 WGAN 的实现难度就是如何往 里边引入该约束。

这里再普及一下,如果存在某个常数 ,使得定义域中的任意 都满足 ,那么我们称 满足 Lipschitz 约束(L 约束),其中 的最小值,我们称为 Lipschitz 常数(L 常数),记为 。所以,对于 WGAN 判别器来说,要做到两步:1、 要满足 L 约束;2、L 常数要不超过 1。

事实上,当前我们主流的神经网络模型,都是“线性组合+非线性激活函数”的形式,而主流的激活函数是“近线性的”,比如 ReLU、LeakyReLU、SoftPlus 等,它们的导函数的绝对值都不超过 1,所以当前主流的模型其实都满足 L 约束,所以关键是如何让 L 常数不超过 1,当然其实也不用非 1 不可,能保证它不超过某个固定常数就行。

方案简介

参数裁剪和谱归一化的思路是相似的,它们都是通过约束参数,保证模型每一层的 L 常数都有界,所以总的 L 常数也有界;而梯度惩罚则是留意到 的一个充分条件是 ,所以就通过惩罚项 来施加“软约束”。

本文介绍的梯度归一化,也是基于同样的充分条件,它利用梯度将 变换为 ,使其自动满足 。具体来说,我们通常用 ReLU 或  LeakyReLU 作为激活函数,在这个激活函数之下, 实际上是一个“分段线性函数”,这就意味着,除了边界之外, 在局部的连续区域内都是一个线性函数,相应地, 就是一个常向量。

于是梯度归一化就想着令 ,这样一来就有

当然,这样可能会有除 0 错误,所以两篇论文提出了不同的解决方案,第一篇(ICCV论文)直接将 也加到了分母中,连带保证了函数的有界性:

第二篇(WACV论文)则是比较朴素地加了个 :

同时第二篇也提到试验过 ,效果略差但差不多。

实验结果

现在我们先来看看实验结果。当然,能双双中顶会,实验结果肯定是正面的,部分结果如下图:

▲ ICCV论文的实验结果表格

▲ WACV论文的实验结果表格

▲ ICCV论文的生成效果演示

尚有疑问

结果看上去很好,理论看上去也没问题,还同时被两个顶会认可,看上去是一个好工作无疑了。然而,笔者的困惑才刚刚开始。

该工作最重要的问题是,如果按照分段线性函数的假设,那么 的梯度虽然在局部是一个常数,但整体来看它是不连续的(如果梯度全局连续又是常数,那么就是一个线性函数而不是分段线性了),然而 本身是一个连续函数,那么 就是连续函数除以不连续函数,结果就是一个不连续的函数!

所以问题就来了,不连续的函数居然可以作为判别器,这看起来相当不可思议。要知道这个不连续并非只在某些边界点不连续,而是在两个区域之间的不连续,所以这个不连续是不可忽略的存在。在 Reddit 上,也有读者有着同样的疑问,但目前作者也没有给出合理的解释(链接)。

另一个问题是,如果分段线性函数的假设真的有效,那么我用 作为判别器,理论上应该是等价的,但笔者的实验结果显示这样的 效果极差。所以,有一种可能性就是,梯度归一化确实是有效的,但其作用的原因并不像上面两篇论文分析的那么简单,也许有更复杂的生效机制我们还没发现。此外,也可能是我们对 GAN 的理解还远远不够充分,也就是说,对判别器的连续性等要求,也许远远不是我们所想的那样。

最后,在笔者的实验结果中,梯度归一化的效果并不如梯度惩罚,并且梯度惩罚仅仅是训练判别器的时候用到了二阶梯度,而梯度归一化则是训练生成器和判别器都要用到二阶梯度,所以梯度归一化的速度明显下降,显存占用量也明显增加。所以从个人实际体验来看,梯度归一化不算一个特别友好的方案。

文章小结

本文介绍了一种实现 WGAN 的新方案——梯度归一化,该方案形式上比较简单,论文报告的效果也还不错,但个人认为其中还有不少值得疑问之处。

参考文献

[1] https://arxiv.org/abs/2109.02235

[2] https://arxiv.org/abs/2111.03162

[3]https://www.reddit.com/r/MachineLearning/comments/pjdvi4/r_iccv_2021_gradient_normalization_for_generative/

特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

WGAN新方案:通过梯度归一化来实现L约束相关推荐

  1. 【论文摘要】一种基于NSPD-DCT域变参数混沌映射的零水印新方案

    A Novel Zero-Watermarking Scheme Based on Variable Parameter Chaotic Mapping in NSPD-DCT Domain 标题:一 ...

  2. 网站站内优化新方案,SEO运营人员值得一看

    网站在建设完成之后,就会有大量的优化工作来提升网站的排名和权重.网站优化可分为站内优化和站外优化.随着互联网的不断进步和改变,搜索引擎的规则也在升级更新,那么我们该如何在时代的潮流下进行站内优化呢? ...

  3. BI国产化替代进入实质阶段,新产品新方案提高加速度

    "BI是企业转型数字化最高效的方式之一."知名调研分析机构很早就做出了这样的判断.7月9日,以<绽放科技创新力量,推进BI国产化替代>为主题的2020永洪科技新产品发布 ...

  4. Python之父重回决策层,社区治理新方案!

    在Guido van Rossum(吉多·范罗苏姆)卸任BDFL("终身仁慈独裁者")一职半年多之后,Python社区迎来了新的治理新方案:指导委员会模式,而经过投票Guido v ...

  5. DHL出台货运新方案

    DHL出台货运新方案(来自:北京国际快递) 这是中国货运行业内首次由货运公司发起的关于货运安全方面的战略合作项目,货运公司与机场货运站.航空公司首次共同协作致力于货物的安全保障. 国际快递巨头DHL日 ...

  6. 阿里云表格存储全面升级,打造一站式物联网存储新方案

    简介: 阿里云表格存储全面升级,打造一站式物联网存储新方案 2021年9月1日,阿里云表格存储Tablestore重磅发布新能力:一站式物联网存储IoTstore.该新能力是阿里云表格存储Tables ...

  7. 正则不等于一个字符串_王晓阳 | 物理主义不等于物理学主义——表述物理主义的一个新方案...

    上海市社会科学界联合会主管主办 摘要:如何恰当地表述物理主义,是当前物理主义者面临的两大难题之一.常见的表述方案有四种:"基于物理学理论的"方案."基于范型物理对象的&q ...

  8. 韩国FSC公布新方案允许分离银行加密业务 以帮助小型交易所继续运营

    3月2日消息,韩国金融服务委员会(FSC)最近公布一项新方案,帮助小型加密交易所在"所有交易平台遵守实名制银行账户"加密法案中生存.该新方案将确保小型加密交易所被列为"不 ...

  9. 文远知行发布自动驾驶新方案:日产纯电动车型,搭载性价比激光雷达

    李根 发自 圣何塞·GTC  量子位 报道 | 公众号 QbitAI 新车型.新感知方案,新软件系统. 这是英伟达投资的自动驾驶公司文远知行WeRide,在2019年现场GTC展现的最新情况. 文远知 ...

最新文章

  1. 量子位MEET大会报名开启!各领域头部玩家集结,AI年度榜单揭晓,在这里预见智能科技新未来...
  2. 超级列表框排序mysql_超级列表框List Ctrl
  3. Android桌面悬浮窗进阶,QQ手机管家小火箭效果实现
  4. mysql函数之SUBSTRING_INDEX(str,/,-1)
  5. Javascript设置定时请求
  6. 十年测试之路的笔记分享
  7. mysql—触发器trigger
  8. poj 3267 -- The Cow Lexicon
  9. 资源---2020考研---考研经验(总结:踏踏实实跟着汤家凤老师)
  10. ev3 android,乐高®头脑风暴教育机器人EV3编程
  11. 阿里云CentOS环境之docker安装,启动,加速器,docker-compose(十四)
  12. 从Internet上下载ActiveX(转)
  13. 前端工程师未来发展方向
  14. 清除计算机策略,利用组策略清除历史记录
  15. kmeans python interation flag_Python自学笔记-第六章面向对象编程(下)
  16. WinEdit 的algorithm2e包自定义一个带竖线的模块代码
  17. 基于W5500的嵌入式SNMP代理端实现
  18. Surfacebook电池1充不上电解决办法亲测有效
  19. 新手上路--分享20个无版权的高清图库素材网站
  20. github项目创建

热门文章

  1. ubuntu如何安装linux驱动程序,Ubuntu下如何安装驱动程序和应用软件?
  2. matlab驱动器有什么用,mongo-matlab-driver如何使用
  3. php 笔试 龙腾简合_记录面试龙腾简合-java开发工程师经历
  4. Divide by three, multiply by two CodeForces - 977D (思维排序)
  5. 部署testlink报错,安装wampserver时提示丢失MSVCR110.dll
  6. 2017-2018-1 20155226 20155234 《信息安全系统设计基础》 实验一总结
  7. 【JUC】JDK1.8源码分析之ArrayBlockingQueue(三)
  8. Sublime Text 3 配置浏览器预览路径 localhost
  9. 快评《19家网站内容低俗被曝光》
  10. java中的静态初始化是什么意思,Java中static静态变量的初始化完全解析