嗨,大家好!
像许多追随AI进展的人一样,我无法忽略生成建模的最新进展,尤其是图像生成中生成对抗网络(GAN)的巨大成功。看看这些样本:它们与真实照片几乎没有区别!
Samples from BigGAN: https://openreview.net/pdf?id=B1xsqj09Fm
从2014年到2018年,面部生成的进展也非常显着:
我对这些结果感到非常兴奋,但我内心的怀疑论者总是怀疑它们是否真的有用且广泛适用。我已经在我的Facebook笔记中打开了这个问题:
我们将以合成不是主要目标的示例来限制我们。
使用RNN生成游戏级别
7个替代用例。其中一些我已经亲自工作并且可以确认它们的用处,其他一些正在研究中,但这并不意味着它们不值得尝试。所有这些使用生成模型不一定用于创建的例子都可以应用于不同的领域和不同的数据,因为我们的主要目标不是生成一些现实的东西,而是利用神经网络的内在知识来完成新任务。
1.数据增加
也许最明显的应用可以是训练模型以从我们的数据生成新样本以增强我们的数据集。我们如何检查这种增强是否真的有帮助呢?那么,有两个主要策略:我们可以在“假”数据上训练我们的模型,并检查它在真实样本上的表现。相反:我们在实际数据上训练我们的模型来做一些分类任务,并且只有在检查它对生成的数据的执行情况之后(GAN粉丝可以在这里识别初始分数)。如果它在两种情况下都能正常工作 - 您可以随意将生成模型中的样本添加到您的实际数据中并再次重新训练 - 您应该期望获得性能。要使此方法更加强大和灵活,请检查应用程序#6。
惊人实例:他们使用GAN来增加具有不同疾病的医学脑CT图像的数据集,并且表明仅使用经典数据增强的分类性能产生78.6%的灵敏度和88.4%的特异性。通过添加合成数据增加,结果增加到85.7%的灵敏度和92.4%的特异性。
2.隐私保护
许多公司的数据可能是秘密的(如赚钱的财务数据),机密或敏感(包含患者诊断的医疗数据)。但有时我们需要与顾问或研究人员等第三方分享。如果我们只想分享关于我们的数据的一般概念,包括最重要的模式,对象的细节和形状,我们可以像前一段一样直接使用生成模型来抽样我们的数据示例以与其他人分享。这样我们就不会分享任何确切的机密数据,只是看起来完全像它的东西。
的新研究路径,其中两个网络必须竞争创建代码并破解它:
Numerai一样)
3.异常检测
这里自动编码的。我还添加了自己的基于自动编码器的粗略草图,用于在Keras中编写的时间序列:
4.判别性建模
深度学习所做的一切都是将输入数据映射到某个空间,在这个空间中,通过SVM或逻辑回归等简单的数学模型可以更容易地分离或解释。生成模型也有自己的映射,让我们从VAE开始。Autoencoders将输入样本映射到一些有意义的潜在空间,基本上我们可以直接训练一些模型。它有意义吗?它是否与仅使用编码器层和训练模型直接进行分类有所不同?确实是。自动编码器的潜在空间是复杂的非线性降维,并且在变分自动编码器的情况下也是多变量分布,这可以比一些随机初始化更好地开始初始化训练判别模型。
GAN对于其他任务来说有点难度。它们被设计为从随机种子生成样本,并且不期望任何输入。但我们仍然可以至少以两种方式利用它们作为分类器。第一个已经研究过的,就是利用鉴别器将生成的样本分类到不同的类别,同时只是告诉它是真的还是假的。我们可以期望从获得的分类器更好地规则化(因为它已经看到不同类型的噪声和输入数据的扰动)并且具有用于异常值/异常的额外类:
https://towardsdatascience.com/semi-supervised-learning-with-gans-9f3cb128c5e
研究中正在讨论它。
5.域适应
对我来说,这是最强大的之一。在实践中,我们几乎从未拥有相同的数据源来训练模型并在现实世界环境中运行它们。在计算机视觉中,不同的光线条件,相机设置或天气可以使甚至非常准确的模型无用。在NLP /语音分析中,俚语或重音会破坏您的模型在“语法正确”语言上训练的表现。在信号处理中,您很可能拥有完全不同的设备来捕获数据以训练模型和生产。但我们也注意到两种数据“类型”彼此非常相似。我们知道机器学习模型执行从一个条件到另一个条件的映射,保留主要内容,但更改细节。是的,我现在正在进行风格转移,但用于创作目的较少。
https://ml4a.github.io/ml4a/style_transfer/
增强。我可以从信号处理领域提供更激进的例子:有很多与手机加速度计数据相关的数据集,描述了不同的人的活动。但是,如果您想在腕带上应用受过电话数据训练的模型,该怎么办?GAN可以尝试帮助您翻译不同类型的动作。一般来说,生成模型不是从噪声中进行生成,而是一些预定义的先验模型可以帮助您进行域适应,协方差转换以及与数据差异相关的其他问题。
6.数据处理
我们在前一段谈到了风格转移。我真正不喜欢的是它的映射函数适用于整个输入并改变它。如果我只想换一些照片的鼻子怎么办?或改变汽车的颜色?或者在不完全改变的情况下替换演讲中的某些单词?如果我们想要这样做,我们已经假设,我们的对象可以用一些有限的因素来描述,例如,脸是眼睛,鼻子,头发,嘴唇等的组合,这些因素有它们自己的属性(颜色) ,大小等)。如果我们可以将带有照片的像素映射到某些...我们可以调整这些因素并使鼻子更大或更小?有一些数学概念允许它:多样性假设和解开的表示。对我们来说好消息是,自动编码器,可能是
7.对抗训练
您可能不同意我添加关于攻击机器学习模型的段落,但它对生成模型(对抗性攻击算法确实非常简单)和对抗性算法(因为我们有一个模型与另一个模型竞争)做了一切。也许你熟悉对抗性例子的概念:模型输入中的小扰动(甚至可能是图像中的一个像素)导致完全错误的性能。有不同的方法来对抗它们,其中一个最基本的方法叫做对抗性训练:基本上是利用对抗性的例子来构建更准确的模型。
https://blog.openai.com/adversarial-example-research/
epsilon的输入扰动)需要最大化其影响力,并且存在需要最小化其损失的分类模型。看起来很像GAN,但出于不同的目的:使模型对对抗性攻击更稳定,并通过某种智能数据增强和正规化提高其性能。
小贴士
在本文中,我们已经看到了几个例子,说明GAN和其他一些生成模型如何用于生成漂亮的图像,旋律或短文本。当然,他们的主要长期目标是生成以正确情况为条件的真实世界对象,但今天我们可以利用他们的分布建模和学习有用的表示来改进我们当前的AI管道,保护我们的数据,发现异常或适应更多现实世界的案例。我希望你会发现它们很有用,并将适用于你的项目。敬请关注!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:对抗网络GAN的应用实例 - Python技术站