七个不容易被发现的生成对抗网络(GAN)用例

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 惊了!GAN(生成对抗网络)还可以这样用?

37faa92fac5fd00aeac120c2a99d0eb5c1ed3797

多追随AI发展的人一样,我无法忽略生成建模的最新进展,尤其是图像生成中生成对抗网络(GAN)的巨大成功。看看下面本:它与真照片几乎没有区

c06de47b5f07df54ff9c85c2b6912e211470ca17

2014年到2018年,面部生成的展也非常显着

果让我感到兴奋,但我内心怀疑它是否真的有用且广泛适用。基本上我怀疑,凭借生成模型的所有功能,我并没有真正将它用于比高分辨率面部表情生成这些更用的西。当然,有些企可以直接基于像生成或移(如游中的角色生成或关卡生成,从真照片到像的转换),但我一直在GAN和其他生成方式更多域模型的用。我想通生成模型,我可以生成像,可以生成文本声音构化数据,如关卡药物分子

c1bdee622de7514a53d3e9686fd5fddf3501f4e9

使用RNN生成游戏人物

在本文中,我将介绍7个用例。其中一些我已经亲自确认它们的用处,其他一些正在研究中,但这并不意味着它们不值得尝试。所有这些使用生成模型创建的例子都可以应用于不同的领域,因为我们的主要目标不是生成一些现实的东西,而是利用神经网络的内在知识来完成新任务。

1.数据增强

最明显的应用是训练模型:从我们的数据生成新样本以增强我们的数据集。我们如何检查这种增强是否真的有帮助呢?有两个主要策略:我们可以在“假”数据上训练我们的模型,并检查它在真实样本上的表现。对应的我们在实际数据上训练我们的模型来做一些分类任务,并且检查它对生成的数据的执行情况。如果它在两种情况下都能正常工作,你可以随意将生成模型中的样本添加到你的实际数据中并再次重新训练,你应该期望获得性能。

NVIDIA展示了这种方法的惊人实例:他们使用GAN来增加具有不同疾病的医学脑CT图像的数据集,并且表明仅使用经典数据的分类性能是78.6%的灵敏度和88.4%的特异性。通过添加合成数据增强,可以增加到85.7%的灵敏度和92.4%的特异性。

ff4aeaaf64f753cda3835692d673640ba9e480aa

https://arxiv.org/pdf/1803.01229.pdf

2.隐私保护

许多公司的数据可能是秘密的,敏感的(包含患者诊断的医疗数据),但有时我们需要与顾问或研究人员等第三方分享。如果我们只想分享关于我们的数据的一般信息,包括最重要的模式,对象的细节和形状,我们可以使用生成模型来抽样我们的数据示例以与其他人分享。这样我们就不会分享任何确切的机密数据,只是看起来完全像它的东西。

更困难的情况是我们想要秘密共享数据。当然,我们有不同的加密方案,如同态加密,但它们有已知的缺点,例如在10GB代码中隐藏1MB信息。2016年,谷歌开辟了一条关于使用GAN竞争框架加密问题的新研究路径,其中两个网络必须竞争创建代码并破解它:

032e212e64e7d76bb2fab5416bbab1fc8859e87c

但最好的结果不是获得的代码效率,我们应该记住,通过神经网络获得的表示通常包含有关输入数据的最有用的信息,并且从这个压缩数据我们仍然可以进行分类/回归/聚类。如果我们将“压缩”替换为“加密”,那么这个想法很明确:这是与第三方共享数据而不显示任何数据集的惊人方式。它比匿名甚至假样本生成强得多,可能是下一件大事(当然使用区块链)

3.异常检测

变分自动编码器(VAE)或GAN等主要生成模型由两部分组成。VAE具有编码器和解码器,其中第一个对分布进行建模,第二个重建。GAN由生成器和鉴别器组成,第一个模拟分布,第二个判断它是否接近训练数据。我们可以看到,它们在某种程度上非常相似:有建模和判断部分(在VAE中我们可以考虑将重建视为某种判断),建模部分应该学习数据分布。如果我们将一些不是来自训练样本分发,那么判断部分将会发生什么?训练有素的GAN鉴别器会告诉我们0,并且VAE的重建误差将高于训练数据的平均值。这就是我们接下来要说的:无监督异常探测器,它易于训练和评估。在本文中你可以找到例子是用于异常检测,这里可以找到自动编码的。我还添加了自己的基于自动编码器的粗略草图——用于在Keras中编写的时间序列。

4.性建模

深度学习所做的一切都是将输入数据映射到某个空间,在这个空间中,通过SVM或逻辑回归等简单的数学模型可以更容易地分离或解释。生成模型也有自己的映射,我们从VAE开始。Autoencoders将输入样本映射到一些有意义的潜在空间,基本上我们可以直接训练一些模型。它有意义吗?它是否与仅使用编码器层和训练模型直接进行分类有所不同?确实是。自动编码器的潜在空间是复杂的非线性降维,并且在变分自动编码器的情况下也是多变量分布,这可以比一些随机初始化更好地开始训练判别模型。

GAN对于其他任务来说有点难度。它们被设计为从随机种子生成样本,并且不期望任何输入。但我们仍然可以至少以两种方式利用它们作为分类器,第一个已经研究过的,就是利用鉴别器将生成的样本分类到不同的类别,同时只是告诉它是真的还是假的。我们可以期望从获得的分类器更好地规则化(因为它已经看到不同类型的噪声和输入数据的扰动)并且具有用于异常值/异常的额外类:

e4c9989e75a82277caa0d0d3c229dfa139389f0c

5.域迁移(Domain adaptation)

我认为,这是最强大的用处之一。在实践中,我们几乎从未拥有相同的数据源来训练模型并在现实世界环境中运行它们。在计算机视觉中,不同的光线条件、相机设置或天气可以使非常准确的模型变得无用。在NLP/语音分析中,俚语或重音会破坏你在“语法正确”上训练的模型的表现。在信号处理中,你很可能拥有完全不同的设备来捕获数据以训练模型和生产。我们知道机器学习模型执行是从一个条件到另一个条件的映射,保留主要内容,但要更改细节。

d10d2c2d3dbac45635f9576da48bcb5c7dcd13cf

例如,如果你正在处理应该在某种CCTV摄像机上工作的应用程序,但是你已经在高分辨率图像上训练了你的模型,那么你可以尝试使用GAN来对图像进行去噪处理并对其进行增强。我可以从信号处理领域提供更激进的例子:有很多与手机加速度计数据相关的数据集,描述了不同的人的活动。但是,如果你想在腕带上应用受过手机数据训练的模型,该怎么办?GAN可以尝试帮助你还原不同类型的动作。一般来说,生成模型不是从噪声中进行生成,而是一些预定义的先验模型可以帮助你进行域迁移,协方差转换以及与数据差异相关的其他问题。

6.数据

我们在前一段谈到了风格转移。我不喜欢的是它的映射函数适用于整个输入,如果我只想换一些照片的鼻子怎么办?或改变汽车的颜色?或者在不完全改变的情况下替换演讲中的某些单词?如果我们想要这样做,那么我们的对象就需用一些有限的因子来描述,例如,脸是眼睛,鼻子,头发,嘴唇等的组合,这些因素有它们自己的属性如颜色、大小等。如果我们可以将带有照片的像素映射到某些...我们可以调整这些因素并使鼻子更大或更小?有一些数学概念允许它:多样性假设,对我们来说好消息是,自动编码器可能实现。

aea2c57357d0e72ad64326e16e02fb392f139c80

7.对抗训练(Adversarial training)

你可能不同意我添加关于机器学习模型攻击的文字,但它对生成模型(对抗性攻击算法确实非常简单)和对抗性算法影响很大。也许你熟悉对抗性例子的概念:模型输入中的小扰动(甚至可能是图像中的一个像素)导致完全错误的性能。其中一个最基本的方法叫做对抗性训练:基本上是利用对抗性的例子来构建更准确的模型。

4d7557c2fb9d6ecfb5d730982700c1503d2c59b9

如果不深入细节,这意味着我们需要双人游戏:对抗模型需要最大化其影响力,并且存在需要最小化其损失的分类模型。看起来很像GAN,但出于不同的目的:使模型对对抗性攻击更稳定,并通过某种智能数据增强和正规化提高其性能。

在本文中,我们已经介绍了几个例子,说明GAN和其他一些生成模型如何用于生成漂亮的图像,旋律或短文本。当然,他们的主要长期目标是生成以正确情况为条件的真实世界对象,但今天我们可以利用他们的分布建模和学习有用的表示来改进我们当前的AI、保护我们的数据、发现异常或适应更多现实世界的案例。我希望你会发现它们很有用,并将适用于你的项目。

本文由阿里云云栖社区组织翻译。

文章原标题《gans-beyond-generation-7-alternative-use-cases》

作者:Alexandr Honchar 译者:虎说八道,审校:。

文章为简译,更为详细的内容,请查看原文

相关文章
|
4月前
|
机器学习/深度学习 API 算法框架/工具
【Tensorflow+keras】Keras API两种训练GAN网络的方式
使用Keras API以两种不同方式训练条件生成对抗网络(CGAN)的示例代码:一种是使用train_on_batch方法,另一种是使用tf.GradientTape进行自定义训练循环。
48 5
|
4月前
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类
文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。
73 0
|
6月前
|
机器学习/深度学习 自然语言处理 算法
生成对抗网络(GAN):创造与竞争的艺术
【6月更文挑战第14天】**生成对抗网络(GANs)**是深度学习中的亮点,由生成器和判别器两部分构成,通过博弈式训练实现数据生成。GAN已应用于图像生成、修复、自然语言处理和音频生成等领域,但还面临训练不稳定性、可解释性差和计算资源需求高等挑战。未来,随着技术发展,GAN有望克服这些问题并在更多领域发挥潜力。
|
5月前
|
机器学习/深度学习 PyTorch API
生成对抗网络(GAN)由两部分组成:生成器(Generator)和判别器(Discriminator)。
生成对抗网络(GAN)由两部分组成:生成器(Generator)和判别器(Discriminator)。
|
7月前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
157 3
|
7月前
|
机器学习/深度学习 JavaScript 算法
深度学习500问——Chapter07:生成对抗网络(GAN)(1)
深度学习500问——Chapter07:生成对抗网络(GAN)(1)
133 3
|
7月前
|
机器学习/深度学习 人工智能 编解码
【AI 生成式】生成对抗网络 (GAN) 的概念
【5月更文挑战第4天】【AI 生成式】生成对抗网络 (GAN) 的概念
【AI 生成式】生成对抗网络 (GAN) 的概念
|
7月前
|
机器学习/深度学习
GAN网络的代码实现(学习ing)
GAN网络的代码实现(学习ing)
|
7月前
|
机器学习/深度学习 编解码 自然语言处理
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
深度学习500问——Chapter07:生成对抗网络(GAN)(3)
101 0
|
7月前
|
机器学习/深度学习 JavaScript Linux
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
深度学习500问——Chapter07:生成对抗网络(GAN)(2)
111 0