作者 Alexandor Honchar
晓查 编译自 Medium
量子位 出品 | 公众号 QbitAI

最近,AI方案设计师Alexandor Honchar在Medium网站上分享一篇文章。他认为生成对抗网络(GAN)目前在生成图像取得了巨大进展,生成的图像几乎能够以假乱真,并且在4年间,面部图像的生成也越来越精细。

但Honchar认为,GAN不该局限在图像生成上,他认为GAN可以应用在更广泛的领域,并提出了GAN在其他领域的应用实例(项目链接见文末)。其中一些已经证实可行,并有学术成果产出,另一些作者目前还在探索中。

以下就是作者总结的GAN的7种”另类“用法:

增加数据

GAN可以训练模型用已有的数据集去产生增加数据。

我们如何检查增加的数据是否真的有帮助呢?主要有两个策略:我们可以在“假”数据上训练我们的模型,并检查它在真实样本上的表现;与之相对的是,我们用真实数据训练模型来做一些分类任务,并且在检查它对生成的”假“数据的表现。

如果它在以上两种情况下都能正常工作,就可以将生成模型中的样本添加到实际数据中并再次重新训练,获得更强的性能。要使此方法更加强大和灵活,请阅读后文第6项。

NVIDIA展示过一个很好的例子:他们用GAN去增加不同疾病下的脑部CT图像的数据集。在仅使用经典数据增强的情况下,系统有78.6%的灵敏度和88.4%的特异性;而通过增加合成数据的方法,灵敏度提升至85.7%、特异性提升至92.4%。

隐私保护

许多公司的数据机密而又敏感,例如公司的财务数据、病患的医疗数据等等。但是在某些情况下,有时我们需要与顾问或研究人员等第三方分享。

如果只想分享数据的大致情况,对数据的细节进行隐藏,我们可以利用生成模型来抽象数据,这样就能保护确切的机密数据。

对共享数据进行保密很困难。当然,我们有不同的加密方案,如同态加密,但它们有已知的缺点,例如在海量数据中隐藏少量数据比较困难(比如10GB代码中隐藏1MB信息)。

2016年,谷歌开辟了一条新研究路径,把GAN的竞争框架用到加密加密问题上,让两个网络在加密和解密中竞争来实现目的:

但它的优点不是处理数据的效率,或创造另一个领域的“AI”流行语。我们应该记住,通过神经网络获得的结果通常仍然包含有关输入数据最有用的信息,并且压缩后的数据仍然可以进行分类、回归、聚类或者其他操作。

如果我们将“压缩”替换为“加密”,那么我们就可以做到与第三方共享数据而不显示任何数据集的细节。

异常探测

主要生成模型有变分自动编码器(VAE)和生产对抗网络(GAN)两类,它们都由两部分构成。 VAE有编码器和解码器,分别用于建模和重建。 GAN由生成器和鉴别器组成,前者用于模拟分布,后者判断它是否接近训练数据。

我们可以看到,它们在某种程度上非常相似:都用有建模和判断部分(在VAE中我们可以认为重建是一种判断)。建模部分应该学习数据分布。

如果我们将一些不是来自训练分布的样本给模型做出判断,那么将会发生什么?训练有素的GAN鉴别器会输出个0,而VAE的重建误差将高于训练数据的平均值。我们的无监督异常探测器就有了,易于训练也易于评估。我们可以用一些”兴奋剂“来训练它,比如Wasserstein GAN所用的统计距离。

在本文中,你可以找到用于异常检测的GAN示例以及自动编码器。我还添加了自己用Keras写成基于自动编码器的粗略草图:

https://github.com/Rachnog/education/blob/master/anomaly/ae_anomaly.py

判别建模

深度学习所做的一切都是将输入数据映射到某个空间,在这个空间中,通过SVM或逻辑回归等简单的数学模型可以更容易地分离或解释。

生成模型也有自己的映射,让我们从VAE开始。 自动编码器将输入样本映射到一些有意义的潜在空间,基本上我们可以直接训练一些模型。这有什么意义?它和仅用编码器层和训练模型直接进行分类有什么不同吗?确实有。自动编码器的潜在空间是复杂的非线性降维,并且在变分自动编码器的情况下也是多变量分布,这可以比一些随机初始化更好地开始初始化训练判别模型。

GAN对于无任何输入只从随机种子生成样本的任务来说有点难度。但我们仍然可以至少开发两种针对这类任务的分类器。第一种,我们已经研究过,就是利用鉴别器将生成的样本分类,同时只是告诉它是真的还是假的。我们可以期望从获得的分类器来更好地规则化,并且可以分类溢出值/异常值:

第二种是贝叶斯定理的不公平遗忘分类方法,其中我们基于p(x | c_k)(恰好是条件GAN所做的)和先验p(x),p(c_k)给p(c_k | x)建模。这里的主要问题是GAN真的学习数据分布吗?在最近的一些研究中正在讨论该问题。

领域适配

对我来说,这是最强大的功能之一。 在实践中,我们训练模型所用的数据源,和它们在真实环境中运行的时候几乎不可能相同。

在计算机视觉中,不同的光线条件、相机设置或天气会使非常精确的模型无用。 在自然语言处理(NLP)和语音分析中,俚语或重音会破坏你在基于“语法正确”语言训练模型的表现。 在信号处理中,你很可能用完全不同的设备捕获数据,来训练和生成建模。

不过,这两种数据“类型”彼此非常相似。 我们知道机器学习模型执行从一个条件到另一个条件的映射,保留主要内容,但更改细节。 是的,我说的就是风格迁移,但不是为了艺术创作。

举个例子,例如某个处理闭路电视图像的应用,你训练的模型是建立在高分辨率图像的基础上时,那么你可以尝试用GAN处理图像去除噪点并对其增强。

我可以从信号处理领域举个更激进的例子:有很多与手机加速度计数据相关的数据,描述了不同人的活动。 但是,如果你想在智能手环上使用受过手机数据训练的模型,该怎么办? GAN可以尝试帮助你翻译不同类型的运动。

一般来说,一些预定义的先验模型可以帮助你进行进行领域适配、协方差转换以及处理其他数据中的差异问题。

数据操控

我们讨论过图像的风格迁移。如果我们仅仅是想改变照片中的鼻子呢?或者改变汽车的颜色,又或者是替换演讲中的某些词语而不是完全改变它,我们应该怎么办?

如果想做到这些,我们假定处理的对象包含有限的元素集合,以人脸为例,眼、鼻、口、头发等等元素都有自己的属性。

如果我们可以将照片的像素映射到五官,那么我们就可以调整五官的大小了吗? 有一些数学概念可以做到:自动编码器或许可以,GAN也能做到。

对抗训练

你可能不同意我添加关于机器学习模型攻击的段落,但它的确与生成模型(对抗性攻击算法确实非常简单)和对抗性算法(因为我们有一个模型与另一个模型竞争)有关。

也许你熟悉对抗性例子的概念:模型输入中的微小扰动(甚至可能只是图像中的一个像素)就会导致完全错误的表现。我们有一些方法来防止错误结果的发生,其中一个最基本的方法叫做对抗性训练:利用对抗性的例子来构建更准确的模型。

△ 模型中加入微小干扰,导致将熊猫错误识别为长臂猿

如果不深入细节,我们有这样一个双人游戏:对抗模型(只加入一些微小的扰动)需要最大化其影响力,并且分类模型需要最小化其损失。这看起来很像GAN,但它的目的不同:是为了让模型在面对对抗性攻击时更稳定,并通过某种智能数据增强和正规化提高其性能。

小结

GAN和其他一些生成模型主要用于生成图像、旋律或短文本,它的主要长期目标仍是生成以正确情况为条件的真实世界对象。但在本文中,我列举了几个例子,证明GAN还可以用来改进当前的AI、保护数据、发现异常等等。 我希望你会发现这些例子很有用,并将它用在你的项目中。

最后,附上文中项目实例地址:

”假“数据训练医学识别系统:
https://arxiv.org/pdf/1803.01229.pdf

对抗网络如何加密数据:
https://towardsdatascience.com/adversarial-neural-cryptography-can-solve-the-biggest-friction-point-in-modern-ai-cc13b337f969

用GAN做成的图片分类器:
https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e

图片风格转移项目:
https://ml4a.github.io/ml4a/style_transfer/

改变面部局部五官项目:
https://houxianxu.github.io/assets/project/dfcvae

微扰导致图像识别错误的案例:
https://blog.openai.com/adversarial-example-research/

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

活动策划招聘

量子位正在招聘活动策划,将负责不同领域维度的线上线下相关活动策划、执行。欢迎聪明靠谱的小伙伴加入,并希望你能有一些活动策划或运营的相关经验。相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

以为GAN只能“炮制假图”?它还有这7种另类用途相关推荐

  1. 让假图无所遁形,阿里篡改图像检测大赛集结号令打响

    近年来,伴随多媒体技术的迅速发展,图像安全隐患随之而来.一些不法分子通过伪造或恶意篡改证件.政府文件.转账记录截图等方式,不仅进行诈骗活动,还带来一些社会问题:2 月 10 日,广西柳州融水苗族自治县 ...

  2. 浅谈UML类图中类之间的5种关系

    什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...

  3. vue.js 引用背景图 background 无效的3种解决办法

    #vue.js项目中,出现css调用background背景图无效?如何解决? 或者调用<img>标签,也无效果? 直接上代码,自行对比查找一下: 效果图预览 1. 正确的代码,示例如下: ...

  4. 用旭日图展示数据的三种方法

    什么是旭日图? 旭日图(Sunburst Chart)是一种现代饼图,它超越传统的饼图和环图,能表达清晰的层级和归属关系,以父子层次结构来显示数据构成情况.旭日图中,离远点越近表示级别越高,相邻两层中 ...

  5. 今天的资料里有超实用的Excel图表模板,其中还包含了饼形图、条形图、仪表图、圆环图、折线图、柱形图等12种工作中常用图形~

    今天的资料里有超实用的Excel图表模板,其中还包含了饼形图.条形图.仪表图.圆环图.折线图.柱形图等12种工作中常用图形~

  6. 如何将视频转换成gif动态图?教你两种快速将视频转gif的方法

    如何将视频转换成gif动态图?gif动态图作为表情包的其中一种,相比传统静态表情包有更加生动形象的表达效果.然而在平时看电影或电视剧想将视频中有趣的桥段制作成gif动态图时该怎么办呢?接下来小编使用两 ...

  7. 怎样能让计算机桌面软件变小,win7系统桌面图标如何变小?win7系统把桌面图标变小的4种方法...

    win7系统桌面图标如何变小?有些用户升级win7系统后发现桌面图标很大,与之前xp系统有很大区别,看着不舒服,win7系统桌面图标如何变小?其实把桌面变小有很多方法,下面小编一一向大家win7系统把 ...

  8. 【C语言】20个阶梯,一次只能走1或2阶,有多少种走法

    [C语言]20个阶梯,一次只能走1或2阶,有多少种走法. /* 有20阶阶梯,一次只能上1或2阶阶梯,问有多少种走法的求解 *//* 分析:一阶阶梯的时候只有一种走法,两阶阶梯的时候有两种走法,三阶的 ...

  9. 用GAN也可以P图,效果还不输PS | 英伟达出品

    丰色 发自 凹非寺 量子位 报道 | 公众号 QbitAI 把人的眼睛变大.把闭着的嘴合上.转动眼珠: 质量如此逼真.一点糊图的痕迹都没出现-- 如果我不说,你知道这其实是GAN自己P的吗? 除了人脸 ...

最新文章

  1. python使用socket实现协议TCP长连接框架
  2. MOS管安全工作区SOA
  3. 数据库之关系模型的组成,特点以及完整性约束
  4. 2020-07-09 CVPR2020 VL论文讨论(4) 笔记
  5. 【NLP】文本生成?还不快上知识库
  6. zabbix监控ntpd服务
  7. python调用腾讯自然语言处理api
  8. linux二进制安装包制作,linux下二进制安装包的创建
  9. 计算机操作视频及运用方式,电脑上可以使用什么方法来编辑、制作视频?
  10. 服务器哪个位置插网线,服务器网线接线图
  11. Few-Shot Object Detection with Attention-RPN and Multi-Relation Detector 论文翻译
  12. RAID磁盘阵列与磁盘阵列卡
  13. rdlc和rdl的区别
  14. mysql CAPI与C++的交互
  15. linux find返回数据不一样,Linux学习笔记——find命令
  16. NOI 2016 游记
  17. Arduino超声波传感器使用
  18. Django组件拾忆
  19. 关于Red Hat Enterprise Linux Server 5 使用国内163 yum 源
  20. ios提醒事项和日历同步优化

热门文章

  1. “基因编辑婴儿”惹争议,那你知道机器学习在脱靶效应中的作用吗?
  2. Python 爬取 B 站数据分析,宋智孝李光洙谁最受中国粉丝喜爱
  3. mysql联合索引测试
  4. eplan加密狗已损坏_EPLAN Electric P8 仿真加密狗 error 1068 问题
  5. linux qt程序崩溃_【工程师分享】在MPSoC上运行基于eglfs_kms的QT应用程序
  6. linux tick异常变化,linux tickGet()
  7. 小程序Canvas原有接口不再维护
  8. 浏览器UI线程更新机制
  9. css列表大全,CSS中li列表样式汇总大全,全实例展示
  10. 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...