什么是合成数据?
合成数据是数据科学领域一个迅速发展的趋势和新兴的工具。合成数据到底是什么?简而言之,合成数据是由不基于任何真实世界现象或事件的数据组成的,而是通过计算机程序生成的。然而,为什么合成数据对数据科学如此重要?如何创建合成数据?让我们来探索这些问题的答案。
什么是合成数据集?
正如术语“合成”所暗示的那样,合成数据集是通过计算机程序生成的,而不是通过真实世界事件的文档来合成的。合成数据集的主要目的是具有足够的通用性和稳定性,以便对机器学习模型的训练有用。
为了对机器学习分类器有用,合成数据必须具有一定的性质。虽然数据可以是分类的、二进制的或数值的,但是数据集的长度应该是任意的,并且数据应该是随机生成的。用于生成数据的随机过程应该是可控的,并且基于各种统计分布。随机噪声也可以放在数据集中。
如果将合成数据用于分类算法,则分类分离的数量应该是可定制的,以便根据问题的要求使分类问题变得更容易或更难。同时,对于回归任务,可以使用非线性生成过程来生成数据。
为什么使用合成数据?
随着像TensorfFlow和Pythorch这样的机器学习框架变得更容易使用,计算机视觉和自然语言处理的预先设计的模型变得更加普遍和强大,数据科学家必须面对的首要问题是数据的收集和处理。公司通常很难在给定的时间范围内获取大量数据来训练精确的模型。手工标记数据是一种成本高、速度慢的获取数据的方法。然而,科学家们可以更快地开发出可靠的机器模型,并利用这些机器学习来帮助公司更快地生成数据。
使用合成数据有许多优点。使用合成数据有益于数据科学的最明显的方式是,它减少了从真实事件中获取数据的需要,因此,生成数据和构建数据集的速度比依赖于真实事件的数据集要快得多。这意味着可以在短时间内生成大量数据。对于很少发生的事件尤其如此,就好像一个事件很少在野外发生一样,可以从一些真实的数据样本中模拟出更多的数据。除此之外,数据可以在生成时自动标记,大大减少了标记数据所需的时间。
合成数据还可以用于获取边缘情况的训练数据,这些情况可能很少发生,但对人工智能的成功至关重要。边缘案例是与人工智能的主要目标非常相似但在重要方面有所不同的事件。例如,在设计图像分类器时,只有部分可见的对象可以被视为边缘情况。
最后,合成数据集可以最小化隐私问题。匿名化数据的尝试可能是无效的,因为即使敏感/识别变量从数据集中删除,其他变量在合并时也可以充当标识符。这不是合成数据的问题,因为它从不是基于真实的人或真实的事件。
综合数据使用案例
合成数据有着广泛的用途,因为它可以应用于几乎任何机器学习任务。合成数据的常见用例包括自动驾驶车辆、安全性、机器人技术、欺诈保护和医疗保健。
合成数据的最初使用案例之一是自动驾驶汽车,因为合成数据用于为汽车创建训练数据,这些数据在获取真实的道路训练数据困难或危险的情况下使用。合成数据对于创建用于训练图像识别系统(如监视系统)的数据也很有用,这比手动收集和标记一堆训练数据要高效得多。使用传统的数据收集和训练方法,机器人系统的训练和开发速度会很慢。合成数据允许机器人公司通过模拟测试和设计机器人系统。欺诈保护系统可以从合成数据中获益,新的欺诈检测方法可以通过使用合成数据时不断更新的数据进行培训和测试。在医疗保健领域,合成数据可用于设计准确的健康分类器,同时保护人们的隐私,因为这些数据不会基于真实的人。
合成数据挑战
合成数据的使用带来了许多好处,但也带来了许多挑战。
当合成数据被创建时,它通常缺少离群值。异常值自然地出现在数据中,虽然经常从训练数据集中删除,但它们的存在对于训练真正可靠的机器学习模型是必要的。除此之外,合成数据的质量可能会有很大的变化。合成数据通常是用输入或种子数据生成的,因此数据的质量取决于输入数据的质量。如果用来生成合成数据的数据是有偏差的,那么生成的数据会使这种偏差永久化。合成数据还需要某种形式的输出/质量控制。它需要与人工注释的数据进行核对,否则真实的数据是某种形式的。
如何创建合成数据?
合成数据是用机器学习技术以编程方式创建的。可以使用决策树等经典机器学习技术,也可以使用深度学习技术。对合成数据的需求将影响生成数据所使用的算法类型。决策树和类似的机器学习模型使公司能够创建非经典的、多模式的数据分布,并根据实际数据的例子进行训练。使用这些算法生成的数据将提供与原始训练数据高度相关的数据。对于已知数据典型分布的情况,公司可以通过使用蒙特卡罗方法生成合成数据。
基于深度学习的合成数据生成方法通常使用变分自动编码器(VAE)或生成对抗网络(GAN)。vae是利用编码器和解码器的无监督机器学习模型。VAE的编码器部分负责将数据压缩成原始数据集的一个更简单、紧凑的版本,然后由解码器分析并使用它来生成基本数据的a表示。VAE的训练目标是在输入数据和输出数据之间建立一个最佳关系,在这种关系中输入数据和输出数据非常相似。
当谈到GAN模型时,它们被称为“对抗性”网络,因为事实上GANs实际上是两个相互竞争的网络。生成器负责生成合成数据,而第二个网络(鉴别器)则通过将生成的数据与真实数据集进行比较来操作,并尝试确定哪些数据是假的。当鉴别器捕获到假数据时,生成器会收到通知,并进行更改,尝试由鉴别器获取新的一批数据。