贾浩楠 发自 凹非寺
量子位 报道 | 公众号 QbitAI

输出单一、调参麻烦、损失函数不能收敛、稳定性差。

苏黎世理工大学的博士Andreas Lugmayr历数了各种GAN的“罪状”,说出了今后弃用GAN的话。

说出“弃用”,当然是已经有了B计划。

Andreas Lugmayr博士和他的团队开发了一种新的标准化流(Normalizing Flow)模型,能够弥补GAN在生成任务中的的种种缺陷。

这项研究成果“SRFlow”,还被ECCV 2020 Spotlight收录。

那么SRFlow到底有多厉害?能在多大程度上替代GAN呢?

SRFlow“又多又好”

从肉眼可见的生成任务结果上,可以看出SRFlow至少在两个方面超越了GAN,一是生成结果的多样性,二是提高图片分辨率后的保真度

输入一个低分辨率马赛克图像,基于GAN的ProgFSR模型和SRFlow生成结果对比:

在提升4倍分辨率的任务中,SRFlow的生成结果也比基于GAN的ERSGAN更加清晰真实。

对于众多的GAN变体来说,有一些缺陷是难以避免的,比如图像复原生成任务,生成器广泛忽略了随机向量,因此,大多数基于GAN的图像到图像映射都是单一确定的。

GAN训练中的损失函数,包括了生成器伪造图像,而鉴别器却无法知道哪些图像是假的。

另一方面,鉴别器的职责就是确定一个图像是来自生成器还是来自训练集。

这两个相互冲突的目标导致了学习参数的持续漂移,导致输出结果不同程度的失真。

那么基于标准化流的SRFlow,是如何弥补这些缺陷的呢?

SRFlow不会忽略随机向量

对于GAN忽略输入的随机向量,导致输出单一的问题,传统的GAN策略是,在模型中增加一个控制信号,并抛弃重建损失函数。

放大16倍分辨率下的SRFlow输出结果

而SRFlow在训练过程中,算法核心—标准化流模型将高分辨率图像转化为高斯分布。图像条件标准化流的情况并非如此。

为了避免GAN的判别器损失通常会导致模式崩溃,SRFlow采用单一损失进行训练的,并且对随机输出进行内采样。

模型稳定超参数少,调参方便

条件GAN需要仔细的超参数调整。很多GAN的变体模型中,总损失由多个损失的加权和组成。

所以降低失真需要很大的精力来调整不同的损失函数权重。

此外还必须平衡生成器和判别器,使训练过程稳定。

在图像生成任务中SRFlow使用最大似然策略(maximum likelihood),输入的图像被转化为一个高斯潜空间。通过简单的计算得到高斯向量的似然。然后使用现成的Adam优化器,这个损失函数会稳定地收敛。

SRFlow的单一损失稳定且可收敛

Normalizing Flow本质上是稳定的。因为模型只有一层网络和一个损失,超参数要少得多,训练起来也更容易。

特别是对于开发新模型的研究人员来说,这一点非常实用。

新手可以更容易地比较不同的架构的Normalizing Flow变体。

输入输出保持高度稳定

在没有进一步干预的情况下,有条件的GAN是不具备输入一致性的。对于提升分辨率任务,一个重要的问题是,高分辨率的图像是否与低分辨率的输入保持最大程度一致。

如果不能,那么该方法到底是真的提高分辨率还是仅仅生成一个类似图片?这点十分值得怀疑。

GAN模型里有一个不受监督的损失函数,会导致模型自行生成图片像素。而标准化流模型避免了这种可能。它以且只以输入图像为条件,来模拟高分辨率图像的分布。

将SRFlow的输出与输入对比,可以看出与GAN的结果不同,具有高度一致性。

生成任务只需1张GPU训练

研究团队说,论文中的实验基于GLOW网络,使用多达40个GPU来训练图像生成。

但如果只是应对简单的图片生成任务,只需要一块GPU就能完成对SRFlow的训练。

什么是标准化流模型?

机器学习中有一类是概率模型。训练一个模型时,常见的一种处理方法是调整参数以使得模型在训练数据集的概率最大。

为了达到这个目的,需要假设模型满足一定的概率分布模式。

那么到底需要什么样的分布,既具有接近真实样本的表达能力,又具有统计机器学习模型较好的解释性呢?

高斯分布可以基本满足:采样方便、解析的密度已知、KL距离容易计算,还有中心极限定理的保证。最常使用的两种方法是用于分类的Categorical以及用于回归的Gaussian。

但这两种方法仍然有一些问题, 因为真实世界中样本的概率密度函数一般来说,与范畴分布以及高斯分布相差甚远。

如果简单地使用高斯作为图像生成的似然函数,那最后得到的生成结果可能很糟糕。

而标准化流(Normalizing Flow)可以把简单的概率密度(比如高斯分布)形式转化成某种更高级分布形式。

Flow指的是数据流经过一系列双射(可逆映射)。最终映射到合适的表征空间,normalizing指的是表征空间的变量积分是1,满足概率分布函数的定义。

标准化流这种工具,可以产生更强大的分布函数。

从另一个视角来看,标准化流可以看作是一种参数化对先验概率q的逼近的方法,并且也可以用在其它似然函数方程场景下。

与GAN不同,标准化流模型在采样、训练稳定性、损失函数收敛、和一致性方面具有优势。

标准化流模型更加适合用在图像生成、强化学习、变分推断之类的任务。

SRFlow的团队,已经将这个基于标准化流的模型开源。

那么你的下一个机器学习任务,会使用SRFlow吗?

论文地址

https://arxiv.org/abs/2006.14200

开源地址

https://github.com/andreas128/SRFlow?

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

喜欢就点「在看」吧 !

我为什么弃用GAN?相关推荐

  1. 从入门到放弃心得 | 我为什么弃用GAN?

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 输出单一.调参麻烦.损失函数不能收敛. ...

  2. 为什么边缘概率密度是联合概率密度的积分_我为什么弃用GAN?

    贾浩楠 发自 凹非寺 量子位 报道 | 公众号 QbitAI 输出单一.调参麻烦.损失函数不能收敛.稳定性差. 苏黎世理工大学的博士Andreas Lugmayr历数了各种GAN的"罪状&q ...

  3. 不用L约束又不会梯度消失的GAN,了解一下?

    作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 不知道从什么时候开始,我发现我也掉到了 GAN 的大坑里边了,唉,争取早日能跳出来. 本文介绍的是 ...

  4. float在python中的书写形式错误的是_在Python3.7.1中,编写简单的GAN时,“TypeError:”float“对象不能解释为整数”错误...

    我对Python和编程是全新的.我试图编写一个简单的GAN来使用Keras数据集(参见下面的教程超链接). 我收到两个警告,然后是一个错误:TypeError: 'float' object cann ...

  5. 【Pytorch神经网络理论篇】 24 神经网络中散度的应用:F散度+f-GAN的实现+互信息神经估计+GAN模型训练技巧

    1 散度在无监督学习中的应用 在神经网络的损失计算中,最大化和最小化两个数据分布间散度的方法,已经成为无监督模型中有效的训练方法之一. 在无监督模型训练中,不但可以使用K散度JS散度,而且可以使用其他 ...

  6. 这才是陆奇看重的创业者:最小19岁,开拖拉机的斯坦福毕业生,弃医从文的武大学生……...

    杨净 蕾师师 发自 中关村  量子位 报道 | 公众号 QbitAI 陆奇的创业成绩单,来了. 自立门户创办奇绩创坛后,首届「毕业生」亮相. 有开挖掘机的斯坦福毕业生,有帮人打游戏的清华学子,还有弃医 ...

  7. 四天搞懂生成对抗网络(一)——通俗理解经典GAN

    点击左上方蓝字关注我们 [飞桨开发者说]吕坤,唐山广播电视台,算法工程师,喜欢研究GAN等深度学习技术在媒体.教育上的应用. 序言 做图像分类.检测任务时,为了提高模型精度,在数据处理方面,我尝试了很 ...

  8. 教你编写第一个生成式对抗网络GAN

    朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow 前面讲解了那么多GAN的基础知识,我们已经比较深入地了解GAN了,但如果不动手将上面的理论知识融入到实 ...

  9. GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分——利用GAN生成时间序列数据)

    GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分–TimeGAN 与合成金融输入) (本文基本是对Jasen 的<Machine Learning for Algorithmic Tr ...

最新文章

  1. php 5.2 mysqli_PHP5安装好后添加mysqli扩展支持 | 学步园
  2. html5——html5简介
  3. html自定义列表第三层嵌套,【微信小程序】关于微信小程序多层嵌套渲染列表以及嵌套列表中数据的获取...
  4. 读WAF与IPS的区别总结之摘抄
  5. 2021重庆高考成绩名次排名查询,重庆高考排名对应大学-重庆高考位次大学(2021年理科)...
  6. 获取请求消息行信息案例代码
  7. 百度霸屏技术的源码发布
  8. 2:Carmaker+Simulink+Canoe联合仿真,搭建ADAS HIL测试环境
  9. 4.3.5 心跳和协调者的关系
  10. 用curve_fit拟合幂函数与excel拟合误差问题
  11. sel4 手册总结之介绍与内核服务和对象
  12. Layui官方js正则验证手机号,邮箱,网址,日期,身份证
  13. JavaScript点击button更改内容,清空页面
  14. Pacemaker部署
  15. “富强“, “民主“, “文明“, “和谐“, “自由“, “平等“, “公正“, “法治“, “爱国“, “敬业“, “诚信“, “友善“
  16. 通过IDM提高QQ群文件下载速度
  17. Mac上Chrome浏览器跨域问题
  18. 牛批!Alibaba内部学习指南+最新面试题+学习大纲+内部学习书籍,理论与实战双管齐下!
  19. 内存泄漏检测C版小工具
  20. NO.007-2018.02.12《白头吟》两汉:卓文君

热门文章

  1. 数据结构与算法:14 Leetcode同步练习(五)
  2. Matlab数据的可视化 -- 平面多边形的着色
  3. Xshell发送命令到全部会话
  4. 分享几段祖传的 Python 代码,拿来直接使用!
  5. 用 Python 动态可视化,看看比特币这几年
  6. 对比四种爬虫定位元素方法,你更爱哪个?
  7. 英特尔第11代酷睿处理器TigerLake发布,集成Xe GPU,采用10nm制程技术
  8. 170亿参数加持,微软发布史上最大Transformer模型
  9. 打造 AI Beings,和微信合作…第七代微软小冰的成长之路
  10. 周礼栋:现在是计算机系统和网络研究“最好的时代”