众所周知,监督学习模型需要在高质量的标注数据集上进行训练。然而,收集足够的高质量标注数据可能是一个重大挑战,尤其是在隐私和数据可用性是主要问题的情况下。幸运的是,这个问题可以通过合成数据得到缓解。合成数据是人工生成的,而不是从现实世界事件中收集的。这些数据可以用来增强真实数据,或者用作真实数据的替代品。它可以通过多种方式创建,包括使用统计数据、数据增强/计算机生成图像(CGI)或生成性人工智能,具体取决于使用案例。在这篇文章中,我们将探讨:
-
合成数据的价值
-
合成数据用于边缘案例
-
如何生成合成数据
1. 谷歌网络安全证书 - 快速入门网络安全职业。
2. 谷歌数据分析专业证书 - 提升你的数据分析技能
3. 谷歌 IT 支持专业证书 - 支持您的组织的 IT 需求
真实数据的问题导致了许多合成数据的使用案例,您可以在下面查看。
图片由 谷歌研究 提供
医疗数据通常具有隐私限制。例如,尽管将电子健康记录(EHR)纳入机器学习应用程序可能会改善患者结果,但在遵守如 HIPAA 这样的患者隐私规定的同时进行这样的操作是困难的。即使是数据匿名化技术也不完美。对此,谷歌的研究人员提出了 EHR-Safe,这是一个生成逼真且保护隐私的合成 EHR 的框架。
收集真实数据可能很危险。像自动驾驶汽车这样的机器人应用的核心问题之一是,它们是机器学习的物理应用。不安全的模型无法在现实世界中部署,因缺乏相关数据而导致崩溃。用合成数据增强数据集可以帮助模型避免这些问题。
标注医学图像对于训练机器学习模型至关重要。然而,每张图像都应由专家临床医生标注,这是一项耗时且昂贵的过程,并且常常受到严格的隐私法规的限制。合成数据可以通过生成大量标注图像而无需大量人工标注或妥协患者隐私来解决这一问题。
稀疏真实世界数据 KITTI(左)和 Parallel Domain 生成的合成数据(右)的光流标签。颜色表示流动的方向和幅度。图片由作者提供。
在自动驾驶中,估计视频帧之间的每像素运动(也称为光流)在真实数据中具有挑战性。真实数据标注只能通过使用 LiDAR 信息来估计物体的运动,无论是动态的还是静态的,基于自主车辆的轨迹。由于 LiDAR 扫描是稀疏的,极少数的公共光流数据集也很稀疏。这是一些光流合成数据已被证明能大幅提高光流任务性能的原因之一。
合成数据的一个常见用例是处理真实数据集中缺乏稀有类别和边缘情况的问题。在生成此用例的合成数据之前,请查看以下提示,以考虑需要生成什么内容以及需要生成多少。
了解数据集中包含哪些边缘情况是很重要的。这可能是医学图像中的罕见疾病,或自动驾驶中的普通动物和闯红灯者。还需要考虑数据集中缺少哪些边缘情况。如果模型需要识别数据集中不存在的边缘情况,可能需要额外的数据收集或合成数据生成。
合成数据应代表真实世界场景,具有最小的领域差距,即两个不同数据集之间的差异(例如,真实数据和合成数据)。这可以通过人工检查或使用基于真实数据训练的独立模型来完成。
监督学习的一个目标是建立一个在新数据上表现良好的模型。这就是为什么会有模型验证程序,如训练测试拆分。在用合成数据增强真实数据集时,数据可能需要根据稀有类别进行平衡。例如,在自动驾驶应用中,机器学习从业者可能会对使用合成数据关注特定的边缘情况,如斑马线行人感兴趣。原始的训练测试拆分可能没有按斑马线行人的数量进行拆分。在这种情况下,将大量现有的斑马线行人样本转移到测试集中,可能会使得合成数据的改进效果更易于衡量。
机器学习模型不应该学到合成数据主要是稀有类别和边缘情况。此外,当发现更多稀有类别和边缘情况时,可能需要生成更多合成数据以适应这种情况。
合成数据的一个主要优点是可以随时生成更多数据。它还具有已经被标记的好处。有许多生成合成数据的方法,选择哪一种取决于你的使用案例。
一种常见的统计方法是基于原始数据集的分布和变异性生成新数据。统计方法在数据集相对简单且变量之间的关系得到很好的理解并且可以用数学定义时效果最好。例如,如果真实数据具有像人类身高那样的正态分布,则可以使用原始数据集的相同均值和标准差来创建合成数据。
提高训练数据的多样性和数量的一种常见策略是通过修改现有数据来创建合成数据。数据增强在图像处理领域被广泛使用。这可能意味着翻转图像、裁剪图像或调整亮度。只要确保数据增强策略对相关项目有意义即可。例如,对于自动驾驶应用,将图像旋转 180 度,使得道路位于图像顶部而天空位于底部,这种做法是没有意义的。
Multiformer 推理在合成 SHIFT 数据集上的城市场景中进行。与其修改现有数据以用于自动驾驶应用,不如使用计算机生成图像(CGI)来精确生成各种图像或视频,这些图像或视频在现实世界中可能不易获得。这可以包括稀有或危险的场景、特定的光照条件或车辆类型。这种方法的一些缺点是创建高质量 CGI 需要大量计算资源、专业软件和技术团队。
一种常用的生成模型来创建合成数据是生成对抗网络(GANs)。GANs 包括两个网络,一个生成器和一个鉴别器,它们同时进行训练。生成器创建新样本,而鉴别器试图区分真实样本和生成样本。这些模型共同学习,生成器提高了创建真实数据的能力,鉴别器则变得更擅长检测合成数据。如果你想尝试用 PyTorch 实现 GAN,可以查看这篇 TDS 博客文章。
这些方法对复杂数据集效果很好,可以生成非常逼真、高质量的数据。然而,正如上图所示,控制生成对象的特定属性,如颜色、文本或大小,并非总是容易的。
如果一个项目没有足够的高质量和多样化的真实数据,合成数据可能是一个选择。毕竟,合成数据总是可以生成更多。这是现实数据和合成数据之间的一个主要区别,因为合成数据更容易改进!如果你对这篇博客文章有任何问题或想法,欢迎在下面的评论中留言或通过Twitter与我联系。
Michael Galarnyk**是乔治亚理工学院的机器学习博士生,专注于金融领域的机器学习。