关于合成数据您需要知道的一切
推出人工智能(AI)的企业在为其模型采集足够的数据方面会遇到一个主要障碍。对于许多用例来说,正确的数据根本不可用,或者获取数据非常困难且成本高昂。在创建AI模型时,数据缺失或不完整就无法满足需要,即使是大型科技公司在这方面也会难免失误。例如,研究人员在2018年发现,顶尖的面部识别软件可以很容易识别出白人男性的面孔,但在识别肤色较深的人时,错误率却高出34%。用于训练这些模型的数据在缺少一整个种群子集的代表。那么,在这种情况下,企业该何以应对?合成数据提供了一种令人信服的解决方案。 合成数据是通过计算机程序人工生成的数据,而不是由真实事件生成的数据。企业可以用合成数据来增强其训练数据,以填补所有潜在用例和边缘用例,节省数据采集费用,或满足隐私要求。随着计算能力的提高和云数据存储选项的崛起,合成数据比以往更容易获取。这无疑是一个积极的发展:合成数据推动了AI解决方案的开发,从而更好地为所有终端用户服务。
为什么要使用合成数据?
假设您有一个AI问题需要解决,您不确定是否应该投资于合成数据,用以部分或完全满足您的数据需求。以下是合成数据非常适合您的项目的若干原因:
改进模型的可靠性
无需采集更多数据,即可为您的模型获取更为多样化的数据。有了合成数据,您可以用同一个人的不同发型、面部毛发、佩戴不同的眼镜、不同的头部姿势等来训练您的模型,还能以肤色、种族特征、骨骼结构、雀斑等特征创造出不同的面孔,使该模型变得更加可靠。
比“真实”数据获取更快
团队可以在短时间内生成大量的合成数据。当真实数据依赖于很少发生的事件时,这一点尤其有帮助。例如,当为自动驾驶汽车采集数据时,由于极端路况比较罕见,团队可能难以捕获到足够的真实数据。 此外,数据科学家还可以设置算法,在合成数据创建时自动进行标注,从而减少标注过程的耗时。
边缘案例的解读
机器学习算法更喜欢均衡的数据集。回忆我们的面部识别示例。如果这些企业创造出肤色较深的面孔合成数据来填补数据缺口,那么不仅模型的精确度会提高(事实上,这正是其中几家企业所做的),而且还会生成更符合道德标准的模型。合成数据帮助团队涵盖所有用例,包括数据不足或根本不存在的边缘用例。
保护用户的私人数据
根据行业和数据类型的不同,企业在处理敏感数据时可能会面临安全挑战。例如,在医疗行业,患者数据通常包括个人健康信息(PHI),需要满足较高的安全性要求才能使用。合成数据可以减轻对隐私问题的担忧,因为它不涉及真人的信息。如果您的团队需要满足某些数据隐私要求,可以考虑将合成数据作为备选。
合成数据的应用场景
从业务角度来看,合成数据有许多应用:模型验证、模型训练、新产品测试数据等。一些行业已率先在机器学习中使用合成数据,我们将重点介绍其中的几个行业:
汽车
开发自动驾驶汽车的企业通常依靠模拟来测试性能。在某些条件下,例如极端天气的情况下,获取真实路况数据可能很困难或很危险。总体而言,在所有可能的驾驶体验中,有太多的变量需要考虑,所以不能依赖于在道路上使用真车进行现场测试。合成数据比人工采集数据更安全、更快捷。
医疗保健
由于数据的敏感性,医疗保健是采用合成数据的首选行业。团队可以利用合成数据捕获所有可能的患者类型的生理信息,最终帮助更快速、更准确地诊断疾病。其中一个生动的示例是Google的黑色素瘤检测模型,该模型使用肤色较深个体的合成数据(不幸的是,该领域的临床数据不足),使模型能够适用于所有皮肤类型。
安全
合成数据促进了组织安全性的提高。回到我们的面部识别示例,您可能听说过“深度伪造品(Deepfakes)”一词,它是指人工创建的图像或视频。企业可以创建深度伪造品来测试自己的安全系统和面部识别平台。 视频监控还利用合成数据以更低的成本和更快的速度训练模型。
数据可移植性
企业需要安全可靠的方法来与他人共享其训练数据。合成数据的另一个有趣的用例是在将数据集提供给其他人之前隐藏个人身份信息(PII)。这被称为隐私保护合成数据,可用于共享科学研究数据集、医学数据、社会学数据和可能包含PII的其他领域。
如何创建合成数据
团队可使用机器学习技术以编程方式创建合成数据。通常情况下,他们将使用一组样本数据来创建合成数据;合成数据必须保留样本数据的统计属性。合成数据本身可以是二进制、数字或分类数据。它应该是随机生成的,具有任意长度,并且足够可靠能覆盖所需的用例。有几种生成合成数据的技术;最常见的技术如下所述:
从分布数据中提取
如果您没有真实数据,但了解数据集分布情况,则可以按分布生成合成数据。在此技术中,您将生成任意分布(正态分布、指数分布等)的随机样本以创建假数据。
将真实数据与分布数据拟合
如果您确实有真实数据,您可以使用蒙特卡罗方法等技术来找到数据的最佳拟合分布,并使用它生成合成数据。
深度学习
深度学习模型可以生成合成数据。例如:
- 变分自编码器模型:这种无监督模型压缩初始数据集并将其发送至解码器,然后解码器输出该初始数据集的表示。
- 生成对抗网络(GAN)模型:GAN模型由两个网络组成。生成器接收样本数据集并输出合成数据。鉴别器将合成数据与真实数据集进行比较,并迭代微调。
结合使用上述方法可能是最有益的,具体取决于您开始使用的真实数据量和您使用合成数据的目的。
合成数据的未来
在过去的十年中,我们看到合成数据的使用速度大幅加快。虽然这为企业节省了时间和资金,但并非没有挑战。合成数据缺乏异常值,这些异常值自然出现在真实数据中,对于某些模型来说,异常值对于精确度至关重要。还需要注意的是,合成数据的质量通常取决于用于生成的输入数据;输入数据中存在的偏见很容易传播到合成数据中,因此不能低估使用高质量数据作为起点的重要性。最后,它需要额外的输出控制;也就是说,需要将合成数据与人工标注的真实数据进行比较,以确保不会出现不一致的情况。 尽管面临这些挑战,合成数据仍然是一个充满机遇、令人兴奋的领域。即使在无法获取真实数据的情况下,合成数据也能帮助我们生成创新的AI解决方案。最重要的是,合成数据能帮助企业创建更具包容性、更能代表终端用户多样性的产品。 来自澳鹏数据科学总监的专业洞察 请记住,合成数据是一种数据增强技术,它不能取代数据采集和标注。必须要认识到,如果没有任何真实数据,就无法创建在现实世界中运行出色的模型。您可能会涵盖大部分情况,但会出现许多模型将失效的边缘情况(例如,对于我们的人脸识别案例,可能会有一些罕见的光照条件、罕见的面部特征、整形手术等情况,您可能从未考虑过——如果您仅从合成数据开始,无论这些人脸有多么逼真,您都不会知道这些情况)。 除此之外,在创建和使用合成数据时,还需要注意以下几点:
- 了解模型的可靠性要求,以定义所需的合成数据:甚至在开始生成合成数据之前,您就希望弄清楚模型真正需要什么,并为需要合成数据类型创建一组功能需求。构建与已有数据类似的合成数据对于模型毫无用处。相反,您可能希望通过数据增强改善多样性(例如,人脸识别用例中具有不同面部特征的人脸)和变化(例如,同一人的轻微偏差)。您可能需要考虑一些罕见或边缘的情况,并在生成合成数据时优先考虑这些情况。另一种方法是从现实世界训练、验证和测试数据集预测的误报和漏报中得出合成数据的需求,以减少这些情况的发生。
- 了解合成数据可以为您的数据集和模型做什么,不能做什么:数据增强大大提高了模型的精确度,但并不会使模型达到完美。由于我们的合成数据分布接近我们知道的真实数据,因此它无法神奇地有效理解现实世界中产生的任何显著不同的数据,也无法创建训练数据无法引导它生成的预测或结果。我们还要考虑数据的来源和条件(例如,在ThisPersonDoesNotExist.com上生成的人脸是根据个人资料头像生成的。当天空阴云密布、房间光线很暗时,这些都无法帮助您的模型识别室内的图像)。
- 了解您可以使用的各种合成数据工具以及即将推出的工具:合成数据的常见方法是从现实世界克隆部分数据并叠加到另一个真实数据上,或者使用Unity或某些3D环境生成逼真的数据。但由于GAN和VAE技术的变化,这一领域正在快速发展。与其创建全新的数据,不如通过在真实数据基础上合成一些新组件(例如,在真实人脸上添加雀斑、改变阴影角度等)来创建现实世界数据的变体。另一个例子是,可以优化叠加的数据,使其更真实。还有许多其他工具可以使用,不过您需要首先了解它们。
- 数据的版本管理:当随着合成数据的生成,生成更好合成数据的能力也会增强。您上个月生成的图像现在可能会被更新版本的图像淘汰,后者看起来会更逼真(例如,您发现一种用于面部的更好的皮肤纹理,新的GPU可帮助您从光线跟踪中获得更细致的效果等)。您不会想用这些旧版本图像训练旧模型。版本管理将帮助您了解用新数据替换了哪些数据,并在您添加不同的合成数据或更新旧数据时验证模型的改进。
总之,您的合成数据可以提高模型在现实世界中的性能。您采取的任何方法或生成的数据都必须使您的模型更可靠,并有助于改善其性能。根据模型的不足之处明确定义模型的需求,将能帮助您集中精力选择合适的工具并生成正确的数据。