机器学习的数据合成-全-

机器学习的数据合成(全)

原文:annas-archive.org/md5/9d5ab593b867c3a47f27572d629020aa

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

机器学习(ML)使我们的生活变得更加便捷。我们无法想象没有基于 ML 的产品和服务的世界。ML 模型需要在大规模数据集上训练才能表现良好。然而,收集和标注真实数据成本极高、容易出错,且存在隐私问题,仅举几个缺点。合成数据是解决基于真实数据的 ML 解决方案的可行方案。

《机器学习合成数据》是一本独特的书籍,将帮助你掌握合成数据,旨在使你的学习之旅愉快。在这本书中,理论与良好实践相辅相成,提供前沿的支持!

本书帮助你克服真实数据问题并提高你的 ML 模型性能。它概述了合成数据生成的原理,并讨论了每种方法的优缺点。它揭示了合成数据的秘密,以及如何更好地利用它的最佳实践。

到这本书的结尾,你将掌握合成数据,并增加成为市场领导者的机会。它将使你能够跳板到一个更高级、更便宜、更高品质的数据源,让你为下一代机器学习(ML)做好准备,并领先于你的同行!

这本书面向的对象

如果你是一名希望克服 ML 中数据问题的 ML 从业者或研究人员,这本书正是为你而写的!它假设你具备基本的 ML 和 Python 编程知识(不超过这些!)。本书精心设计,旨在为你提供掌握 ML 合成数据的最佳指导。它从合成数据概念和算法逐步构建你的知识,到应用、案例研究和最佳实践。本书是该领域的先驱之作,为 ML 工程师、研究人员、公司和决策者提供前沿支持。

这本书涵盖的内容

第一章机器学习与数据需求,介绍了机器学习(ML)。你将了解基于非学习和基于学习解决方案之间的主要区别。然后,本章解释了为什么深度学习模型经常取得最先进的结果。随后,它简要介绍了训练过程是如何进行的,以及为什么在 ML 中需要大规模训练数据。

第二章标注真实数据,解释了为什么机器学习(ML)模型需要标注数据。你将了解为什么标注过程成本高昂、容易出错且存在偏见。同时,你将接触到许多机器学习任务的标注过程,例如图像分类、语义分割和实例分割。你将探索主要的标注问题。同时,你将理解为什么对于某些任务,如光流估计和深度估计,理想的地面真实值生成是不可能的或极其困难的。

第三章, 真实数据中的隐私问题,突出了真实数据中主要的隐私问题。它解释了为什么在医疗保健和金融等某些领域,隐私问题阻止我们使用大规模真实数据进行机器学习。它展示了在实践中缓解这些隐私问题的当前方法。此外,你将简要了解隐私保护机器学习。

第四章, 合成数据简介,定义了合成数据。它简要介绍了合成数据的发展历史。然后,它介绍了主要类型的合成数据以及基本的数据增强方法和技巧。

第五章, 合成数据作为解决方案,突出了合成数据的主要优势。在本章中,你将了解为什么合成数据是解决隐私问题的有希望解决方案。同时,你将了解如何配置合成数据生成方法以覆盖在现实世界中难以捕捉且成本高昂的罕见场景。

第六章, 利用模拟器和渲染引擎生成合成数据,介绍了一种使用模拟器和渲染引擎进行合成数据生成的知名方法。它描述了创建模拟器和自动生成标注合成数据的主要流程。在此之后,它突出了该领域的挑战和最前沿的研究,并简要讨论了两种用于合成数据生成的模拟器。

第七章, 探索生成对抗网络,介绍了生成对抗网络(GANs)及其发展历程。它解释了 GAN 的典型架构。随后,本章阐述了训练过程。它突出了 GAN 的一些优秀应用,包括图像生成和文本到图像的翻译。它还描述了几种 GAN 的变体:条件 GAN、CycleGAN、CTGAN、WGAN、WGAN-GP 和 f-GAN。此外,本章还通过一个实际案例研究和该领域最前沿的研究讨论来支撑。

第八章, 视频游戏作为合成数据来源,解释了为什么使用视频游戏进行合成数据生成。它突出了该领域的重大进展。它讨论了当前在这一方向的研究。同时,它探讨了利用这种方法进行合成数据生成所面临的挑战和机遇。

第九章, 探索合成数据的扩散模型,向您介绍扩散模型并突出这种合成数据生成方法的优缺点。它揭示了机会和挑战。本章通过讨论在实践中使用这种合成数据方法时的伦理问题和关注点而丰富。此外,本章还包含了对该主题最先进研究的回顾。

第十章, 案例研究 1 – 计算机视觉,向您介绍计算机视觉的众多工业应用。您将发现一些使用计算机视觉成功解决的问题。与此并行,您将掌握传统计算机视觉解决方案的主要问题。此外,您将探索并理解使用合成数据在实际中改进计算机视觉解决方案的引人深思的例子。

第十一章, 案例研究 2 – 自然语言处理,向您介绍合成数据是关键玩家的另一个领域。它突出了为什么自然语言处理NLP)模型需要大规模训练数据才能收敛。它展示了在 NLP 领域使用合成数据的例子。它解释了基于真实数据的优缺点。同时,它展示了为什么合成数据是 NLP 的未来。它通过提出研究界和工业界的例子来支持这一讨论。

第十二章, 案例研究 3 – 预测分析,介绍了合成数据最近被用作另一个领域的另一个领域,即预测分析。它突出了基于真实数据的解决方案的缺点。它通过提供行业中的例子来支持这一讨论。在此之后,它阐明了在预测分析领域使用合成数据的益处。

第十三章, 应用合成数据的最佳实践,解释了一些限制合成数据可用性的基本领域特定问题。它对在生成和使用合成数据时经常出现的问题给出了一般性评论。然后,它介绍了一系列在实际中提高合成数据可用性的良好实践。

第十四章, 合成到真实域的适应,向您介绍了一个限制合成数据可用性的知名问题,即域差距问题。它代表了填补这一差距的各种方法。同时,它展示了合成到真实域适应的当前最先进研究。然后,它代表了在此背景下的挑战和问题。

第十五章合成数据中的多样性问题,介绍了合成数据领域另一个众所周知的问题,即生成多样化的合成数据集。它讨论了确保即使在大规模数据集中也能保持高度多样性的不同方法。然后,它突出了实现合成数据多样性的问题和挑战。

第十六章计算机视觉中的真实感,解释了在计算机视觉中需要真实感合成数据的原因。它突出了实现真实感的主要方法、其主要挑战和局限性。尽管本章侧重于计算机视觉,但讨论可以推广到其他领域,如医疗保健、机器人和自然语言处理。

第十七章结论,从高层次总结了本书。它提醒您基于真实数据的机器学习解决方案存在的问题。然后,它回顾了基于合成数据的解决方案的好处、挑战和未来展望。

为了充分利用本书

您需要在您的计算机上安装 PyCharm 版本——如果可能的话,是最新版本。所有代码示例都已在 Ubuntu 20.04.2 LTS 上使用 Python 3.8 和 PyCharm 2023.1(专业版)进行了测试。然而,它们也应该适用于未来的版本发布。

本书涵盖的软件/硬件 操作系统要求
Python 3.8+ Windows、macOS 或 Linux
PyCharm 2023.1

如果您正在使用本书的数字版,我们建议您亲自输入代码或从本书的 GitHub 仓库(下一节中有一个链接)获取代码。这样做将帮助您避免与代码复制和粘贴相关的任何潜在错误。

下载示例代码文件

您可以从 GitHub 下载本书的示例代码文件:github.com/PacktPublishing/Synthetic-Data-for-Machine-Learning。如果代码有更新,它将在 GitHub 仓库中更新。

我们还有来自我们丰富的图书和视频目录的其他代码包,可在github.com/PacktPublishing/找到。查看它们吧!

使用的约定

本书使用了多种文本约定。

文本中的代码:表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter(现在,X)用户名。以下是一个示例:“请注意,seed参数将帮助我们在这个示例中获得多样化的图像。”

代码块设置如下:

//Example of Non-learning AI (My AI Doctor!)
Patient.age //get the patient's age
Patient. temperature //get the patient's temperature
Patient.night_sweats //get if the patient has night sweats
Paitent.Cough //get if the patient coughs

小贴士或重要提示

看起来像这样。

联系我们

我们始终欢迎读者的反馈。

一般反馈: 如果你对本书的任何方面有疑问,请通过客户关怀@packtpub.com 给我们发邮件,并在邮件主题中提及书名。

勘误: 尽管我们已经尽一切努力确保内容的准确性,但错误仍然可能发生。如果你在这本书中发现了错误,我们将不胜感激,如果你能向我们报告这一点。请访问www.packtpub.com/support/errata并填写表格。

盗版: 如果你在互联网上以任何形式遇到我们作品的非法副本,如果你能提供位置地址或网站名称,我们将不胜感激。请通过版权@packtpub.com 与我们联系,并提供材料的链接。

如果你有兴趣成为作者:如果你在某个领域有专业知识,并且你有兴趣撰写或为书籍做出贡献,请访问authors.packtpub.com

分享你的想法

一旦你阅读了《机器学习中的合成数据》,我们很乐意听听你的想法!请点击此处直接进入此书的亚马逊评论页面并分享你的反馈。

你的评论对我们和科技社区都很重要,并将帮助我们确保我们提供高质量的内容。

下载此书的免费 PDF 副本

感谢您购买此书!

你喜欢在旅途中阅读,但无法随身携带你的印刷书籍吗?

你的电子书购买是否与你的选择设备不兼容?

别担心,现在,随着每本 Packt 书籍,你都可以免费获得该书的 DRM 免费 PDF 版本。

在任何地方、任何设备上阅读。直接从你最喜欢的技术书籍中搜索、复制和粘贴代码到你的应用程序中。

优惠远不止这些,你还可以获得独家折扣、时事通讯和每日免费内容的每日电子邮件。

按照以下简单步骤获取福利:

  1. 扫描二维码或访问以下链接

https://packt.link/free-ebook/9781803245409

  1. 提交您的购买证明

  2. 就这些!我们将直接将你的免费 PDF 和其他福利发送到你的邮箱。

第一部分:真实数据问题、局限性和挑战

在这部分,你将开始一段全面的旅程,深入机器学习ML)。你将了解为什么 ML 如此强大。训练过程和大规模标注数据的必要性将被探讨。你将研究标注真实数据的主要问题,并了解为什么标注过程成本高昂、易出错且存在偏见。在此之后,你将深入研究机器学习中的隐私问题以及隐私保护机器学习解决方案。

本部分包含以下章节:

  • 第一章机器学习与数据需求

  • 第二章标注真实数据

  • 第三章, 真实数据中的隐私问题

第一章:机器学习和数据需求

机器学习ML)是人工智能AI)的瑰宝,它永远地改变了我们的生活。我们无法想象没有 ML 工具和服务(如 Siri、Tesla 等)的日常生活。

在本章中,您将了解机器学习(ML)。您将理解非学习型解决方案与基于学习型解决方案之间的主要区别。然后,您将了解到为什么深度学习DL)模型通常能取得最先进的结果。在此之后,您将简要了解训练过程是如何进行的,以及为什么在机器学习中需要大规模的训练数据。

在本章中,我们将涵盖以下主要主题:

  • 人工智能、机器学习和深度学习

  • 为什么机器学习和深度学习如此强大?

  • 训练机器学习模型

技术要求

本章中使用的任何代码都将可在本书 GitHub 仓库的相应章节文件夹中找到:github.com/PacktPublishing/Synthetic-Data-for-Machine-Learning

我们将使用PyTorch,这是一个由 Meta AI 开发的强大机器学习框架。

人工智能、机器学习和深度学习

在本节中,我们将学习机器学习究竟是什么。我们将学习区分学习和非学习人工智能。然而,在那之前,我们将先介绍人工智能、机器学习和深度学习。

人工智能(AI)

人工智能有各种各样的定义。然而,其中最好的一个是约翰·麦卡锡的定义。麦卡锡是第一个在 1956 年达特茅斯会议上的一项提案中提出“人工智能”这一术语的人。他通过诸如 Lisp 编程语言、效用计算和分时等许多重大贡献来勾勒出这一领域的轮廓。根据人工智能之父在《什么是人工智能?》(www-formal.stanford.edu/jmc/whatisai.pdf)中的说法:

它是制造智能机器的科学和工程,特别是智能计算机程序。它与使用计算机理解人类智能的类似任务相关,但人工智能不必局限于生物可观察的方法。

人工智能是关于使计算机、程序、机器或其他事物模仿或模拟人类智能的学科。作为人类,我们感知世界,这是一个非常复杂的任务,我们推理、归纳、规划和与周围环境互动。尽管在童年几年内掌握这些任务令人着迷,但我们的智能最有趣的一面是能够通过经验改进学习过程并优化性能!

不幸的是,我们对自己大脑、智能以及其他相关功能(如视觉和推理)的了解仍然非常有限。因此,在文明和书写历史中,创建“智能”机器的旅程才刚刚开始。人工智能最繁荣的方向之一就是基于学习的 AI。

AI 可以被视为一个涵盖两种智能的伞状概念:学习和非学习 AI。区分随着经验提高的 AI 和不提高的 AI 非常重要!

例如,假设你想使用 AI 来提高医生识别某种疾病准确性的能力,给定一组症状。你可以通过询问领域专家(资深医生)来创建一个基于一些通用案例的简单推荐系统。以下代码块展示了这样一个系统的伪代码:

//Example of Non-learning AI (My AI Doctor!)
Patient.age //get the patient age
Patient. temperature //get the patient temperature
Patient.night_sweats //get if the patient has night sweats
Paitent.Cough //get if the patient cough
// AI program starts
if Patient.age > 70:
    if Patient.temperature > 39 and Paitent.Cough:
        print("Recommend Disease A")
        return
elif Patient.age < 10:
    if Patient.tempreture > 37 and not Paitent.Cough:
        if Patient.night_sweats:
                print("Recommend Disease B")
                return
else:
    print("I cannot resolve this case!")
    return

这个程序模拟了医生可能对类似场景进行推理的方式。通过使用简单的if-else语句和几行代码,我们可以给我们的程序带来“智能”。

重要提示

这是一个非学习型 AI 的例子。正如你所预期的那样,程序不会随着经验的积累而进化。换句话说,逻辑不会因为更多的患者而提高,尽管程序仍然代表了一种清晰的 AI 形式。

在本节中,我们了解了 AI,并探讨了如何区分基于学习和非学习型 AI。在下一节中,我们将探讨 ML。

机器学习(ML)

ML 是 AI 的一个子集。ML 的关键思想是使计算机程序能够从经验中学习。目标是让程序能够在不依赖人类制定规则的情况下学习。在前一节中我们看到的 AI 医生例子中,主要问题是创建规则。这个过程非常困难、耗时且容易出错。为了让程序正常工作,你需要让经验丰富的/资深医生表达他们通常用来处理类似患者的逻辑。在其他情况下,我们并不知道确切的规则以及涉及的过程机制,例如物体识别和物体跟踪。

ML 通过探索为这项任务收集的特殊训练数据来学习控制过程的规则(参见图 1**.1):

图 1.1 – ML 从数据中学习隐含规则

图 1.1 – ML 从数据中学习隐含规则

ML 有三种主要类型:监督学习无监督学习强化学习。它们之间的主要区别来自于所使用的训练数据的性质和学习过程本身。这通常与问题和可用的训练数据有关。

深度学习(DL)

深度学习是机器学习的一个子集,它可以被视为机器学习的核心(见图 1.2)。大多数机器学习的惊人应用都是由于深度学习才成为可能的。深度学习通过使用由多层或太多层(10 层或更多)组成的人工神经网络(ANNs)来学习并发现训练数据中的复杂模式和结构,这些模式和结构通常难以使用其他机器学习方法(如决策树)来完成。深度学习通过模仿人脑的灵感,使用人工神经网络(ANNs)进行学习;因此,名字中的“神经”。它有三种类型的层:输入层、输出层和隐藏层。输入层接收输入,而输出层给出 ANN 的预测。隐藏层负责发现训练数据中的隐藏模式。一般来说,每一层(从输入层到输出层)都会学习数据的一个更抽象的表示,前提是前一层给出了输出。你的 ANN 有越多的隐藏层,ANN 就越复杂和非线性。因此,ANN 将有更多的自由度来更好地逼近输入和输出之间的关系,或者学习你的训练数据。例如,AlexNet 由 8 层组成,VGGNet 由 16 到 19 层组成,ResNet-50 由 50 层组成:

图 1.2 – 深度学习、机器学习和人工智能之间的关系

图 1.2 – 深度学习、机器学习和人工智能之间的关系

深度学习的主要问题是它需要一个大规模的训练数据集才能收敛,因为我们通常有大量的参数(权重)需要调整以最小化损失。在机器学习中,损失是一种惩罚错误预测的方法。同时,它也是模型学习训练数据的良好指示。收集和注释如此大规模的数据集非常困难且成本高昂。

现在,使用合成数据作为真实数据的替代品或补充是一个热门话题。它在研究和行业中都是一个趋势话题。像谷歌(谷歌的 Waymo 利用合成数据来训练自动驾驶汽车)和微软(他们使用合成数据来处理敏感数据的隐私问题)这样的许多公司最近开始投资使用合成数据来训练下一代机器学习模型。

为什么机器学习和深度学习如此强大?

尽管最近大多数人工智能领域都在蓬勃发展并受到更多关注,但机器学习(ML)和深度学习(DL)一直是人工智能中最有影响力的领域。这是因为几个因素使它们在准确性、性能和适用性方面明显优于其他解决方案。在本节中,我们将探讨这些基本因素之一。

特征工程

在传统人工智能中,必须手动为任务设计特征。这个过程非常困难、耗时且与任务/问题相关。如果你想编写一个程序,比如识别汽车轮胎,你可能需要使用一些过滤器来提取边缘和角落。然后,你需要利用这些提取的特征来识别目标对象。正如你可能预料的,知道选择或忽略哪些特征并不总是容易。想象一下,在疫情初期,基于一组症状来预测患者是否患有 COVID-19 的基于人工智能的解决方案。当时,人类专家不知道如何回答这样的问题。机器学习和深度学习可以解决这样的问题。

深度学习模型通过学习训练数据中的隐藏模式、结构和关联来自动提取有用的特征。损失用于指导学习过程并帮助模型实现训练过程的目标。然而,为了使模型收敛,它需要接触到足够多样化的训练数据。

任务迁移

深度学习的一个显著优势是,与传统的机器学习方法相比,它更独立于任务。迁移学习是深度学习的一个神奇而强大的特性。你不需要从头开始训练模型,而是可以使用在类似任务上训练的不同模型开始训练过程。这在计算机视觉和自然语言处理等领域非常常见。通常,你有一个自己目标任务的小数据集,如果你的模型只使用这个小的数据集,那么它可能不会收敛。因此,在接近领域(或任务)但更加多样化、更大的数据集上训练模型,然后在特定任务的数据集上进行微调,可以得到更好的结果。这个想法允许你的模型在任务和领域之间迁移学习:

图 1.3 – 机器学习和深度学习的优势

图 1.3 – 机器学习和深度学习的优势

重要提示

如果问题简单或者有明确的数学解决方案,那么你可能不需要使用机器学习!不幸的是,对于已经有明确数学解决方案的问题,提出基于机器学习的解决方案是很常见的!同时,如果简单基于规则的解决方案已经足够解决你的问题,那么不建议使用机器学习。

训练机器学习模型

开发机器学习模型通常需要执行以下基本步骤:

  1. 收集数据。

  2. 标注数据。

  3. 设计机器学习模型。

  4. 训练模型。

  5. 测试模型。

这些步骤在以下图中展示:

图 1.4 – 开发机器学习模型过程

图 1.4 – 开发机器学习模型过程

现在,让我们更详细地看看每个步骤,以便更好地理解我们如何开发机器学习模型。

收集和标注数据

开发机器学习模型的过程中的第一步是收集所需的训练数据。你需要决定需要哪些训练数据:

  • 使用现有数据集进行训练:在这种情况下,不需要收集训练数据。因此,你可以跳过收集和标注数据。然而,你应该确保你的目标任务或领域与计划部署的可用数据集非常相似。否则,你的模型可能在数据集上训练得很好,但在测试新任务或领域时表现不佳。

  • 在现有数据集上训练并在新数据集上微调:这是当今机器学习中最常见的情况。你可以在一个大的现有数据集上预训练你的模型,然后在新数据集上对其进行微调。关于新数据集,它不需要非常大,因为你已经在利用其他现有的数据集。对于要收集的数据集,你需要确定模型需要学习什么,以及你计划如何实现这一点。在收集训练数据后,你将开始标注过程。

  • 在新数据上从头开始训练:在某些情况下,你的任务或领域可能远离任何可用的数据集。因此,你需要收集大规模数据。收集大规模数据集并不简单。为此,你需要确定模型将学习什么,以及你希望它如何做到这一点。对计划进行任何修改可能需要你重新收集更多数据,甚至可能需要从头开始重新开始数据收集过程。随后,你需要决定提取哪些真实值、预算以及你希望的质量。

接下来,我们将探讨机器学习模型开发过程中最基本的一个要素。那么,让我们学习如何设计和训练一个典型的机器学习模型。

设计和训练机器学习模型

为手头的问题选择合适的机器学习模型取决于问题本身、任何约束以及机器学习工程师。有时,同一个问题可以通过不同的机器学习算法来解决,但在其他情况下,使用特定的机器学习模型是强制性的。基于问题和机器学习模型,应该收集和标注数据。

每个机器学习算法都将有一组不同的超参数、各种设计和在整个过程中需要做出的决策。建议你进行试点或初步实验,以确定针对你问题的最佳方法。

当设计过程最终确定后,训练过程就可以开始了。对于某些机器学习模型,训练过程可能只需要几分钟,而对于其他模型,可能需要几周、几个月甚至更长时间!你可能需要执行不同的训练实验来决定你将继续使用哪些训练超参数——例如,训练轮数或优化技术。通常,损失函数将是一个有助于判断训练过程进行得如何的有用指标。在深度学习中,使用了两种损失函数:训练损失和验证损失。前者告诉我们模型学习训练数据的效果如何,而后者描述了模型泛化到新数据的能力。

验证和测试机器学习模型

在机器学习中,我们应该区分三个不同的数据集/分区/集合:训练集、验证集和测试集。训练集用于教授模型关于任务的知识并评估模型在训练过程中的表现。验证集是测试集的代理,用于告诉我们模型在新数据上的预期性能。然而,测试集是实际世界的代理——也就是说,我们的模型将在那里接受测试。这个数据集应该仅用于部署,以便我们知道模型在实际应用中的表现。使用这个数据集来改变超参数或设计选项被认为是作弊,因为它会误导你对模型在现实世界中的表现或泛化能力的理解。在现实世界中,一旦你的模型被部署,比如在工业界,你将无法根据其性能调整模型的参数!

机器学习开发过程中的迭代

在实践中,开发一个机器学习模型将需要在验证、测试以及其他流程阶段之间进行多次迭代。可能验证或测试结果不尽如人意,你决定改变数据收集、标注、设计或训练的一些方面。

摘要

在本章中,我们讨论了人工智能(AI)、机器学习(ML)和深度学习(DL)等术语。我们揭示了机器学习和深度学习的一些优势。同时,我们学习了开发和管理机器学习模型的基本步骤。最后,我们学习了为什么我们需要大规模的训练数据。

在下一章中,我们将探讨标注大规模数据集时遇到的主要问题。这将使我们更好地理解为什么合成数据是机器学习(ML)的未来!

第二章:标注真实数据

机器学习(ML)引擎的燃料是数据。数据几乎存在于我们技术驱动世界的每个部分。机器学习模型通常需要在标注数据上进行训练或评估,而不仅仅是数据!因此,数据本身对机器学习来说并不很有用,但标注数据是机器学习模型所需要的。

在本章中,我们将学习为什么机器学习模型需要标注数据。我们将看到为什么标注过程成本高昂、易出错且存在偏见。同时,您将了解多个机器学习任务的标注过程,例如 图像分类语义分割实例分割。我们将强调主要的标注问题。同时,我们将理解为什么对于 光流估计深度估计 等任务,理想的真实情况生成是不可能的或极其困难的。

在本章中,我们将涵盖以下主要内容:

  • 为机器学习标注真实数据的必要性

  • 标注过程中的问题

  • 光流和深度估计:真实情况和标注

为机器学习标注数据

在本节中,您将了解为什么机器学习模型需要标注数据,而不仅仅是数据!此外,您还将被介绍到一系列标注工具。

从数据中学习

作为人类,我们的学习方式与机器学习模型不同。我们只需要 隐式 数据标注。然而,机器学习模型需要 显式 数据标注。例如,假设您想训练一个机器学习模型来分类猫和狗的图像;您不能仅仅向这个模型提供许多猫和狗的图像,期望模型学会区分这两类。相反,您需要描述每张图像的内容,然后您才能训练您的“猫狗”分类器(见图 图 2**.1)。

图 2.1 – 猫狗分类器训练数据

图 2.1 – 猫狗分类器训练数据

应当注意的是,机器学习模型的惊人能力与训练数据和真实情况的质量和数量密切相关,并受到高度影响。通常,我们需要人类对数据进行标注主要有两个原因:训练和测试机器学习模型。接下来,我们将更详细地探讨这些内容。

训练您的机器学习模型

训练机器学习模型有四个主要步骤。我们将在接下来逐一探讨它们(见图 图 2**.2)。

图 2.2 – 典型机器学习模型训练过程

图 2.2 – 典型机器学习模型训练过程

初始化

在训练过程的开始,模型的参数应该被初始化。通常,深度学习DL)模型的参数(权重和偏差)被设置为随机的小数,因为这是随机优化过程在优化过程开始时所期望的。随机优化过程是一种寻找数学问题最佳解决方案的方法,其中涉及随机性和不确定性以增强搜索过程。

预测

该模型利用其对任务的过去知识,并根据输入数据预测输出。我们可以想象,在训练过程中,模型通过将一个超平面(决策边界)拟合到训练数据上来构建自己对问题的理解,然后它将任何给定的输入投影到这个超平面上,从而给出模型对这个特定输入的预测。请记住,在这一步,我们只向模型提供数据,而没有提供任何真实值。如果我们回到我们的“猫狗”分类器,模型将接受猫和狗的图像,并要求预测这些图像的类别或标签。

重要提示

训练:ML 模型通过调整其参数并评估其性能,直到对训练数据达到令人满意的了解。

测试:在训练之后,ML 模型在新数据上通过使用各种指标(如 F1 分数、精确度和准确度)来评估其性能。

错误计算

给定模型所做的预测,我们现在需要评估这个预测的正确性。这正是我们需要真实值或标注的地方。在这一步,我们有两个输入:模型的预测和真实值。回到我们的“猫狗”分类器,模型可能会错误地将猫图像的类别预测为“狗”。现在,由于我们有了训练猫图像的真实类别,我们可以告诉模型,它在这次(对于这个训练样本)对猫狗问题的理解是错误的。此外,我们可以通过损失函数来计算模型接近真实值的程度,损失函数取决于问题的类型。请注意,在机器学习中,我们本质上有两种类型的问题:分类问题和回归问题。在分类问题中,ML 模型学习对训练数据进行分类。例如,“猫狗”问题是一个分类问题,错误可以是 0 或 1,因为你有两个类别:猫或狗。另一方面,在回归问题中,ML 模型学习利用输入数据来预测一个连续值。例如,假设你正在训练一个模型,根据房屋的一些信息(如位置、房间数量、年龄和其他信息)来预测房屋的价格。假设模型预测房屋的价格为 10 万英镑,但真实价格(来自真实值)为 10.5 万英镑。那么,在这种情况下,错误是 5000 英镑。

误差是机器学习学习过程中的精髓;它为训练模型提供指导——例如,它需要更新多少参数以及哪些参数。

反向传播

这就是学习发生的地方。给定计算出的误差,我们需要根据输入和误差更新模型的参数或权重。换句话说,模型需要“调试”预测中误差的原因。如果误差很小,模型将稍微更新其权重或对问题的理解。另一方面,如果误差很大,模型将需要对权重进行重大调整,从而改变对问题的理解。回到“猫狗”分类器,在训练过程的开始阶段,大多数预测将是错误的,因此模型将大幅更新其权重。相反,当模型接近收敛(对训练数据的最佳理解)时,理想情况下,它开始正确预测大多数预测,从而只在权重上进行轻微更新。

测试你的机器学习模型

为了评估你的机器学习模型的表现,你也需要标注数据。因此,标注不仅对于训练是必要的,对于测试也是必要的。通常,定性结果有助于对模型整体表现或某些个别有趣场景有一个整体的理解。然而,定量结果是理解机器学习模型鲁棒性、准确性和精度的最重要方式。

使用真实值,我们可以检查我们训练的模型在大量示例上的性能。因此,没有必要单独查看预测,因为整体平均数、标准差和其他统计数据将很好地描述这一点。在下一节中,我们将深入探讨真实数据标注中常见的常见问题。

标注过程中的问题

如我们所见,标注对于训练和测试都是至关重要的。因此,任何标签错误、有偏的标注或标注数据不足都将极大地影响你的机器学习模型的训练和评估过程。正如你所预期的那样,标注过程是耗时、昂贵且易出错的,这就是我们将在本节中看到的内容。

标注过程是昂贵的

要训练最先进的计算机视觉或自然语言处理(NLP)模型,你需要大规模的训练数据。例如,BERTarxiv.org/abs/1810.04805)是在 BooksCorpos(8 亿单词)和维基百科(25 亿单词)上训练的。同样,ViTarxiv.org/abs/2010.11929)是在 ImageNet(1400 万图像)和 JFT(3 亿图像)上训练的。标注如此庞大的数据集极其困难且具有挑战性。此外,它耗时且昂贵。需要注意的是,标注数据集所需的时间取决于三个主要因素:任务或问题、数据集大小和粒度级别。接下来,我们将更详细地探讨这些因素。

任务

例如,对于一个二元分类问题,标注数据集比标注语义分割数据集更容易,所需时间也更少。因此,任务的性质也对标注过程提出了明确的难度。即使是同一任务,比如语义分割,在标准天气条件和正常光照下标注单个图像,对于Cityscapes数据集(Marius Cordts 等人城市场景语义理解数据集。在 IEEE 计算机视觉和模式识别会议论文集,第 3213-3223 页,2016 年)大约需要 90 分钟。然而,在恶劣条件下(如雪、雨、雾)或低光照条件下(如夜间)进行类似的标注,对于ACDC数据集(Christos Sakaridis 等人ACDC:具有对应关系的语义驾驶场景理解恶劣条件数据集。在 IEEE/CVF 国际计算机视觉会议论文集,第 10765-10775 页,2021 年)则需要长达 3 小时。

数据集大小

如预期的那样,数据集越大,标注就越困难。复杂性来自于管理如此庞大的数据集并确保大量标注员遵循相同的标注和数据收集协议。这些标注员可能拥有不同的语言、背景、经验和技能。实际上,指导这样一个庞大、多样化的团队,可能分布在不同的地理位置,并不简单。

粒度级别

你希望你的真实标签捕捉的细节越多,标注员需要完成的工作就越多。以视觉目标跟踪为例。标注单目标跟踪的图像比多目标跟踪更容易。我们在语义分割中也发现了相同的情况。标注具有 3 个类别的语义分割数据集比 10 个类别的更容易。此外,类别的类型也会给标注员带来困难。换句话说,小物体可能更难与背景区分开来,因此标注起来也更困难。

接下来,我们来看一下在真实数据集中常见的噪声真实标签问题的主要原因。

标注过程容易出错

在本节中,我们揭示了手动标注真实数据中问题背后的关键原因。

人类因素

标注过程中最重要的元素是人类。然而,我们受限于对世界的感知。人类在低光照、杂乱场景或物体远离摄像头、透明等情况下的视觉内容难以用肉眼感知。同时,标注协议的误解和沟通不畅是另一个主要问题。例如,假设你要求一组标注者为视觉目标跟踪训练数据集标注图像。你的目标是只考虑人物对象。一些标注者会标注没有物体的人类,而其他标注者可能会将人类携带的其他物体视为感兴趣对象的一部分(参见图 2.3)。此外,一些标注者可能只考虑人体未被遮挡的部分。这将导致训练数据中的主要不一致性,模型将难以学习任务,并且永远不会收敛。

图 2.3 – 由于标注协议不明确导致的标注错误样本

图 2.3 – 由于标注协议不明确导致的标注错误样本

记录工具

如果录制摄像头晃动,捕获的图像将变得模糊,因此标注者将无法准确识别对象从背景中的实际像素。此外,摄像头的内在和外在参数会极大地改变 3D 场景如何投影到 2D 图像中。镜头的焦距、快门速度、镜头畸变等都会在标注过程中引入一定的误差。换句话说,标注者标注的对象可能并不完全对应于原始图像或甚至 3D 世界中的同一对象。

场景属性

气候条件和一天中的时间等属性在标注过程中都起着重要作用。正如我们之前提到的,白天的晴朗天气可能有助于标注者比夜间不利条件更清楚地识别对象。与此平行的是,拥挤和杂乱的场景标注更加困难,更容易出错(参见图 2.4)。

图 2.4 – 场景属性:拥挤的场景更容易出现标注错误

图 2.4 – 场景属性:拥挤的场景更容易出现标注错误

标注工具

为了提高标注过程,有各种标注工具,例如 Labelbox、Scale AI、Dataloop、HiveData 和 LabelMe。一些标注工具集成了 AI 组件,通过协助人工标注者优化标注过程,例如 Labelbox。虽然这些 AI 辅助方法很有前景,但它们还不实用和可靠。换句话说,人工标注者仍然需要验证和纠正预测。此外,其中一些方法速度较慢,远远不能提供实时帮助。此外,如果问题是新颖的,AI 辅助可能不会按预期工作,因为 AI 模型没有在类似的场景下进行过训练。

根据任务、数据集大小和团队规范,应选择合适的标注工具。标注工具应适用于所有标注者,以确保标注者之间以及创建的基线数据的一致性。

标注过程存在偏见

为了理解世界并有效地进行推理,我们的大脑基于以往的经验和信念体系快速做出决策和判断。更多详情,请参阅决策制定:影响决策制定的因素、使用的启发式方法和决策结果(www.inquiriesjournal.com/a?id=180)。机器学习模型通过训练数据学习推理和感知世界。我们试图客观地收集和标注数据。然而,无意中,我们在收集和标注的数据中反映了我们的偏见。因此,机器学习模型也变得有偏见和不公平。接下来,我们将讨论标注过程中常见的三个因素。

理解问题和任务

标注者可能不了解问题,可能不理解数据,或者不理解为什么收集和标注数据。因此,他们可能会做出错误的假设或误解数据。此外,鉴于标注者之间的差异,他们可能对问题的理解不同。

背景、意识形态和文化

这是标注过程中不一致性的一个关键因素。让我们想象一下,你要求一组 10 位标注者为动作识别标注数据集。你只有两个动作:确认或否定。你的标注团队成员来自英国、保加利亚和印度。保加利亚标注者会将摇头理解为“是”,点头理解为“否”。其他标注者则会相反。因此,你将得到错误的学习数据,你的模型将无法学习这个任务。还有其他场景,其中偏见并不明显,难以轻易识别,这是这个范围内最困难的问题。

主观性和情绪

对于某些问题,例如文本情感分析,这是一种用于理解文本数据的知名自然语言处理技术,人工标注者可能会对某些政党、足球队、性别和种族有偏见。因此,标注将偏向于标注者的观点。

标注过程中的常见问题

总是避免以下情况:使用错误的标注工具、模糊的标注协议、标注者之间的误解、在标注过程开始后添加新标签,以及在过程中修改标注协议。

光流和深度估计

在本节中,我们将探讨不同的机器学习任务及其相应的地面真实值生成过程。

计算机视觉的地面真实值生成

计算机视觉旨在使计算机能够通过数字图像进行视觉识别。知道视觉是我们大脑执行的最复杂功能之一并不奇怪。因此,模仿视觉并不简单,对于最先进的计算机视觉模型来说,这相当复杂。

计算机视觉任务包括语义分割、实例分割、光流估计、深度估计、法线图估计、视觉目标跟踪等。每个任务都有其生成相应地面真实值的独特方法。接下来,我们将看到这些任务的样本。

图像分类

此任务的训练图像通常只包含一个对象,即感兴趣的对象。此任务的标注只是查看每张图像并选择一个或多个描述图像中对象的类别。

语义和实例分割

对于语义分割和实例分割,标注者需要为图像中的每个像素分配一个类别标签。换句话说,标注者被要求将图像分割成不同的区域,其中每个区域展示语义分割中的一个类别和实例分割中的一个实例。请参阅github.com/mrgloom/awesome-semantic-segmentation以获取语义分割方法的详尽列表,例如U-NetDeepLabD2Det。对于实例分割,请检查github.com/topics/instance-segmentation

目标检测和跟踪

在目标检测和跟踪中,注释员在图像中的每个目标周围绘制一个边界框。目标跟踪通过视频跟踪最初选择的目标在整个视频中的运动。另一方面,目标检测在图像上执行,以检测任务所需的对象。请参阅github.com/topics/object-detection获取知名和最先进的目标检测方法以及有用的 Python 库列表,例如YOLOv5Mask R-CNNOpenMMLab。对于目标跟踪,请参阅github.com/topics/object-tracking获取模型列表,例如SiamMaskHQTrackCFNet

现在,我们将检查计算机视觉中两个极其难以使用标准方法生成地面真实数据的特定任务。这基本上只是真实数据限制的一个例子。

光流估计

光流是物体从一个帧到另一个帧的相对明显运动。这种运动可能是由于物体或相机运动引起的。光流在许多任务中具有许多关键应用,例如从运动中结构视频压缩视频稳定。从运动中结构在 3D 构建、机器人的导航和操作任务、增强现实和游戏中的应用非常广泛。视频压缩对于视频流、存储和传输至关重要;另一方面,视频稳定对于延时摄影视频和无人机或头戴式相机记录的视频至关重要。因此,光流在实践中有巨大的应用。有关SKFlowGMFlowRAFT等光流方法的综合列表,请参阅github.com/hzwer/Awesome-Optical-Flow

请注意,生成光流的地面真实数据极其困难。一些方法在许多假设下应用复杂程序来实现这一点,例如室内环境和有限数量的物体和运动。

深度估计

深度估计是指测量场景中每个像素到相机的距离的任务。这对于 3D 视觉至关重要,并且有许多应用,例如 3D 场景重建、自动驾驶汽车和导航、医学成像和增强现实。通常,深度估计有两种主要方法:一种使用单目图像,另一种基于基于极线几何的立体图像。与光流类似,在现实世界中生成深度估计的地面真实数据极其困难。请参阅github.com/topics/depth-estimation获取最近深度估计方法的列表,例如AdaBinsSC-DepthMonodepth2

重要提示

对于光流和深度估计,大多数使用的标准数据集都是合成数据集。对于光流,我们可以识别出合成数据集,如 FlyingChairsFlyingThings3DKubric (github.com/google-research/kubric)。对于深度估计,我们可以提到 Virtual KITTIDENSE (github.com/uzh-rpg/rpg_e2depth) 和 DrivingStereo (drivingstereo-dataset.github.io/)。

摘要

在本章中,我们学习了为什么机器学习模型需要标注的真实数据。同时,我们探讨了标注过程中的一些常见问题。我们的探索使我们更深入地理解了真实数据的收集和标注问题,例如这是一个耗时且容易受到标注者错误影响的过程。此外,我们还讨论了真实数据在光流和深度估计等任务中的局限性。在下一章中,我们将具体探讨真实数据带来的隐私问题。

在本书的后续章节中,我们将继续我们的激动人心的旅程,了解真实数据的局限性以及合成数据的潜在解决方案。

第三章:实际数据中的隐私问题

由于其多样化的应用,机器学习正成为我们日常生活的重要组成部分。因此,人们对机器学习中的隐私问题越来越关注。数据集和训练好的机器学习模型可能会泄露个人和敏感信息,如政治观点、生物识别数据、心理健康、性取向和其他私人信息。

在本章中,我们将学习关于隐私问题以及为什么这是机器学习(ML)中的一个关注点。此外,我们还将简要介绍隐私保护机器学习。

在本章中,我们将涵盖以下主要主题:

  • 为什么隐私在机器学习中成为一个问题?

  • 机器学习中的隐私问题究竟是什么?

  • 隐私保护机器学习

  • 实际数据挑战和问题

为什么隐私在机器学习中成为一个问题?

正如我们在前几章中讨论的,机器学习模型需要大规模的训练数据才能收敛和良好训练。数据可以从社交媒体、在线交易、调查、问卷或其他来源收集。因此,收集到的数据可能包含个人可能不希望与某些组织或个人分享的敏感信息。如果数据被他人共享或访问,并且因此识别出个人的身份,这可能会给他们造成个人滥用、财务问题或身份盗窃。

机器学习中隐私泄露的复杂性紧密相关于以下三个主要因素:

  • 机器学习任务

  • 数据集大小

  • 规章制度

让我们更深入地了解一下。

机器学习任务

任务主要定义了我们需要收集和标注的训练数据的类型。因此,一些机器学习任务,如天气预报和音乐生成,与其他机器学习任务(如生物识别认证、医学图像处理和分析)相比,可能具有较少的隐私问题。

数据集大小

数据集越大,你将面临的隐私问题就越多。如果数据集是大规模的,那么你无法将其存储在一个设备上。因此,你可能需要一些云服务和技术来管理你的数据集,例如 MongoDB、Hadoop 和 Cassandra。因此,你可能对你的数据控制较少。因此,你需要更加关注处理或管理你的数据的技术和服务。

规章制度

许多国家都有明确和限制性的数据保护法规。例如,英国有《2018 年数据保护法》(www.legislation.gov.uk/ukpga/2018/12/contents/enacted)。同时,在欧盟也可以找到类似的规定,如《通用数据保护条例》(gdpr-info.eu)。因此,如果你正在使用个人数据,你必须考虑数据保护原则,如透明度、用于指定的目的,以及保留特定期限。

如果你的数据集包含敏感和机密信息,那么你将受到更多的限制。你的数据集可能包含有关生物识别、性别、健康、宗教和政治观点的信息。因此,如果你重新使用你、你的组织或其他人收集的数据集,这种行为可能是非法的。

利用真实数据集的一个主要限制是隐私问题。正因为如此,我们可以看到为什么合成数据是解决这些问题的有希望解决方案。在下一节中,我们将更深入地探讨隐私问题及其相关主题,如版权和知识产权侵权,这些是在收集新数据集时的主要问题。

机器学习中隐私问题究竟是什么?

在机器学习隐私的范围内,有两个主要关注点。第一个是关于数据集本身——也就是说,如何收集它,如何保持其隐私,以及如何防止未经授权访问敏感信息。第二个与机器学习模型容易泄露训练数据有关,我们将在下一节中讨论。现在,让我们检查与机器学习中数据集隐私相关的问题。

版权和知识产权侵权

版权是一个法律术语,用于保护知识产权的所有权。它阻止或限制他人未经你许可使用你的作品。例如,如果你拍照、录像或写博客,你的作品受版权保护。因此,其他人未经许可不得分享、复制或分发你的作品。因此,我们在互联网上看到的一些图像、视频、文本或其他信息可能受到版权限制。因此,如果你想收集一个数据集,你必须仔细考虑版权问题。众所周知,有不同方法来整理真实数据集。作为一名机器学习从业者,你可以做以下事情:

  • 自己收集数据:你可以使用相机、麦克风、传感器、问卷和其他方法收集大量数据。

  • 从互联网收集数据:你可以使用谷歌、雅虎、百度和 DuckDuckGo 等搜索引擎来收集你的数据集,类似于ImageNet (www.image-net.org/)数据集的收集方式。

  • 从其他数据集中收集数据:你可以结合不同的数据集,为特定应用创建一个新的数据集——例如,如果你只对特定场景(如恶劣条件)中的人类视觉对象跟踪感兴趣——在这种情况下,你可以通过排除无关类别和天气条件来结合不同的数据集。因此,你为你的特定问题创建了一个新的数据集。

使用我们的相机拍摄某人的照片或使用我们的硬件录制他们的声音并不允许我们使用他们的信息。同时,对于大规模数据集来说,请求许可并不是一个实际的解决方案。为了避免类似的问题,一些数据集,如ImageNet,最初是从互联网上收集的。然后,由人工标注员进行标注。需要注意的是,我们看到的互联网上的每一张图片都不一定能用来构建我们的数据集;有些图片有版权许可证,限制了它们的使用方式。因此,网络上可用的数据并不一定意味着你可以利用这些数据来解决你的问题。将不同数据集合并时也会出现相同的版权问题。

如果你的机器学习模型是在梵高的画作上训练的,学会了如何生成艺术品,那么就会产生一个问题:生成的图像的版权归谁所有:梵高、机器学习工程师,还是两者都有?在机器学习中,这是一个有争议且复杂的问题。ChatGPT (openai.com/blog/ChatGPT) 和 Imagen (具有深度语言理解的逼真文本到图像扩散模型) 就是这样的模型示例。因此,在真实数据集上训练你的模型可能并不能让你充分利用机器学习模型的潜力。你仍然可能受到训练过程中使用的样本的版权和知识产权的约束。正如你所预期的,利用合成数据似乎是解决这些问题的有希望的解决方案。

实验的隐私和可重复性

基于机器学习的研究中,主要问题之一是实验的可重复性困难,因此无法验证研究论文中声明的结果。数据隐私是导致这一问题的关键因素之一。许多公司使用自己的数据集开发机器学习解决方案。由于与隐私问题和法规相关的许多原因,他们可能分享训练好的模型,但不会分享数据集本身。因此,其他研究人员无法重复实验和结果。这为错误、偏见、误解、伪造和操纵研究结果创造了良好的机会。这也是在某些领域,如医疗保健和金融,使用合成数据可以使研究更加透明、结果更加可信的另一个原因。

隐私问题和偏见

偏见是另一个与机器学习模型和真实数据中的隐私问题密切相关的问题。机器学习模型可以在有偏见的数据上训练,这可能导致有偏见的结果。例如,一些面部识别商业应用被发现对肤色较深的人、女性或 18 至 30 岁之间的人的识别准确性较低。这个问题是由于机器学习模型的训练数据中的偏见造成的。因此,当由于隐私问题而无法获得训练数据时,可能会出现某些偏见问题。因此,这可能导致基于种族、性别和其他因素的待遇不公和歧视。接下来,我们将深入探讨隐私问题的传统解决方案。

隐私保护机器学习

隐私保护机器学习是一个热门话题,因为它提出了解决机器学习领域隐私问题的解决方案。隐私保护机器学习提出的方法允许研究人员使用敏感数据来训练机器学习模型,同时防止敏感信息被第三方共享或访问,或被机器学习模型揭示。在下一小节中,我们将检查减轻数据集中隐私问题的常见方法。

隐私保护数据集的方法

在本节中,我们将深入探讨处理和保护数据集中敏感信息的标准方法。我们将探讨匿名化、集中式数据和差分隐私。

匿名化

匿名化可以被认为是数据集中隐私问题的最早方法之一。假设你被提供了一个包含患者地址、电话号码和邮政编码的医疗记录数据集。为了匿名化这个数据集,你可以简单地移除这些敏感数据,同时保留其他医疗记录。不幸的是,这种方法并不很有效,有两个原因。有时,你无法移除这些敏感信息,因为它们是任务的一部分。同时,匿名化可能不足以防止个人被识别,因此个人可能通过将数据集中或其他数据集中的其他信息链接和组合来被识别。例如,查看题为《威廉·韦尔德州长医疗信息的“再识别”:对健康数据识别风险和隐私保护现在与当时的批判性再审视》的论文(papers.ssrn.com/sol3/papers.cfm?abstract_id=2076397):

姓名 姓氏 有糖尿病 吸烟 性别 年龄 职业
迈克 克里斯 60 程序员
艾玛 昆宁汉姆 40 律师
一月 32 博士研究生
奥利维亚 昆宁汉姆 23 学生

图 3.1 – 包含敏感信息的样本数据集

集中式数据

另一种方法是基于将数据保留在私有服务器上的想法,而不是共享数据本身,而是回答关于数据的问题。例如,以下是一些关于图 3.1中所示数据集的查询示例:

  • 返回糖尿病患者的最小年龄

  • 返回糖尿病女性患者的数量

  • 返回糖尿病患者的平均年龄

如您所见,组织可以在保持敏感数据的同时,仍然允许其他研究人员或组织利用这些数据。然而,这种方法并不能抵御网络攻击。攻击者可以使用这些查询通过组合复杂查询和链接来自其他数据集的信息来识别个人并披露敏感信息。例如,如果您删除了姓名姓氏列,但仍然使用关于性别年龄职业的信息,仍然可能使用这些细节来识别一些患者。

差分隐私

作为之前方法的补充解决方案,差分隐私似乎是一个有希望的解决方案。然而,有一些局限性,正如我们稍后将看到的那样。

这种方法的关键思想是在了解所考虑的现象的同时,保持个人信息的保密。这种方法基于对包含所有敏感数据的服务器的查询。许多公司使用差分隐私,例如 Uber、Google 和 Apple。算法可能会向数据集或查询中的信息添加随机噪声,如图图 3.2所示:

图 3.2 – 本地和全局差分隐私

图 3.2 – 本地和全局差分隐私

差分隐私有两种主要方法:

  • 本地差分隐私LDP):从用户那里获取的数据经过噪声处理,例如拉普拉斯噪声。这个过程使得数据对攻击更加安全。即使攻击者可以访问数据,他们也将得到一个噪声版本,他们将无法识别个人。

  • 全局差分隐私GDP):从客户端获取的原始数据未经修改,直接存储在服务器上,不添加任何噪声。当收到查询时,在添加噪声后返回原始答案(准确)。这个过程生成一个保护数据隐私的私有答案。

因此,有了这些数据保护机制,我们假设现在可以在不披露个人敏感信息的情况下对机器学习模型进行训练。不幸的是,这个假设并不总是有效的,正如我们将在接下来的几节中看到的那样。

隐私保护机器学习的方法

隐私保护机器学习PPML)旨在防止训练数据泄露。机器学习模型可能在训练过程中记住敏感信息,因此机密信息可能会被机器学习模型泄露。标准的 PPML 方法依赖于我们之前讨论过的差分隐私。接下来,你将了解到联邦学习。

联邦学习

联邦学习是一种新颖的策略,它允许在本地服务器或节点之外不传输数据的情况下对敏感数据进行训练。因此,组织可以在保持数据在其组织本地服务器上的同时,共享其敏感数据以训练机器学习模型。同时,这也是一种解决防止与外部方共享数据的法规的解决方案。它基于我们接下来将要看到的分布式学习范式。请参阅github.com/topics/federated-learning以获取广泛的联邦学习框架和库,如FATEFedMLPySyft

首先,让我们区分集中式和分布式机器学习系统:

  • 集中式机器学习系统:在集中式机器学习系统中,所有训练都在一个服务器上完成。这更容易实现,因此传统上应用于机器学习问题。然而,由于用户与中央服务器之间的通信,它有许多局限性。如图3.3所示,用户需要将信息发送到执行训练过程的中央服务器。除了延迟问题外,这种方法更容易受到攻击:

图 3.3 – 集中式和分布式机器学习系统

图 3.3 – 集中式和分布式机器学习系统

  • 分布式机器学习系统:与集中式选项相反,该系统允许机器学习模型在客户端节点上而不是在集中式服务器上训练。客户端将他们训练的机器学习模型的权重和偏差发送到管理员服务器。随后,权重和偏差被用来构建最终的机器学习模型。这是解决许多隐私问题的巧妙解决方案。例如,欧盟的许多医院不能与医院外的组织或个人共享他们的患者数据。因此,使用分布式机器学习系统,其他组织可以访问患者数据,因为他们的数据不会离开医院的服务器,训练过程也将在其服务器上完成。

通常,我们可以看到分布式机器学习系统有以下优点:

  • 服务器和客户端之间的通信减少

  • 更好的隐私性,因为客户端不共享原始数据;相反,他们共享权重和偏差

  • 更好的隐私性,因为数据存储在本地节点,并且在训练过程中不会离开组织。

在下一节中,我们将简要讨论真实数据中隐私问题的本质。

真实数据挑战和问题

到目前为止,在本章中,我们已经介绍了多种缓解真实数据中隐私问题的方法。正如您所看到的,这些方法显然存在局限性,并不总是实用的。一个基本问题是机器学习模型会记住训练数据。因此,给定一个训练好的机器学习模型,可能有可能检索到一些训练数据。许多研究人员最近对机器学习模型的隐私问题提出了警告,即使在应用了标准的隐私解决方案之后。更多信息,请参阅如何破解 Netflix Prize 数据集的匿名性 (arxiv.org/abs/cs/0610105) 和 秘密分享者:评估和测试神经网络中的无意记忆 (arxiv.org/abs/1802.08232)。

真实数据的本质是问题的核心。例如,如果您被提供了真实的人类面部数据,并对这些数据进行了一些匿名化操作,或者如果您应用了最先进的 PPML 训练方法,数据仍然存在被泄露的风险。因此,似乎我们不应该再提出更多复杂且有时不切实际的解决方案来解决真实数据中的隐私问题,而是应该考虑其他替代方案,并关注问题的本质,即真实数据。换句话说,似乎合成数据代表了一个丰富且安全的训练大规模机器学习模型的来源,从而解决了这些复杂的隐私问题。

摘要

在本章中,我们讨论了为什么隐私是机器学习中的一个关键问题。同时,我们学习了这个领域中隐私问题的确切内容。我们还了解了主要的标准解决方案及其局限性。

在下一章中,我们将探讨什么是合成数据。这将帮助我们打下坚实的基础,以便我们能够学习如何利用合成数据作为解决我们在前几章中考察的真实数据问题的方案。

第二部分:机器学习合成数据概述

在本部分,您将了解合成数据。您将了解其历史和主要类型。然后,您将探索其主要优势。您将理解为什么合成数据是解决许多复杂问题(如隐私)的潜在解决方案,这些问题阻碍了机器学习在某些领域的进步。您将学习如何利用合成数据生成方法来生成数据,这些数据通常难以用真实数据进行捕获,且成本高昂、危险。

本部分包含以下章节:

  • 第四章合成数据简介

  • 第五章合成数据作为解决方案

第四章:合成数据简介

在本章中,我们将定义并介绍合成数据。我们将简要探讨合成数据的历史和演变。然后,我们将介绍合成数据的主要类型以及基本的数据增强方法和技巧。

在本章中,我们将涵盖以下主要主题:

  • 什么是合成数据?

  • 合成数据的历史

  • 合成数据类型

  • 数据增强

技术要求

本章中使用的代码将在本书 GitHub 仓库的相应章节文件夹中提供:github.com/PacktPublishing/Synthetic-Data-for-Machine-Learning

什么是合成数据?

合成数据是人工生成数据:这些数据并非从现实世界中捕获、测量或记录。相反,使用算法或软件来创建或生成这些数据。合成数据可以通过使用数学模型模拟自然现象或应用对现实世界过程的近似来生成。生成合成数据有许多方法,例如利用游戏引擎,如 Unreal 和 Unity,或利用统计模型,如 GANs 和扩散模型。众所周知,机器学习模型需要大规模的训练数据集进行训练和评估。收集和标注这些数据集非常耗时、易出错,且存在隐私问题。请参阅第二章第三章。合成数据是解决这些先前限制的有力解决方案。

合成数据在收集和标注数据成本高昂的场景中非常有用,但其应用范围远不止这个特定用例,正如我们稍后将会看到的。合成数据在人工智能、机器学习和数据分析领域被广泛应用,特别是在计算机视觉任务中,这些任务通常需要大量且难以标注的数据进行训练。因此,合成数据在这一领域得到了广泛的应用,并取得了显著的进步。

在某些通常难以在现实世界中捕捉到的条件下,可以生成合成数据来训练或评估机器学习模型。例如,让我们假设我们想要训练一个计算机视觉模型,根据一些视觉信息(如 RGB 和激光雷达图像)来预测交通事故。我们需要为我们的训练模型提供包含数千起交通事故的足够大的数据集。从现实世界中收集这个数据集可能需要我们几周、几个月甚至几年;这需要许多工程师和标注员,以及巨大的预算来实现我们的目标。同时,我们的数据集可能在其他国家或几年后不再有效。如果你在英国收集数据集,那里的人靠左行驶,这个数据集就不适用于中国,那里的人靠右行驶!与此并行的是,如果你在 2005 年收集数据集,由于例如新车型等原因,你的数据集可能不适用于 2024 年。

另一方面,如果你使用模拟器(如CARLA (carla.org))生成合成训练数据,你可以模拟数千起交通事故。此外,你可以控制车型、场景属性、天气条件和其他属性。这仅仅是合成数据在机器学习模型的训练和评估中的优势的一个例子。

合成数据和真实数据

假设你想要训练你的机器学习模型来预测销售给定产品的利润。你可以获得的最高利润是 10 英镑,最大损失也是 10 英镑。在现实世界中,这个特定的财务问题可以使用一个简单的正弦波来建模,如图图 4**.1所示。因此,为了获得最大利润,你必须在大约从生产日(第 0 天)起第二和第八天左右销售产品。蓝色线给出了现实世界中这个问题的实际模型。然而,这个模型对我们来说是隐藏的,因为如果我们知道这个模型,那么就没有必要使用机器学习来进行预测。假设真实数据完美地代表了这个模型。那么,在这个场景中的合成数据就是黑色点。换句话说,合成数据近似真实数据,而真实数据也是对现实世界中实际过程或现象的近似。

图 4.1 – 真实和合成数据的简单示例

图 4.1 – 真实和合成数据的简单示例

到目前为止,我们可能会问,为什么在真实数据可用的情况下,我们还需要使用合成数据?确实,这是一个合理的问题:如果你有足够、标注且无偏见的真实数据,且没有隐私问题,那么你不应该使用合成数据!

不幸的是,在大多数现实世界的问题中,这样的最优数据集是不可用的,极其昂贵,且有限。因此,合成数据作为最后的手段来帮助机器学习模型了解过程或任务,即使真实数据有限或不存在。正如你在 图 4.1 中所看到的,仅给出散点图,我们仍然可以观察到明显的模式,即一种 正弦波,在这组数据中。因此,一个合适的机器学习模型仍然能够学会如何预测最佳的销售时间,即使你只用合成数据进行训练。

机器学习中的数据中心和架构中心方法

在机器学习的领域中,有两种主要的方法:一种是以模型为中心的方法,它关注机器学习模型及其架构;另一种是以数据为中心的方法,它优先考虑数据,如图 4.2 所示。

图 4.2 – 以数据和模型为中心的机器学习

图 4.2 – 以数据和模型为中心的机器学习

接下来,让我们更详细地讨论这两种方法。

  • 以模型为中心的机器学习:直到最近,以模型为中心的方法一直是机器学习中的主要方法。这种方法假设数据集是固定的,并努力提出更好的架构、新颖的训练程序以及新的搜索和找到最佳超参数的方法。让我们关注这些要素,并更详细地讨论它们:

    • 代码和架构:研究人员持续开发新的架构,以更好地利用和了解训练数据。例如,在著名的 ImageNet 大规模视觉识别挑战(ILSVRC)数据集 (www.image-net.org/challenges/LSVRC) 发布之后,提出了许多架构来提高前 5 类分类误差,如 AlexNet、使用深度卷积神经网络进行 ImageNet 分类 (proceedings.neurips.cc/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf) 和 ResNet、用于图像识别的深度残差学习 (arxiv.org/abs/1512.03385)。机器学习模型在层数(即深度网络)、模型参数、学习滤波器等方面都有所改进。

    • 训练:对于机器学习研究人员来说,训练是一个有趣的研究领域。研究人员试图找到更快的方式来训练复杂的机器学习模型,并使用更少的数据。这涉及到模型参数初始化技术及其对优化过程的影响,提出了新的优化技术,更好的泛化能力,减少过拟合,新的预训练技术,以及更好的机器学习模型微调技巧。

    • 超参数:如学习率、批量大小和层数等参数对整体学习过程以及模型在现实世界中的性能有重大影响。已经提出了不同的方法来高效地搜索最优超参数,以进一步改进机器学习模型。

  • 数据为中心的机器学习:这种方法最近才开始获得更多动力。它关注数据本身,而不是架构和代码。它假设机器学习模型的架构是固定的,并试图通过仅关注数据集来提高性能。它更关注以下与数据相关的概念:

    • 数据质量

    • 真实数据质量

    • 特征工程

    • 领域知识

让我们看看合成数据是如何发展的。

合成数据的历史

在本节中,我们将了解合成数据的演变。基本上,我们可以将合成数据的使用分为以下几类,这些类别可能不反映时间顺序,因为很难追踪每个类别早期使用合成数据的情况。

随机数生成器

随机数生成器是合成数据最简单的形式之一。假设你正在训练一个机器学习模型来识别人脸。比如说,你只有有限数量的图像。你可以向原始图像添加随机噪声,以创建新的合成图像。随机噪声的实现可以通过使用随机数生成器来完成。这将帮助人脸识别机器学习模型学习在特定类型的噪声下人脸是如何变化的(参见图 4.3)。

图 4.3 – 利用随机数生成器生成合成图像

图 4.3 – 利用随机数生成器生成合成图像

接下来,我们将了解 GANs,这是合成数据发展中的另一个步骤。

生成对抗网络(GANs)

GANs 是由 Ian Goodfellow 等人于 2014 年通过一篇著名的NeurIPS(原名NIPS)论文引入的,该论文题为《生成对抗网络》(Generative Adversarial Nets)。(proceedings.neurips.cc/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf)。从那时起,GANs 被应用于各种应用,如生成人脸、照片修复、3D 对象生成、文本到图像的翻译等等有趣的领域。

一个典型的 GAN 由两个网络组成:一个生成器和判别器。生成器接收一个噪声随机输入向量并输出一个合成样本,例如,可以说,一个汽车图像。生成器的目标是使合成的数据,例如,汽车图像,与真实数据不可区分,即真实汽车图像。另一方面,判别器努力从真实数据中识别合成数据。判别器被提供真实或合成数据,并要求预测训练样本的数据来源。如果数据样本是从真实数据中抽取的,并且判别器正确地将数据来源识别为真实数据,则不会向判别器回传错误。另一方面,如果生成器预测了一个与真实数据集可区分的样本,则生成器会受到惩罚。同样,如果判别器未能识别图像的来源,则判别器会受到惩罚,而生成器会因为生成接近真实数据集的不可区分的合成样本而获得奖励(见图 4.4)。

图 4.4 – 典型的 GAN 训练过程

图 4.4 – 典型的 GAN 训练过程

我们将在第七章中更详细地讨论 GAN。

用于隐私问题的合成数据

如我们在第三章中讨论的,真实数据中存在巨大的隐私问题,而当前解决方案只是部分解决方案。最近,合成数据被提出作为解决这些隐私问题的合法解决方案。通常,金融数据经常与隐私问题相关联,因为共享客户数据,如个人细节、交易、资产和收入是有问题的。这些信息通常存储在表格中。令人惊讶的是,已经证明可以从真实数据中学习,并可以生成合成数据。例如,撰写题为使用条件 GAN 对表格数据进行建模arxiv.org/abs/1907.00503)的论文的研究人员证明了他们的条件表格 GANCTGAN)可以以复杂分布对表格真实数据的概率分布进行建模。他们的代码可以从论文的 GitHub 存储库github.com/sdv-dev/CTGAN中获取。

计算机视觉中的合成数据

计算机视觉是机器学习领域需要大规模训练数据的主要领域之一。正如我们之前讨论的,为计算机视觉任务收集和标注数据极为昂贵,标注过程也容易出错。作为解决方案,研究人员开始利用各种方法来生成合成数据,例如游戏引擎、视频游戏、生成对抗网络(GANs)和变分自编码器VAEs)。游戏引擎如虚幻引擎www.unrealengine.com)和Unityunity.com)的巨大进步促进了逼真 3D 虚拟世界的创建,从而产生了高质量和大规模的合成数据。同时,小型研究组能够获得强大且价格合理的图形处理单元GPUs),这进一步普及了这些游戏引擎。

合成数据与伦理考量

随着合成数据越来越受到关注并被应用于各种应用中,在过去的几个月里,许多研究人员、科学家、艺术家甚至公众开始质疑使用模型(如Chat-GPTchat.openai.com/chat)和Stable Diffusionstablediffusionweb.com))生成的文本和图像中的版权问题。同时,机器学习社区也提出了其他问题,如问责制和透明度,以采取进一步预防措施并进行更多研究。

接下来,我们将深入合成数据的世界,了解其在机器学习中的主要类型。

合成数据类型

合成数据类型有很多,例如文本、图像、点云和表格。根据机器学习问题和任务,需要不同类型的数据。在本节中,我们将更详细地讨论合成数据的主要类型。

图 4.5 – 合成数据类型的示例

图 4.5 – 合成数据类型的示例

  • 文本:维基百科、数字书籍、词典和文本语料库是文本数据的例子。机器学习模型可以在大规模文本数据集上训练,以学习我们作为人类生成或编写的文本结构。然后,这些模型可以被用来回答问题、总结文本或从一种语言翻译到另一种语言。这些模型,如ChatGPTChatSonicwritesonic.com)和Jasper Chatwww.jasper.ai),通过预测下一个应该出现的单词来生成合成文本。

  • 视频、图像和音频:ML 模型可以学习视频、图像或音频中的模式,然后它们可以在某些新条件下生成合成的版本。例如,可以使用Stable Diffusion(github.com/CompVis/stable-diffusion#stable-diffusion-v1)、DALL·E 2(openai.com/dall-e-2)和Imagen(imagen.research.google)等模型,理论上在多种条件下生成无限数量的合成图像。

  • 表格:这指的是通常使用表格按行和列组织的数据。通常,行是观测值,列是属性。ML 模型可以用于预测表格数据中的缺失值,例如,表格数据缺失值插补的扩散模型(arxiv.org/abs/2210.17128)。

  • 在这篇题为SynthCity:大规模合成点云的论文中提出了SynthCity数据集(arxiv.org/pdf/1907.04758.pdf),它提供了超过 3.6 亿个合成点云。

在下一节中,我们将深入探讨 ML 中的数据增强技术。

数据增强

数据增强是一种简单而强大的工具,用于缓解过拟合问题,尤其是在可用真实数据有限的情况下。数据增强技术旨在利用领域知识来丰富可用的训练数据。因此,数据增强通常仅应用于训练数据,而不是验证或测试数据。例如,假设你正在训练一个面部识别算法,而你只有每人 10 张图片。如果我们水平翻转这些图片,我们可以简单地加倍这些训练样本的数量。此外,我们可以通过应用各种变换,如平移、缩放和旋转,使用随机变量来增强我们训练数据的多样性。而不是使用这些变换的固定值,我们可以利用随机数生成器为每个训练周期生成新的值。因此,ML 模型将在每个训练周期接触到我们训练数据的新变体。这种简单的数据增强技术将有助于训练过程中的模型。有各种针对图像、音频和文本的数据增强技术。接下来,让我们讨论一些这些技术。请参阅《深度学习中的图像数据增强:综述》(arxiv.org/abs/2204.08610)以获取更多细节和图像数据增强的技术。

几何变换

当可用的训练图像有限且获取新的图像成本高昂时,我们可以对原始图像应用几何变换,例如平移、旋转、裁剪和翻转。然而,重要的是要注意在这些操作之后图像的语义意义得到保留。例如,对于猫与狗分类训练图像,水平翻转是可以接受的,但垂直翻转则不行。同样,水平和垂直翻转对于交通标志识别任务可能也不适用(参见 图 4.6)。

图 4.6 – 有效和无效的几何变换示例

图 4.6 – 有效和无效的几何变换示例

翻译简单地说就是通过固定的或随机的单位数水平或垂直移动图像以避免对象偏差。例如,假设你分类数据集中的所有猫图像都位于图像的右上角。那么,ML 模型将发展出错误的关联,将猫类别与图像的右上角联系起来。旋转指的是以特定的角度顺时针或逆时针旋转图像。像翻转一样,对于某些应用,特定的范围可能是有效的,但其他范围可能会改变训练图像的语义意义。裁剪是使用虚拟裁剪窗口裁剪图像。可以使用固定或动态的裁剪窗口大小(高度和宽度)。

噪声注入

这种技术可以应用于几乎所有的数据类型,特别是音频和图像。噪声可以从各种概率分布中抽取,例如正态(高斯)、均匀、泊松和伯努利。正如预期的那样,使用精心增强的数据训练 ML 模型可以使模型对类似的噪声类型更加鲁棒。注入的噪声可以用来模拟相机镜头、麦克风、传输介质和其他类型的失真。当 ML 模型在训练过程中学习如何处理类似的场景时,由于不可预测的因素,如恶劣天气条件、硬件故障或其他问题,这些场景在现实世界中发生时,模型不会感到困难。

文本替换、删除和注入

这些技术被广泛用于在训练“合成数据在机器学习中至关重要”时增加文本数据集的大小。当我们想要对它应用文本增强技术时,给定一个句子,我们可以随机选择一个单词,例如在这个例子中,“essential”,并用随机选择的一个同义词替换它,例如,“crucial”。增强后的合成句子变为“Synthetic Data is crucial in ML”。

图 4.7 – 使用同义词进行文本增强的流程

图 4.7 – 使用同义词进行文本增强的流程

同样,文本删除文本注入可以被用来生成合成文本以改善 ML 模型的性能。

摘要

在本章中,我们探讨了合成数据及其演变。我们了解了合成数据的主要类型。在本章中,我们还讨论了关键的数据增强技术,用于丰富图像、音频和文本数据的有限真实数据集。

在下一章中,我们将揭示合成数据如何被用作解决隐私和数据稀缺等问题的一种解决方案。此外,我们还将了解为什么它在成本方面更优,以及为什么它是对稀有和有限真实数据的革命性解决方案。

第五章:合成数据作为解决方案

本章重点介绍了合成数据的主要优势。您将了解为什么合成数据是解决隐私问题的有希望解决方案。同时,您将了解如何配置合成数据生成方法以覆盖在现实世界中难以捕捉且成本高昂的罕见场景。

在本章中,我们将讨论以下主要主题:

  • 合成数据生成方法

  • 合成数据的主要优势

  • 合成数据作为解决隐私问题的革命性解决方案

  • 合成数据作为解决成本和时间效率问题的革命性解决方案

  • 合成数据作为解决罕见数据的革命性解决方案

合成数据的主要优势

如我们所见,由于具有巨大的优势,合成数据具有广泛的应用范围。让我们突出一些这些优势:

  • 无偏见

  • 多样性

  • 数据可控性

  • 可扩展性

  • 自动数据生成

  • 自动数据标注

  • 标注质量

  • 低成本

图 5**.1 突出了以下一些关键优势:

图 5.1 – 合成数据的主要优势

图 5.1 – 合成数据的主要优势

接下来,我们将深入探讨这些优势中的每一个。我们将看到真实数据的局限性以及合成数据是如何成为解决方案的。

无偏见

真实数据由人工标注者整理和标注。在实践中,人们有意或无意地根据某些属性(如种族、肤色、性别、年龄或政治观点)忽视或过度强调某些群体,这会导致数据集存在偏见,从而对训练和测试机器学习模型产生负面影响。因为偏见的训练数据会给出对研究现象或现实世界中发生的过程的扭曲表示。因此,机器学习模型在决策上也会存在偏见。这种偏见可能导致种族、性别或年龄歧视,给公司的声誉、客户和收入带来巨大的不良后果。

让我们以自然语言处理(NLP)中的一个例子来讨论。在标题为《仇恨言论检测中种族偏见的风险》的论文中(aclanthology.org/P19-1163.pdf),研究人员证明了非洲裔美国人的推文被自动仇恨言论检测机器学习模型标记为冒犯的可能性是其他人的两倍。他们将原因归咎于标注者的偏见。

另一个例子来自计算机视觉领域,涉及面部识别机器学习算法中的种族歧视。微软、IBM 和亚马逊开发的面部识别机器学习模型在预测某些性别和肤色方面表现出较低的准确性。这些机器学习模型被特别指出在预测较深色女性面部方面准确性较低。世界上一些最大的科技公司,如微软和 IBM,提出了立即行动,以改善他们的数据收集过程,以减轻他们机器学习模型中的偏差问题。请参阅面部识别技术中的种族歧视sitn.hms.harvard.edu/flash/2020/racial-discrimination-in-face-recognition-technology)以获取详细讨论和更多信息。

如您所预期的那样,合成数据可以自动生成和标注。因此,在数据生成和标注过程中,可以消除或最小化人为因素带来的错误。因此,预计合成数据中的人为错误较少。同时,可以生成数据,使其在人口中均匀分布。因此,可以生成无偏见的训练和测试数据,以支持各种应用和场景。此外,在数据集存在偏差问题时,合成数据生成方法可以轻松重新配置以解决这些问题,这比真实数据快得多。

多样性

生成合成数据的过程可以定制,以覆盖罕见的情况和场景,这些情况不常见、难以捕捉或标注成本过高。尽管可能精心整理和标注多样化的真实数据集,但这极为困难,需要更多的努力、时间和预算。例如,在恶劣天气条件下捕捉真实数据比正常天气条件下更困难。同时,在自然灾害和灾难期间,如地震、野火、飓风、龙卷风和火山爆发,捕捉数据极为困难。这限制了类似场景下机器学习模型的可用性。因此,基于机器学习模型的生命攸关系统安全攸关系统SCSs)在这些场景下可能会失败或出现故障。这种故障可能导致死亡、受伤、设备损坏和对环境的危害。此外,还有一些事件虽然发生频率较高,但难以捕捉,例如盗窃、儿童性剥削、家庭暴力、诈骗和欺诈、街头骚扰和恐怖主义。

可以设计或配置统计模型或模拟器等合成数据生成技术,以涵盖所有这些场景。因此,它使机器学习模型对类似场景具有更强的鲁棒性,从而拯救生命和财产,并保护社会。此外,它为研究人员专注于罕见条件、事件和场景打开了大门。因此,可以生成多样化的平衡合成数据集,以推进各个领域的科学研究。同时,合成数据可以增强现有的真实数据集,使它们更加多样化和均衡。

可控性

自然及其错综复杂的进程和现象产生了真实数据。例如,你可以收集人脸图像来训练人脸识别算法,但你无法控制数据生成过程本身。你可能选择考虑或忽略某些属性,但你无法扰动人类在现实世界中可能呈现的面貌!你可以使用过滤器或任何你想要的图像处理技术,但仍然,你只是在改变你对这些图像的感知。换句话说,当你戴上太阳镜时,你并没有使世界变得不饱和:你只是感知到世界变得更暗,颜色饱和度降低。这些是完全不同的两个概念!

合成数据允许你按照自己的意愿改变世界本身。例如,你可以创造一个所有人穿着相同衣服、以相同方式行走并持有相同物品的城市!你可能在这里提出一个好问题:为什么机器学习研究人员或从业者一开始就想要做这件事?

能够控制合成数据生成过程在机器学习领域极为重要。它使你能够在极为罕见的情况下训练和测试你的模型,分析算法的鲁棒性和准确性,并反复检验假设、机器学习模型的设计和训练数据。合成数据赋予你控制环境参数、元素及其相互作用的权力。因此,无需生成无关或冗余的数据,这些数据对你的机器学习模型并无帮助。因此,使用合成数据,你可以管理、控制和引导数据生成和标注过程,以实现你的目标。

可扩展性

机器学习模型对于众多行业至关重要,包括汽车、医疗保健、金融和娱乐行业。对更精确和鲁棒的机器学习模型的需求促使研究人员提出更深层次和更复杂的机器学习模型。这些深度模型通常由更多层和更多的神经元组成。这意味着在训练过程中需要调整大量的参数。因此,随着这些行业的演变,机器学习模型需要更多的训练数据(见图 5.2):

图 5.2 – 为了提高盈利能力,公司需要精确且复杂的机器学习模型,这需要更多的训练数据

图 5.2 – 为了提高盈利能力,公司需要精确且复杂的机器学习模型,这需要大量的训练数据

不幸的是,收集、清理和标注真实数据的过程非常缓慢且昂贵。公司需要迅速应对市场变化;否则,他们可能会失去客户、声誉和机会。

合成数据具有完美的可扩展性:一旦配置了数据生成和标注流程,就很容易在必要时根据新条件生成大规模数据集。例如,你可以使用生成对抗网络GANs)、变分自编码器VAEs)或CARLA等模拟器生成无限数量的训练图像(carla.org/)。

自动数据标注

合成数据的主要优势之一是自动数据标注。由于数据生成过程是可控的,因此可以使用合成数据进行自动标注。例如,如果你使用像虚幻Unity这样的游戏引擎来生成和标注合成数据,就可以标记对象,从而确切地知道在给定帧中摄像头看到了哪些对象。

这就是合成数据的优势!它为你节省了大量时间、精力和金钱,这些原本需要你花费在标注真实数据上。此外,你可以在不担心标注者泄露敏感信息的情况下标注私人或机密数据。

标注质量

合成数据是自动标注的,与真实数据不同。人为因素错误被最小化和限制。因此,可以标注高质量和大规模的合成数据集。例如,合成数据算法可以提供到像素级别的精确真实值,这对于由于人类标注者的限制而无法使用真实数据实现语义分割来说是不可能的。在处理真实数据时,质量和数量之间往往存在权衡。使用合成数据,你可以用更少的时间和更低的预算实现这两个目标。

低成本

正如我们提到的,合成数据不需要你从现实世界中捕获数据,也不需要标注者进行标注。可以使用适当的算法生成和自动标注合成数据。因此,在开发生成和标注流程后,可以生成无限数量的训练示例。例如,生成包含一千张图像的训练数据集和生成包含一百万张图像的训练数据集,所需的成本几乎相同!

在下一节中,我们将探讨合成数据的一个特定优势——即使用它来解决敏感数据和应用中的隐私问题。

使用合成数据解决隐私问题

在某些领域,如医疗保健和金融,数据量很大,但主要障碍是标注和共享数据。即使我们有一个“完美”标注的大规模真实数据集,有时我们也不能与机器学习从业者分享它,因为它包含可能被第三方用于识别个人或揭示关于企业和组织的关键信息的敏感信息。

如我们所知,机器学习模型没有数据就无法工作,那么解决方案是什么?一个简单的解决方案是使用真实数据生成合成数据,我们可以与他人分享而不会出现任何隐私问题,同时仍然代表真实数据。我们可以利用一些合成数据生成方法,利用真实数据集生成一个合成数据集,该数据集仍然代表真实数据中变量之间的关系、隐藏模式和关联,同时不泄露敏感信息:

图 5.3 – 一些合成数据集生成方法将敏感信息从数据模式中分离出来

图 5.3 – 一些合成数据集生成方法将敏感信息从数据模式中分离出来

在这个范围内,我们可以理解合成数据生成方法将敏感信息从变量之间的关联和关系中分离出来(参见图 5.3)。因此,机器学习模型仍然可以在合成数据上训练,并学习原始真实数据中的隐藏模式,而无需直接在它上面进行训练。

合成数据不包含关于真实个人的信息,因此不会造成伤害。例如,假设你有一个合成的人脸数据集。你可以随意使用这些数据。此外,你也不会受到使用真实人脸时那样的法规限制。这将使你能够探索新的创意想法。然而,如果你打算使用来自真实人类的敏感信息,你将仅限于你收集数据时所用的主要目的。因此,在没有参与者的许可下,你不能调查新的想法。此外,数据不应保留超过必要的期限。所有这些规定都限制了敏感真实数据集的可使用性,这使得合成数据成为一个完美的替代品。有关更多信息,请查阅《2018 年数据保护法案》,这是英国对通用数据保护条例GDPR)的实施(www.gov.uk/data-protection)。

在下一节中,我们将讨论为什么合成数据是解决数据生成和标注中的成本和时间效率问题的解决方案。

使用合成数据解决时间和效率问题

合成数据的自动数据生成消除了真实数据整理和标注流程中的许多不必要的元素。收集真实数据通常需要特殊设备,如高分辨率相机、麦克风或激光雷达。同时,你需要受过使用此类设备培训的工程师和技术人员。你会在培训工程师和购买或租赁此类设备上浪费时间和金钱。通常,数据整理员需要出差并访问各种地点以收集合适的数据,这意味着你将不得不支付交通、住宿、保险等费用。

合成数据是解决这些问题的有效方法(见图5.4)。除了前面提到的问题之外,我们还可以得出结论,合成数据比真实数据具有更低的碳足迹。因此,它对环境来说甚至更好!

数据标注是导致真实数据集繁琐的主要问题之一。标注大规模数据集是一个极其昂贵且耗时的过程。标注大规模数据集可能需要数周、数月甚至数年。完成标注过程所需的大量时间可能会使公司落后于竞争对手,导致它们失去市场份额和客户。

如果你正在处理真实敏感数据,情况会更糟。根据法律,在存储、处理、标注或转移此类数据时必须格外小心。这意味着需要更多的预算、努力和时间。然而,使用合成数据可以消除所有这些额外的工作,并减轻你的工作负担:

真实数据 合成数据
记录/捕获设备
交通/住宿
训练
保险
时间
规范
↑ 你需要更多和 ↓ 你需要更少

图 5.4 – 合成数据与真实数据的比较

在下一节中,我们将了解为什么与真实数据相比,合成数据可以覆盖罕见和特殊场景。

合成数据作为罕见数据的革命性解决方案

在现实世界中,由于事件或现象的罕见发生,会出现罕见数据。换句话说,这些事件发生,但频率较低。我们可以将这些事件大致分为以下类别:

  • 自然灾害:这个类别包括洪水、小行星撞击、地震和海啸等事件

  • 人为因素:这个类别包括工业事故、金融危机和暴力冲突等事件

这些事件在环境上造成了许多重大变化,可能导致最先进的机器学习模型失效。例如,在建筑物疏散的情况下,人脸识别系统可能无法正常工作,因为随着建筑物变得更加拥挤,移动模式可能会改变。虽然这些事件很少发生,但它们对社会的影响是巨大的。不适当的机器学习模型可能会大大增加死亡和受伤的人数。

为了使机器学习模型既稳健又准确,这些模型需要在标准和罕见条件下进行训练和测试。捕捉罕见事件的真实数据极其困难且昂贵。大多数机器学习模型假设它们将在标准条件下和场景下工作。不幸的是,这些机器学习模型通常在偏离标准场景的任何场景下都会失败或挣扎。例如,在《在恶劣条件下进行语义分割:基于天气和夜间感知合成数据的方法》 (bmvc2022.mpi-inf.mpg.de/0977.pdf)一文中,研究人员证明了最先进的语义分割方法在标准条件下,如正常天气条件和充足照明下表现良好。然而,这些方法在恶劣条件下,如雾天、雨天和雪天或夜间,会挣扎或失败。

忽略罕见场景的关键原因是,在这些情况下收集训练数据可能需要很长时间,需要大量的训练和努力来捕捉这些罕见事件,并且可能是一个危险的过程。最后,我们应该注意,罕见数据不仅对训练目的有用——它对于理解机器学习模型在实际中的局限性是至关重要的。

如前所述,现实世界中的真实数据是不平衡的。因此,我们从现实世界中收集的数据将反映这种不平衡。不幸的是,机器学习模型对不平衡数据集很敏感。因此,不平衡的训练数据集会导致机器学习模型对问题的理解出现偏差。例如,如果我们在一个包含 30 只猫和 70 只狗的数据集上训练一个猫狗分类器,该模型将倾向于预测狗的次数是预测猫的两倍。因此,平衡的训练数据集可以使模型训练得更好,收敛得更快。

标准条件、事件和属性在现实世界中比罕见事件更有可能出现。因此,你更有可能拥有一个专注于正常条件而忽视罕见条件的特定数据集。

如你所预期,合成数据可以用来模拟这些罕见事件。因此,使用合成数据生成一个完美平衡的大规模数据集是容易实现的。合成数据生成方法可以用来从头开始生成完整的训练数据集。同时,合成数据可以被用来补充真实数据集。因此,你可以使你的机器学习模型对罕见事件和条件更加稳健。

合成数据生成方法

生成合成数据有不同的方法:其中一些基于统计模型,而另一些则依赖于游戏引擎和模拟器。统计模型是非确定性的数学模型,包括表示为概率分布的变量。根据问题,这些模型通常使用真实数据进行训练,以理解数据中的隐藏模式和相关性。然后,训练好的机器学习模型可以自动生成新的样本,如图像、文本、表格等。这些新样本可以被其他机器学习模型用于训练或测试目的。

使用游戏引擎和模拟器也可以生成合成数据。这些工具被用来创建 3D 虚拟世界。这些 3D 世界可以通过程序内容生成PCG)技术来生成,以控制场景属性、场景元素之间的交互以及生成数据的多样性和质量。

需要注意的是,大多数合成数据生成方法的主要挑战是构建数据生成和标注流程,这需要仔细的设计和工程。然而,一旦流程准备就绪,通常使用起来很简单,并且可以用于极其广泛的应用。

摘要

在本章中,我们学习了使用合成数据的主要优势。我们讨论了合成数据易于生成、管理和标注。当涉及到我们与敏感真实数据相关的隐私问题时,利用合成数据是一个理想的解决方案。

在下一章中,我们将学习如何利用模拟器和渲染引擎生成合成数据。

第三部分:合成数据生成方法

在本部分,你将了解主要的合成数据生成方法。你将学习如何利用模拟器和渲染引擎、生成对抗网络GANs)、视频游戏和扩散模型来生成合成数据。你将探索这些方法在机器学习中的潜力。此外,你将了解每种方法的挑战以及优缺点。本部分将提供实际操作示例,以学习如何在实践中生成和利用合成数据。

本部分包含以下章节:

  • 第六章利用模拟器和渲染引擎生成合成数据

  • 第七章探索生成对抗网络

  • 第八章视频游戏作为合成数据的来源

  • 第九章探索用于合成数据的扩散模型

第六章:利用模拟器和渲染引擎生成合成数据

在本章中,我们将介绍使用模拟器和渲染引擎生成合成数据的一种知名方法。我们将探讨创建模拟器和自动生成标注合成数据的主要流程。随后,我们将重点介绍挑战,并简要讨论两个用于生成合成数据的模拟器。

在本章中,我们将涵盖以下主要主题:

  • 模拟器和渲染引擎:定义、历史和演变

  • 如何生成合成数据

  • 挑战和限制

  • 案例研究

模拟器和渲染引擎简介

在本节中,我们将深入探讨模拟器和渲染引擎的世界。我们将探讨这些用于生成合成数据的有力工具的历史和演变。

模拟器

模拟器是一种软件或程序,旨在模仿或模拟现实世界的某些过程或现象。模拟器通常创建一个虚拟世界,科学家、工程师和其他用户可以在其中测试他们的算法、产品和假设。同时,你可以使用这个虚拟环境来帮助你了解和实践复杂任务。这些任务通常在现实世界中执行是危险且代价高昂的。例如,驾驶模拟器教导学习者如何驾驶,以及如何应对诸如儿童突然横穿街道等意外情况,这在现实世界中是极其危险的。

模拟器被用于各种领域,如航空、医疗保健、工程、驾驶、太空、农业和游戏。在图 6.1中,你可以找到这些模拟器的示例。

图 6.1 – 驱动、工程、医疗保健和农业中使用的模拟器示例

图 6.1 – 驱动、工程、医疗保健和农业中使用的模拟器示例

接下来,我们将介绍渲染和游戏引擎。

渲染和游戏引擎

渲染和游戏引擎是主要用于生成图像或视频的软件。它们由各种子系统组成,负责模拟,例如物理、光照和声音。它们通常用于游戏、动画、虚拟现实、增强现实和元宇宙等领域。与模拟器不同,游戏引擎可以用来创建可能或可能不是旨在模仿现实世界的虚拟世界。游戏引擎主要用于开发游戏。然而,它们可以用于训练和模拟、电影和电视以及可视化。在图 6.2中,你可以看到一些现代渲染和游戏引擎的示例。

图 6.2 – 现代渲染和游戏引擎的示例

图 6.2 – 现代渲染和游戏引擎的示例

接下来,我们将更深入地了解渲染和游戏引擎的历史。

模拟器和游戏引擎的历史和演变

游戏引擎的大致出现始于 20 世纪 70 年代。那个时代的计算机在处理能力和内存方面有限。当时,大多数游戏都是二维游戏,如 《乒乓》《太空战争》。它们局限于简单的图形、基本的照明、基本的着色和有限的视觉和声音效果。

硬件的大幅进步导致了更复杂的游戏引擎的出现。这些游戏引擎,如 Unreal (www.unrealengine.com) 和 Unity (unity.com),促进了丰富、逼真的虚拟世界的创建。随着物理模拟变得更加复杂和先进,逼真图形的发展也同步进行。这使得可以模拟复杂的物理和场景元素之间的交互,例如流体动力学和布料模拟。在最近几年,许多逼真、复杂的游戏被发布,如 《使命召唤》 (www.callofduty.com) 和 《侠盗猎车手》 (www.rockstargames.com/games/vicecity)。

复杂且易于使用的游戏引擎,如 Unity 的可用性,使游戏开发民主化,并使其比以往任何时候都更容易接触。因此,游戏开发不仅限于大型科技公司,也向独立公司和艺术家开放。

同时,最近手机数量的巨大突然增加使得移动游戏成为研究和工业更具吸引力的目的地。

最近,合成数据研究人员开始尝试使用游戏引擎和视频游戏来生成丰富的合成数据。这一领域的两个先驱作品是《玩数据:计算机游戏中的真实数据》 (arxiv.org/abs/1608.02192) 和 《域随机化:将深度神经网络从仿真转移到现实世界》 (arxiv.org/pdf/1703.06907.pdf)。

在下一节中,我们将探讨如何使用模拟器和游戏引擎生成合成数据的确切方法。

生成合成数据

在本节中,我们将学习如何使用现代游戏引擎,如 Unity 和 Unreal,生成合成数据。

为了生成与其对应真实数据的合成数据,建议我们遵循以下步骤:

  1. 确定要生成的任务和真实数据。

  2. 在游戏引擎中创建 3D 虚拟世界。

  3. 设置虚拟摄像机。

  4. 添加噪声和异常。

  5. 设置标签流程。

  6. 使用真实数据生成训练数据。

在本节中,我们将详细讨论这一过程的各个方面。

确定要生成的任务和真实数据。

合成数据生成过程的第一步是定义任务、数据的类型以及要生成的真实情况。例如,数据可以是图像、视频或音频。同时,你需要确定为你的问题生成哪些真实情况。例如,你可以生成语义分割、实例分割、深度图、法线图、人体姿态以及人体部位语义分割,仅举几例。

接下来,我们需要了解如何创建 3D 虚拟世界,这将在下一节中探讨。

在游戏引擎中创建 3D 虚拟世界

首先,我们必须定义环境、其元素以及这些元素之间的相互作用。你可能需要决定你需要的虚拟场景的 photorealism 级别、视觉复杂度程度以及变化和多样性的范围,从而确定合成数据。一般来说,对于一个典型的生成合成数据计划,我们可以遵循以下步骤:

  1. 准备和概念化

  2. 建模

  3. 实体化和纹理化

  4. 集成到游戏引擎中

  5. 精炼和测试

接下来,我们将深入探讨这些方面的每一个,并提供更深入的见解。

准备和概念化

在创建 3D 虚拟世界之前,我们需要检查我们对要创建的虚拟世界的想法。建议绘制简单的草图和草图来可视化世界的元素以及它们将如何相互作用。你可能需要记下以下内容:要模拟的天气条件、室内或室外环境、一天中的时间以及场景的拥挤程度,仅举几例。此外,你需要决定使用哪个游戏引擎,例如UnityUnrealCryEngine。你还需要决定使用哪个渲染管线,这取决于游戏引擎本身。例如,Unity 游戏引擎有不同的渲染管线,如内置渲染管线(BRP)高清渲染管线(HDRP)通用渲染管线(URP)可脚本渲染管线(SRP)。渲染管线的选择也取决于你想要达到的 photorealism 程度。此外,一些游戏引擎可能支持各种编程语言,例如支持 C++和 C#的 CryEngine。因此,你可能需要决定使用哪种语言。

在此之后,我们需要确定要使用的资产,例如对象、材料、视觉效果和声音效果。同时,你可能需要考虑预算、时间框架以及你团队的技能。

建模

在对 3D 虚拟世界有一个明确的概念之后,下一步是开始建模阶段。3D 建模是使用适当的建模软件创建 3D 对象的过程。3D 建模在游戏和娱乐行业、工程领域和建筑领域得到广泛应用。为了构建 3D 虚拟世界,我们需要创建其元素,如建筑、树木、行人和车辆。因此,我们需要决定是导入还是建模这些元素。我们可以使用如Blender (www.blender.org)、ZBrush (pixologic.com)和3ds Max (www.autodesk.co.uk/products/3ds-max)等软件进行 3D 建模。正如你所预期的那样,一个简单的解决方案是从如Adobe 3D Substance (substance3d.adobe.com)和Turbosquid (www.turbosquid.com)等网站导入这些元素。然而,高质量的 3D 模型通常价格昂贵。此外,需要注意的是,建模复杂的 3D 对象可能是一个具有挑战性且耗时的过程,需要技术技能、努力和时间,但这取决于要建模的对象和技术约束,如多边形数量。

图 6.3 – 从汽车草图(左)创建的 3D 汽车模型示例(右)

图 6.3 – 从汽车草图(左)创建的 3D 汽车模型示例(右)

图 6.3 展示了建模阶段后的输出示例,在这个例子中是一个汽车。

材质化与纹理化

在创建 3D 模型或网格后,我们需要添加该对象的物理属性,如颜色、透明度和反射性。这些属性模拟了物体和表面的物质。另一方面,纹理化用于模拟表面细节,如划痕和图案,并使物体呈现出类似真实世界物体的非均匀外观。在大多数游戏引擎中,这些信息使用纹理图进行编码。图 6.4 展示了经过材质化和纹理化过程的 3D 对象。

图 6.4 – 材质化与纹理化前后(左)和(右)的 3D 对象

图 6.4 – 材质化与纹理化前后(左)和(右)的 3D 对象

集成到游戏引擎中

当 3D 虚拟世界的元素准备就绪后,我们需要将它们添加到场景中。我们还需要配置和设置照明和虚拟相机:

  • 照明:这是创建逼真场景的一个关键步骤。在虚拟世界中添加灯光以赋予深度和氛围感。通常有两种照明选项:预渲染照明使用光照贴图和实时照明。照明是基础但计算成本高昂。因此,你应该注意这一步以达到你的目标逼真度和帧率。

  • 虚拟相机:一旦生成虚拟世界,就使用虚拟相机来捕获所需的合成数据。相机的行为通常使用脚本进行控制。相机的参数和行为可以配置以匹配现实世界场景并实现预期的行为。相机参数包括视场角(FoV)景深(DoF)传感器尺寸镜头位移

精炼和测试

最后一步是检查生成的合成数据,并对虚拟世界设计进行迭代。在这个阶段,你可以修复错误并优化性能。正如预期的那样,创建 3D 虚拟世界不是一个简单的过程。它需要努力、时间和技术技能。然而,一旦虚拟世界创建完成,它可以被利用来生成用于大量应用的大规模合成数据集。

设置虚拟相机

在虚拟世界中,相机在合成数据生成过程中起着至关重要的作用。它代表观察者,通常用于捕获图像、音频和视频。捕获的数据可能用于训练和测试机器学习模型。

正如我们之前提到的,相机属性和属性可以被自定义和配置以达到目标行为。例如,相机的视场角(FoV)控制你的观察者代理可以感知的世界部分,因此,你可以在一个生成的图像中捕获多少视觉信息。图 6.5显示了使用不同视场角值生成的两个图像。

图 6.5 – 使用虚幻游戏引擎中的两种不同视场角(FoV)捕获的场景

图 6.5 – 使用虚幻游戏引擎中的两种不同视场角(FoV)捕获的场景

请注意,相机位置是固定的,我们只改变了视场角。此外,我们可以控制相机的运动和过渡以达到所需的行为。

相机可以在 3D 虚拟世界中采取不同的设置来模仿现实世界中的相关设置。以下是一些相机设置的示例:

  • 固定摄像机: 在捕捉场景时,摄像机不会改变其位置或方向。这种摄像机设置可以用来从特定的视角记录场景。这是最简单的设置;它易于实现,且不需要脚本。然而,你需要注意摄像机的位置和属性。否则,动态物体可能会意外地阻挡摄像机的视线。在模拟器和游戏引擎中,可以使用固定摄像机,例如,来模拟交通监控摄像机或体育直播中使用的固定摄像机。

  • PTZ 摄像机: 这是一种特殊的摄像机设置,其中摄像机可以平移、倾斜和缩放。在现实世界中,这种类型通常由操作员控制,以捕捉感兴趣的物体或特定事件。因此,摄像机可以改变其方向和视野来实现这一点。在虚拟世界中,摄像机可以通过编程来实现这一点,或者可以在模拟或合成数据生成过程中由人工操作员控制。这种设置为您提供了更多的自由度来捕捉场景。然而,可能需要脚本来实现预期的摄像机行为。

  • 第一人称摄像机: 第一人称视角是计算机视觉的一个基本领域。这种摄像机设置通过佩戴摄像机来模拟代理观察世界。它在游戏和虚拟现实、执法、医学和教育等领域有巨大的应用。例如,在第一人称数据上训练的机器学习模型可以用来协助外科医生并提高培训、决策、表现和准确性。有关详细讨论,请参阅人工智能辅助手术指导:使用语义分割在腹腔镜胆囊切除术中识别手术解剖 (pubmed.ncbi.nlm.nih.gov/33196488)。

  • 空中或无人机摄像机: 这种摄像机设置对于飞行和无人机模拟器至关重要。它模拟了安装在无人机或无人机上的摄像机。通常,它用于模拟场景的鸟瞰视图。它具有广泛的应用范围,可以用来增强需要使用无人机捕获的训练图像的机器学习模型的表现。它支持各种计算机视觉任务,如目标检测、分类、跟踪和识别。

  • 立体摄像机: 立体摄像机是一种特殊的摄像机,具有两个相距较近的镜头,可以利用它们来模拟人类感知深度的方式。两个镜头之间的距离称为眼间距,通常与人类眼睛之间的距离相似:大约 6.35 厘米。这个距离对于在视觉系统中创造深度感至关重要。这种类型的摄像机对于 VR 和沉浸式 3D 体验非常重要。

  • 跟踪相机:这种类型用于跟踪感兴趣的对象。在虚拟世界中,这种相机可以被编程来跟随所需的对象,这有助于创建专注于目标对象的大规模合成数据。例如,在虚拟世界中跟踪人类进行动作识别任务是可能的。这将帮助你生成专注于你的主题(人类)的大规模训练数据。你也可以使用其他相机设置,但最终你会得到很多没有动作或你的感兴趣对象不明显的视频。此外,你也可以使用这种相机设置进行视觉目标跟踪和其他类似任务。

下一步是添加噪声。

添加噪声和异常

现实世界并不完美,存在异常。在图像生成的背景下,噪声和异常指的是对主要模式、过程和现象的偏离。例如,当我们观察夜晚的街灯柱时,其中一小部分可能被意外关闭,灯光可能闪烁,柱子可能略微旋转,涂上不同的颜色,或者有不同的尺寸。向虚拟世界元素的属性和行为中添加噪声和异常可以提高现实感并提高生成合成数据的使用性。关于行为异常的另一个例子可以在观察行人过马路时看到。大多数人会等待绿灯或行人信号,两边看,然后在斑马线上过马路。另一方面,一小部分人可能会在红灯亮时过马路,或者可能没有注意到来车而过马路。这种行为异常,例如,应该在虚拟世界中模拟,以确保生成的训练数据多样化。因此,在这个数据上训练 ML 模型将确保一个鲁棒的 ML 模型。

设置标注流程

标注流程取决于你的问题和计划如何利用合成数据。你可能只想生成训练数据,因为现实世界中这太昂贵了,你可能更愿意请人类标注员标注你的数据。另一方面,你可能希望在模拟器或渲染引擎中自动化标注过程。例如,CARLA、NOVA 和 Silver 等模拟器支持为各种计算机视觉任务生成带有相应真实值的数据。

使用真实值生成训练数据

到目前为止,合成数据生成管道应该已经准备好了。之前的步骤可能具有挑战性、成本高昂且耗时。然而,它们仅用于设置系统。在此之后,您可以利用该系统生成特定任务、自动标注的大规模数据集。更改标注协议简单且与真实世界数据集相比成本不高。请注意,我们没有提供使用游戏引擎或模拟器生成合成数据的手动示例,因为本书的重点不在于合成数据生成方法的实现和编码。然而,它致力于该过程的理论、概念和设计方面。有关实现和编码方面的更多详细信息,请参阅 Unity 计算机视觉(unity.com/products/computer-vision)和合成计算机视觉(github.com/unrealcv/synthetic-computer-vision)。

在下一节中,您将了解部署此合成数据生成方法的主要限制。

挑战与限制

在本节中,我们将强调使用此方法进行合成数据生成的主要挑战。我们将探讨现实主义、多样性和复杂性问题,这些问题在使用此方法进行合成数据生成时带来一些困难。

现实主义

合成数据与真实数据之间的领域差距是限制合成数据可用性的主要问题之一。为了使合成数据有用,它应该模仿其真实对应物的分布和统计特性。因此,对于计算机视觉问题,我们需要确保高度的真实感,否则,在合成数据上训练的机器学习模型可能无法很好地推广到真实数据。

使用游戏引擎和模拟器实现高度的真实感并非易事。即便借助当代游戏引擎如 CryEngine、Unreal 和 Unity,我们仍需付出努力、技巧和时间来创建真实感场景。

接近现实主义并因此减轻由游戏引擎和模拟器生成的合成数据的领域差距问题的三个基本要素如下。

真实感

对于计算机视觉问题,生成真实感图像对于训练和测试机器学习模型至关重要。构建真实感场景需要以下条件:

  • 高质量资产:3D 模型、纹理和材料应该详细且逼真。

  • 光照:对于渲染真实感场景至关重要。您可能需要使用基于物理的渲染和基于物理的材料。此外,您还需要使用合适的光源并仔细配置它们的参数。

  • 后处理:如虚幻和 Unity 等游戏引擎支持后处理效果以提高逼真度。例如,您可以使用这些技术来模拟运动模糊、昏暗和景深。

现实行为

为了实现这一点,我们需要确保相机行为的逼真性。例如,相机不应穿透墙壁,其参数应接近现实世界相机的参数。此外,角色动画应该是逼真的,并模仿人体运动。此外,场景元素之间的交互应遵循物理规则,例如,当物体相撞时。

现实分布

在现实世界中,物体和属性并非随机分布。因此,在构建虚拟世界时,我们需要注意匹配这些分布。例如,在购物中心附近行走的人可能携带物体的概率更高。同时,在特定的天气条件下,某些动作和物体可能会更频繁或更少。例如,在雨天,行人可能会携带雨伞。

多样性

我们周围的世界非常多样化,包含着多种多样的元素,这些元素具有不同的颜色、形状和行为,并具有不同的属性。获得一个多样化的虚拟世界需要时间和努力。合成数据的使用价值主要来自于其生成大规模数据集以训练机器学习模型的优点。如果数据不够多样化,这会导致机器学习模型过度拟合有限的场景和属性。

复杂性

非线性、相互依赖、不确定性和现实世界的动态特性使得创建一个逼真的虚拟世界相当复杂。创建和模拟一个逼真的环境需要近似、简化和概括。这是由于现实性和计算复杂度之间的权衡。要创建一个能够捕捉所有现实世界属性、现象和过程的逼真虚拟世界,即使使用最先进的软件和硬件,也是不可能的。然而,我们可以通过仔细理解机器学习问题来达到可接受的逼真程度:对于这个特定的应用,什么是必要的,什么是辅助的?例如,如果我们想为面部识别任务生成合成数据,我们可能需要比场景中的其他元素更注意模拟逼真的面部。

查看两个案例研究

在本节中,我们将简要讨论两个用于合成数据生成的知名模拟器,并评论使用这些方法的潜力。

AirSim

AirSim 是一个由微软开发的跨平台模拟器,使用虚幻游戏引擎。它模拟无人机和汽车,为计算机视觉中的深度学习和强化学习方法的自动驾驶应用打开了大门。这个模拟器的关键特性包括以下几项:

  • 各种天气效果和条件

  • 激光雷达和红外传感器

  • 可定制环境

  • 真实物理、环境和传感器

如您所见,AirSim 可以利用来自各种传感器的数据生成丰富、大规模和高品质的合成数据。机器学习研究人员可以训练他们的模型融合不同的数据模态,以开发更鲁棒的自动驾驶算法。此外,AirSim 为深度估计、语义分割和表面法线估计任务提供自动标记的合成数据。有关此模拟器的更多信息,请参阅AirSimwww.microsoft.com/en-us/AI/autonomous-systems-project-airsim)。

CARLA

CARLA 是一个开源的自动驾驶模拟器。它由计算机视觉中心CVC)、英特尔和丰田开发,使用了虚幻游戏引擎。CARLA 是合成数据生成领域广为人知的模拟器。它拥有交通管理系统,用户可以配置多个传感器,包括深度传感器、激光雷达、多个摄像头和全球定位系统GPS)。CARLA 为许多计算机视觉任务生成合成数据,如语义分割、深度估计、目标检测和视觉目标跟踪。除了生成自动标记的大规模合成数据外,CARLA 还可以部署以生成多样化的交通场景。然后,研究人员可以利用生成的合成数据在众多驾驶场景中训练更精确和鲁棒的机器学习模型。请查阅项目的CARLA网页(carla.org)和CARLA: An Open Urban Driving Simulator论文(proceedings.mlr.press/v78/dosovitskiy17a/dosovitskiy17a.pdf)以获取更多详细信息。

还有许多其他模拟器,如 Silver、AI Habitat、SynthCity 和 IGibson。创建更真实的模拟器,支持更多任务,使模拟器更容易使用,以及使虚拟环境更可定制,是使用游戏引擎和模拟器开发未来合成数据生成器的主要研究方向。

摘要

在本章中,我们介绍了一种基于模拟器和渲染引擎的合成数据生成方法。我们学习了如何生成合成数据。我们强调了主要挑战,并讨论了 AirSim 和 CARLA 模拟器作为这种数据生成方法的例子。我们看到,通过使用模拟器和游戏引擎,我们可以为许多应用生成大规模、丰富且自动标注的合成数据。这降低了成本和努力,为训练鲁棒的机器学习模型提供了一个理想的解决方案。

在下一章中,我们将学习使用生成对抗网络GANs)进行合成数据生成的新方法。

第七章:探索生成对抗网络

在本章中,我们将介绍 生成对抗网络GANs)并讨论这种数据生成方法的演变。你将了解 GAN 的典型架构。之后,我们将解释其训练过程并讨论主要挑战。然后,我们将突出 GANs 的各种应用,包括图像生成和文本到图像的翻译。此外,我们还将研究一个实际编码示例,展示如何使用 GANs 生成逼真的图像。最后,我们还将讨论 GANs 的变体,例如条件 GANs、CycleGANs、CTGANs、WGANs、WGAN-GPs 和 f-GANs。

在本章中,我们将涵盖以下主要主题:

  • 什么是 GAN?

  • 训练 GAN

  • 利用 GANs 生成合成数据

  • 实践中的动手 GANs

  • GANs 的变体

技术要求

本章中使用的代码将在本书 GitHub 存储库的相应章节文件夹中提供:github.com/PacktPublishing/Synthetic-Data-for-Machine-Learning

什么是 GAN?

在本节中,我们将介绍 GANs 并简要讨论这种特定数据生成方法的演变和进展。然后,我们将解释典型 GAN 的标准架构以及它们是如何工作的。

GAN 的概念是在 2014 年的论文 Generative Adversarial Networks 中提出的(arxiv.org/abs/1406.2661),由 Ian J. Goodfellow 和他的研究团队完成。同年,条件 GANs 被引入,使我们能够生成更多可定制的合成数据。然后,在 2015 年,深度卷积 GANsDCGANs)被提出,这促进了高分辨率图像的生成。之后,在 2017 年,CycleGANs 被提出用于无监督的图像到图像的翻译任务。这为领域自适应等巨大应用打开了大门。StyleGAN 在 2019 年被引入,将 GANs 带到了新的领域,如艺术和时尚。

GANs 在视频合成领域也显示出令人印象深刻的进展。实际上,NVIDIA 最近的工作证明了它们巨大的潜力(请参阅此论文以获取更多详细信息:One-Shot Free-View Neural Talking-Head Synthesis for Video Conferencing,链接:arxiv.org/pdf/2011.15126.pdf)。

这项工作表明,GANs 现在可以使用单个源图像重新创建一个说话头视频。对于代码、数据集和在线演示,请参阅项目的页面:nvlabs.github.io/face-vid2vid。接下来,我们将深入研究 GANs 的架构。

大多数深度学习DL)方法和架构都是设计来预测某物的。这可能包括天气条件、股票价格、物体类别或其他。然而,GANs 被提出生成某物。这可能包括图像、视频、文本、音乐或点云。

这种能力的核心是学习如何从给定的域或数据集中生成训练样本的基本问题。GANs 是深度学习方法,可以学习复杂的数据分布,并可以用来生成属于特定分布的无限数量的样本。这些生成的合成样本在数据增强、风格迁移和数据隐私等方面有许多应用。

图 7.1 – GAN 的典型架构和训练过程

图 7.1 – GAN 的典型架构和训练过程

接下来,我们将学习如何训练 GANs。

训练一个生成对抗网络(GAN)

在本节中,我们将学习如何训练一个典型的 GAN。然后,我们将讨论主要挑战和困难。

生成对抗网络(GAN)是通过无监督学习技术进行训练的,其中两个子模型通过称为对抗训练的过程同时训练。一个典型的 GAN 由两个神经网络(通常是卷积神经网络)组成:生成器判别器。生成器接收一个随机噪声向量作为输入并生成一个合成(虚假)样本。生成器的目标是生成逼真且与真实数据不可区分的合成数据。另一方面,判别器被训练来区分真实和虚假样本。它接收一个样本并预测其数据源域:真实或虚假。如果判别器正确地识别了一个真实数据样本,则不会回传错误。然而,如果判别器未能识别合成样本,它将受到惩罚,而生成器将获得奖励。如果判别器能够正确地识别生成的合成数据,生成器将受到惩罚。通过这种方式,生成器和判别器都在不断努力提高其性能,从而生成越来越逼真的合成数据。请参阅图 7.1以可视化训练过程。让我们进一步探索并更详细地了解训练过程。

关于 GAN 实战训练的免责声明

请注意,我们不会提供如何训练 GANs 的实战元素,因为本章致力于 GANs 在合成数据生成方面的理论、概念和设计方面。因此,实战示例不在本章的范围内。但是,如果您热衷于训练您的 GAN,请参阅深度卷积生成对抗网络教程(www.tensorflow.org/tutorials/generative/dcgan)。

GAN 训练算法

训练算法是使 GAN 能够生成有用合成数据的关键方面。以下是一个可以用于训练 GAN 的逐步程序:

  1. 通过采样适合的噪声分布(如均匀分布、高斯分布、二项分布、泊松分布、指数分布、伽马分布和韦伯分布)来创建 z。

  2. 将 z 输入到生成器中,以产生一个合成或虚假样本,x fake。

  3. 将 x fake 和 x real 传递给一个 switch 模块,该模块随机选择其输入之一并将其传递给判别器。

  4. 判别器将给定的样本分类为真实或虚假。

  5. 计算误差。

  6. 将误差反向传播到生成器和判别器。

  7. 更新生成器和判别器的权重

接下来,我们将讨论损失。

训练损失

下一个显示的损失是用于训练 GAN 的许多损失之一。这个特定的损失是从交叉熵损失派生出来的:

L = E x[log(D(x))] + E z[log(1 − D(G(z)))]

让我们分解这个公式:

  • D(x) 是判别器对 x 来自真实数据集的估计

  • E x 和 E z 分别是真实样本和生成合成(虚假)样本的期望值

  • G(z) 是生成器对噪声向量 z 的输出

  • D(G(z)) 是判别器对合成样本是真实的估计

如预期的那样,GAN 的训练过程是复杂的,但它是一种生成逼真数据的有力技术,这促使研究人员探索新的方法来增强和加速其训练和收敛。接下来,让我们讨论一些这些挑战。

GANs in action

想要交互式演示 GAN 的训练过程,请参考浏览器中的玩转生成对抗网络(GANs) (poloclub.github.io/ganlab)。更多详情,请查看相应的论文 GAN lab: 通过交互式视觉实验理解复杂的深度生成模型 (minsuk.com/research/papers/kahng-ganlab-vast2018.pdf)。

挑战

现在我们将讨论在训练生成对抗网络(GAN)时遇到的一些常见问题和挑战。让我们探讨这些问题的原因:

  • 模式坍塌:在这种情况下,生成器过度拟合到有限数量的样本和模式,为不同的 z 值生成相同或相似的合成样本。例如,一个被训练生成猫图像的 GAN 可能会不断地生成几乎相同的猫图像,只是进行了一些细微的修改。这是我们不想看到的情况。使用 GAN 的目的就是要生成多样化的合成示例。当生成器学会产生一个或几个能够欺骗判别器的优秀合成样本时,就会发生这个问题。因此,生成器会避免生成其他样本,而更倾向于重复这些优秀的合成样本。对此问题有各种解决方案,例如展开 GANs (arxiv.org/pdf/1611.02163.pdf) 和 Wasserstein 损失 (arxiv.org/abs/1701.07875)。

  • 判别器饱和(梯度减弱):正如我们之前讨论的,生成器和判别器的训练是以对抗的方式进行。当判别器在区分真实样本和合成样本方面变得过于成功时,错误变得最小。因此,生成器就不再能学习到有用的东西。

  • 超参数敏感性和调整:与其他深度学习架构类似,GAN 有许多超参数,例如学习率、批量大小、层数、激活函数等。找到最佳超参数是问题和任务相关的,通常是一个训练错误的过程。因此,找到正确的架构和超参数以成功训练你的 GAN 是一个挑战。

  • 不稳定性和非收敛性:稳定生成器和判别器的训练过程并不容易。事实上,通常观察到某个子模型的学习效果比另一个好,这会导致 GAN 振荡,产生不可预测的行为,并且模型可能永远不会收敛。更多细节请参阅 On Convergence and Stability of GANs (arxiv.org/pdf/1705.07215.pdf)。

  • 计算复杂度:GAN 具有复杂的结构,由两个深度学习模型组成。这使得训练过程在计算上既昂贵又耗时。然而,有一些技术被提出以加快训练过程,例如 Small-GAN: 使用核心集加速 GAN 训练 (proceedings.mlr.press/v119/sinha20b/sinha20b.pdf) 和 投影 GANs 收敛更快 (proceedings.neurips.cc/paper/2021/file/9219adc5c42107c4911e249155320648-Paper.pdf)。

在下一节中,我们将深入探讨将 GAN 用于生成合成数据。

利用 GAN 生成合成数据

在本节中,我们将突出一些 GAN 的有趣应用。

GANs(生成对抗网络)有巨大的应用范围,因为它们可以用于数据增强、风格迁移、隐私保护和生成逼真的照片。

让我们讨论一些这些应用:

  • 生成图像:GANs 可以用来生成逼真的图像。例如,GANs 被用来生成手写数字、人脸、动物、物体和场景。请查看这篇论文以获取更多详细信息:渐进式增长 GANs 以提高质量、稳定性和 多样性 (arxiv.org/pdf/1710.10196.pdf)。

  • 生成卡通和动漫角色:GANs 可以被训练来生成吸引人和多样化的角色。这可以用来评估艺术家、游戏开发者和动漫设计师。更多详细信息,请查看论文使用生成对抗网络自动创建动漫角色 (arxiv.org/pdf/1708.05509.pdf)和网站(make.girls.moe)。

  • 图像到图像翻译:GANs 可以用来将图像从一个域转换到另一个域。例如,基于机器学习的色彩化通常使用 GANs 将灰度图像转换为彩色图像。基于条件对抗网络的图像到图像翻译 (arxiv.org/abs/1611.07004)和StarGAN:用于多域图像到图像翻译的统一生成对抗网络 (arxiv.org/pdf/1711.09020.pdf)是图像到图像基于 GAN 的翻译器的知名例子。

  • 文本到图像翻译:GANs 的另一个有趣应用是从给定的场景和对象的简短文本描述中生成吸引人的图像。例如,查看StackGAN:使用堆叠生成对抗网络进行文本到逼真图像合成 (arxiv.org/abs/1612.03242)和 DALL-E (openai.com/research/dall-e)。

除了我们讨论的应用之外,GANs 还可以用于以下非详尽列表中的有趣任务和应用:

  • 语义图像到照片翻译

  • 生成人脸照片

  • 人脸老化

  • 姿势引导的人像生成

  • 照片转表情符号

  • 照片编辑

  • 图像融合

  • 图像修复

  • 超分辨率

  • 视频预测

  • 3D 物体生成

  • 纹理合成

  • 异常检测

接下来,我们将深入探讨一个实际应用的实例,展示 GANs 在生成逼真合成图像方面的实际应用。

实践中的动手 GANs

让我们探讨如何在实践中利用 GAN 生成一些合成图像。我们将研究GANs 中潜在语义的闭式分解(arxiv.org/abs/2007.06600),以了解我们如何简单地为我们的人工智能问题生成合成图像。此示例的代码是从论文原始 GitHub(github.com/genforce/sefa)改编的。

我们首先导入必要的库,如下所示:

# import the required libraries
import cv2
import torch
import numpy as np
from utils import to_tensor
from utils import postprocess
from utils import load_generator
from models import parse_gan_type
from utils import factorize_weight
from matplotlib import pyplot as plt

然后,我们选择生成过程的参数,例如要生成的图像数量和噪声种子。请注意,seed参数将帮助我们在这个例子中获得多样化的图像:

num_samples = 1 # num of image to generate (min:1, max:8)
noise_seed = 186 # noise seed (min:0, max:1000)

接下来,我们有了由SeFa提出的 GAN 的潜在语义参数。简单来说,我们可以通过改变这些参数来改变合成图像的一些语义。例如,我们可以改变绘画风格、性别、姿势等生成的图像的语义。有关SeFa的更多详细信息,请参阅GANs 中潜在语义的闭式分解(arxiv.org/abs/2007.06600):

# params of generation
layer_idx = "0-1"  # ['all', '0-1', '2-5', '6-13']
semantic_1 = -1.4  # min:-3.0, max:3.0
semantic_2 = -2.9  # min:-3.0, max:3.0
semantic_3 = -1.2  # min:-3.0, max:3.0
semantic_4 = 0.2    # min:-3.0, max:3.0
semantic_5 = -1.4  # min:-3.0, max:3.0

现在,我们有以下模型:

  • stylegan_animeface512:这可以用来生成具有多种表情的动漫面孔。更多详情请参阅用于生成对抗网络的基于风格的生成器架构(arxiv.org/abs/1812.04948)。

  • stylegan_car512:这可以用来生成有趣的汽车模型。我们将在我们的例子中使用这个模型。

  • stylegan_cat256:我们可以利用这个模型来生成逼真的猫图像。

  • pggan_celebahq1024:这是一个渐进式增长 GANPGGAN),经过训练以生成逼真的名人图像。更多详情请参阅GANs 的渐进式增长以提高质量、稳定性和多样性(arxiv.org/abs/1710.10196)。

  • stylegan_bedroom256:这可以部署以生成卧室布局图像。更多详情请参阅分析并改进 StyleGAN 的图像质量(arxiv.org/abs/1912.04958)。

我们选择我们想要测试的模型名称:

# select model name, in this example we use "stylegan_car512"
model_name = 'stylegan_car512'

接下来,我们需要加载 GAN 的生成器。请记住,我们不需要判别器来生成图像。它仅用于帮助生成器训练生成我们想要的图像:

# load the pretrained model
generator = load_generator(model_name)

现在,我们将代码发送到生成器以从潜在空间中采样。代码仅仅是随机噪声。正是我们之前在图 7.1中看到的随机噪声向量 z:

codes = torch.randn(num, generator.z_space_dim).cuda()

然后,我们通过发送噪声向量(代码)来合成图像:

# generate the synthetic image from the code
images = synthesize(generator, gan_type, codes)

现在,让我们在图 7.2中可视化 GAN 的输出:

图 7.2 – 使用 StyleGAN 生成的图像

图 7.2 – 使用 StyleGAN 生成的图像

根据 SeFa 所描述的,改变潜在语义参数后,我们得到图 7.3所示的输出:

图 7.3 – 通过改变潜在语义参数来控制生成过程的 SeFa 方法

图 7.3 – 通过改变潜在语义参数来控制生成过程的 SeFa 方法

同样地,我们可以使用上述模型生成动漫面部表情、名人面孔和卧室布局的图像,如图图 7.4所示:

图 7.4 – 使用不同 GAN 模型生成的图像样本

图 7.4 – 使用不同 GAN 模型生成的图像样本

正如我们在本例中看到的,我们可以轻松地利用生成对抗网络(GANs)来生成多样化的、逼真的数据,用于训练和测试我们自己的机器学习模型。接下来,我们将探讨 GANs 的各种变体,这些变体促进了许多令人惊叹的应用。

GANs 的变体

在本节中,我们将探讨 GANs 的主要变体。对于 GANs 的一个有趣的实际应用,请参阅第十二章案例研究 3 – 预测分析,了解亚马逊如何利用 GANs 进行欺诈交易预测。更多应用,请参阅建筑环境中生成对抗网络:GANs 在数据类型和 尺度 上的综合回顾 (www.sciencedirect.com/science/article/abs/pii/S0360132322007089)。

条件 GAN (cGAN)

一个典型的 GAN 在给定一个随机噪声向量的情况下生成图像。然而,在许多场景中,我们确实希望控制生成的合成样本的属性和特性。例如,假设你正在部署一个 GAN 来生成人脸。标准的 GAN 架构没有让你指定生成人脸的一些属性的方法,例如性别、年龄、眼睛颜色和发长。使用 cGAN,我们可以在训练过程中对这些属性进行条件化。因此,我们能够生成具有特定属性的合成样本。更多详情,请参阅arxiv.org/abs/1411.1784上的条件生成对抗网络

CycleGAN

在一个旨在将图像从一个域转换到另一个域的图像到图像翻译任务中,深度学习模型通常需要两个域中图像的匹配对或成对对应关系。这非常难以实现。例如,想象一下为将一个季节(冬季)的图像映射到另一个季节(夏季)的图像准备这样的数据集。CycleGANs 是解决这个问题的优雅解决方案,它可以在仅给定两个域的图像集的情况下,无需任何匹配对,训练成在域之间执行未配对图像到图像翻译。因此,你只需要提供冬季和夏季拍摄的图像,无需在冬季和夏季捕捉相同的场景来提供匹配对。更多详情,请参阅 使用循环一致对抗网络进行未配对图像到图像翻译 (arxiv.org/abs/1703.10593)。

条件表格 GAN (CTGAN)

CTGANs 是 GANs 的一个特定变体,可以生成表格合成数据。其他 GANs 捕捉给定表格数据集中列或属性之间的依赖关系非常具有挑战性。CTGAN 是一种 cGAN,可以用来建模这些列之间的联合概率分布。CTGANs 在数据增强、插补和异常检测中有着巨大的应用。更多详情,请参阅 使用条件 GAN 建模表格数据 (arxiv.org/abs/1907.00503)。

水晶 GAN (WGAN) 和带梯度惩罚的水晶 GAN (WGAN-GP)

WGAN 和 WGAN-GP 是原始 GANs 的变体。与使用二元交叉熵损失来分类真实和假样本的 GANs 不同,这种变体利用 Wasserstein 距离来衡量真实和假数据概率分布之间的距离。此外,WGAN-GP 实现了一个梯度惩罚项,以强制对判别器施加 Lipschitz 约束。这两个变体已被证明能产生更好的结果,并且更稳定。更多详情,请参阅Wasserstein GAN (arxiv.org/abs/1701.07875) 和 改进 Wasserstein GANs 的训练 (arxiv.org/abs/1704.00028)。

f-GAN

f-GANs 是另一类利用f-散度来衡量和最小化真实和假样本概率分布之间差异的 GANs。这种 GANs 的变体已在图像和文本生成中得到广泛应用。更多详情,请参阅 f-GAN:使用变分散度最小化训练生成性神经网络采样器 (arxiv.org/abs/1606.00709)。

DragGAN

DragGANs 是 GANs 最近的一个有希望的变体,为许多令人惊叹的应用打开了大门,例如基于点的图像编辑。DragGANs 允许用户以交互式和直观的方式生成逼真的合成图像。DragGANs 因其独特的优化潜在空间的方法和独特的点跟踪方法而脱颖而出。更多信息,请参阅拖动你的 GAN:在生成图像流形上的交互式基于点的操作 (arxiv.org/abs/2305.10973)。

在我们继续之前,让我们总结一下。

摘要

在本章中,我们讨论了 GANs 是什么,它们的架构以及训练过程。同时,我们探讨了 GANs 是如何被用于各种应用的,例如图像到图像的翻译。此外,我们还提供了一个编码示例,展示了如何使用 GANs 生成逼真的图像。在本章中,我们还了解了 GANs 的主要变体。在下一章中,我们将通过探索利用视频游戏生成合成数据的另一种令人兴奋的方法来继续我们的学习之旅。

第八章:电子游戏作为合成数据来源

在本章中,你将学习如何以及为什么使用电子游戏进行合成数据生成。我们将讨论当前的研究,并突出在这个领域取得的成果。同时,我们将深入研究利用这种方法进行合成数据生成的主要挑战。本章的总体目标是帮助你全面理解利用电子游戏进行合成数据生成的方法。它将为你提供必要的知识,以了解这种有希望的合成数据生成方法的潜力和局限性。

在本章中,我们将讨论以下主要主题:

  • 电子游戏与合成数据

  • 使用电子游戏生成合成数据

  • 挑战与限制

游戏产业的影响

在本节中,我们将了解为什么电子游戏是合成数据生成的理想媒介。

电子游戏是主要用于娱乐的交互式电子游戏。玩家通常通过与游戏元素互动来实现目标。近年来,每年发布的游戏数量、质量和数量呈指数级增长。现在,电子游戏在教育、培训、康复、个人发展和最近在机器学习ML)研究中也得到了应用。具体来说,它们被展示为训练和测试 ML 模型的一个丰富而优秀的合成数据资源。

模拟器和 GANs 等合成数据生成方法具有前景,并为生成大规模和自动标注的数据集提供了一种巧妙的解决方案;请参阅第六章第七章。然而,由于设置数据生成系统所需的复杂性、时间和努力,它们仍然存在一些限制。以下是一些这些限制的总结:

  • 超逼真效果和领域迁移

  • 时间、努力和成本

接下来,让我们逐一更详细地讨论这些限制。

超逼真效果与真实-合成领域迁移

为了使合成数据有用,通常需要它具有超逼真效果。然而,达到高水平的超逼真效果并不简单。如果你还记得,我们在第六章中简要讨论了这些观点。这需要熟练的工程师、艺术家、设计师、照明和动画专家以及其他人员来实现这一目标。此外,运行这些最先进游戏引擎的硬件、游戏引擎本身、构建丰富和逼真虚拟世界的工具和资产都很昂贵,并且需要广泛的培训。例如,Wacom Cintiq Pro 24”的价格超过 2200 英镑,并且需要数月的培训。这些和类似的设备对于创建游戏中的 3D 内容是必不可少的。请参阅图 8**.1

图 8.1 – 游戏中 3D 或 2D 工作流程所需工具的示例

图 8.1 – 游戏中 3D 或 2D 工作流程所需工具的示例

运行 Unreal Engine 的系统要求如下:

  • Windows 10 64 位,四核英特尔或 AMD,2.5 GHz 或更快,8 GB RAM

  • macOS Big Sur,四核英特尔,2.5 GHz 或更快,8 GB RAM

  • Linux Ubuntu 18.04,四核英特尔或 AMD,2.5 GHz 或更快,32 GB RAM

为创建合成数据生成系统所需的软件、硬件和专家进行预算可能对小型公司和研究小组来说不可行。无法维持所需的逼真度会导致机器学习模型在从合成数据泛化到真实数据时遇到困难。因此,这限制了生成的合成数据在现实世界应用中的可用性。

时间、努力和成本

创建多用途模拟器 CARLA (carla.org) 需要 40-50 名研究人员、开发人员和艺术家。为了开发这个用于合成数据生成的有用系统,需要多年的持续工作。同样,GANs 的设计和训练也需要相当多的时间和精力。此外,训练还需要大量的计算和数据存储资源。合成数据生成方法的伦理考量也是其他问题。知识产权问题和偏见是这些担忧的例子。

寻找一个理想的合成数据生成方法仍然是热门话题,并且是部分解决的问题。游戏行业的最新进展激励研究人员探索使用视频游戏生成合成数据的潜力。预计到 2027 年,视频游戏行业的用户数量将达到 31 亿。预计到 2027 年,市场规模预计将超过 3800 亿英镑。更多详情请参阅 Statista Video Games Worldwide (www.statista.com/outlook/dmo/digital-media/video-games/worldwide)。

全球市场、技术的巨大进步以及对于更加逼真和吸引人的游戏需求的增加,为研究人员、游戏开发者、游戏工作室、投资者和游戏发行商打开了创造前所未有的、突破性的、逼真且多样化的虚拟世界和游戏的新大门。现在,你明白了为什么视频游戏是生成合成数据的一个优雅解决方案。在下一节中,我们将更详细地介绍如何利用视频游戏进行合成数据生成。

使用视频游戏生成合成数据

这种合成数据生成方法将问题从创建虚拟世界以生成合成数据转变为操纵视频游戏以生成合成数据。这种方法提供了一种方便且高效的方式来生成合成数据。以下列出了已经用于此目的的视频游戏示例:

下图展示了视频游戏的各种类型:

图 8.2 – 视频游戏类型的示例

图 8.2 – 视频游戏类型的示例

图 8.2所示的视频游戏类型多样性,使得通过利用视频游戏生成各种丰富的合成数据对研究人员来说更具吸引力。在机器学习应用中,可以利用视频游戏的各种方式,如下所示:

  • 利用游戏进行一般数据收集

  • 利用游戏进行社会科学研究

  • 利用模拟游戏进行数据生成

让我们详细讨论这些内容。

利用游戏进行一般数据收集

现代视频游戏出于各种原因收集玩家的数据,例如控制游戏难度、定制游戏体验以及根据用户数据个性化广告。这些游戏收集的数据可以用于游戏本身以外的其他目的。收集的数据可能包括以下内容:

  • 生物统计数据

  • 人口统计数据

  • 游戏玩法数据

让我们看看这些数据如何被使用。

生物统计数据

游戏开发者可能会收集玩家的生物统计数据以评估他们的参与度,并根据玩家的情绪、兴奋和困惑来控制游戏的一些方面。一些现代视频游戏收集的生物统计数据可能包括眼球运动、心率、头部和手部运动,以及脑电图EEG)信号。EEG 信号是在进行注意、阅读和睡眠等活动时大脑产生的电波。这包括像NevermindFar Cry 6X-Plane 12这样的视频游戏。Nevermind (nevermindgame.com)是第一个生理生物反馈冒险视频游戏。它使用心率传感器捕捉玩家的心率,以评估游戏过程中的恐惧、焦虑和压力。收集的数据可以用于广泛的实验,例如视频游戏与压力:压力评估和游戏内容如何影响心血管和情绪结果 (www.frontiersin.org/articles/10.3389/fpsyg.2019.00967/full)和通过 EEG 节律测量的动作实时策略游戏体验与特质焦虑对大脑功能的影响交互作用 (www.tandfonline.com/doi/full/10.1080/27706710.2023.2176004)。

人口统计数据

电子游戏可以被视为人口数据的丰富来源。广泛的全球玩家提供了关于他们年龄、性别、位置、语言、职业以及其他有价值的信息,例如个人可识别信息PII)。一些电子游戏,如 《我的世界》《模拟人生 4》,利用收集到的人口数据来改善玩家体验并增强参与度。因此,一些电子游戏可能为 7 岁以下的玩家移除暴力、血腥和成人语言。他们可能会根据收集到的人口数据激活或停用某些功能,例如游戏内的聊天和购买以及成熟度过滤器。

游戏玩法数据

游戏可以通过向用户提问或使用传感器来明确收集数据,也可以通过观察玩家在虚拟世界中的行为(包括互动、选择、学习和进步)来隐式收集数据。游戏玩法数据为定制游戏和提升整体游戏玩法及用户体验提供了宝贵的资源。这些游戏的例子包括 《使命召唤:黑色行动 III》《堡垒之夜》《英雄联盟》《魔兽世界》。游戏开发者利用游戏过程中的收集数据来平衡游戏机制和难度,并识别弱点、问题和错误。

利用游戏进行社会科学研究

游戏已被用作社会科学领域的合成数据来源。例如,研究人员部署了教育游戏来了解更多的学习体验,比较和对比教学方法,以及分析学习环境和学习工具。有关在社会科学中利用游戏的更多信息,请参阅 《用游戏教授社会科学》 (www.igi-global.com/article/teaching-social-studies-with-games/201873)。

在一些游戏中,例如 《文明 V》 (civilization.com/en-GB/civilization-5),玩家构建并控制一个文明。他们需要做出决策、规划、进行外交和制定未来计划。观察和记录玩家的行为,并将其与从玩家那里收集到的人口数据相结合,为社会科学研究人员提供了一个优秀且丰富的数据来源。其他类似的游戏,如 《Spent》 (playspent.org),也提供了关于玩家如何应对挑战以及他们如何在有限的预算下做出决策的有价值合成数据。

如预期的那样,收集社会科学数据的标准方法是调查和访谈。它们难以设计,耗时且昂贵。除此之外,它们并不愉快,也不容易享受。因此,预计会有错误或不准确的反馈或数据。另一方面,游戏提供了一个互动、真实且令人愉悦的体验,这使得生成的反馈和数据更加准确、详细和有价值。

利用模拟游戏进行数据生成

模拟游戏创建出可以用来教授玩家某些东西、装备他们新技能或磨练他们的知识和技能的真实世界的部分。模拟器从两个来源生成合成数据:模拟游戏中的环境和玩家的行为。模拟环境提供了诸如对象语义标签、天气条件和场景拥挤度等有价值的信息。另一方面,玩家的行为包括玩家如何处理问题、花费的时间、利用的资源、做出的决策以及与其他玩家的游戏中的交流。

如您现在所理解,视频游戏内部收集的数据可以用于许多目的,例如训练机器学习模型。然而,游戏开发者必须考虑数据法规,以确保他们不会违反或违反这些法规。在下一节中,您将了解这种合成数据生成方法的主要限制。

挑战和限制

在本节中,我们探讨这种合成数据生成方法的主要挑战。

与其他合成数据生成方法类似,利用视频游戏进行此目的存在一些挑战。主要挑战和缺点可以总结如下。

可控性

使用合成数据的主要优势是能够定制并完全控制此过程中的每个方面。然而,由于视频游戏并非用于研究目的而部署,3D 虚拟世界和场景元素已经创建、固定且难以更改。因此,添加或删除某些对象和动作并不容易。

游戏类型和合成数据生成的限制

根据游戏市场,某些游戏类型比其他游戏类型更受欢迎。例如,动作体育角色扮演第一人称射击 游戏比 文本冒险音乐 以及 节奏 游戏更受欢迎。因此,在适合的视频游戏有限可用的情况下,为某些应用生成合成数据可能不可行。

现实主义

正如我们之前提到的,现实主义对于弥合合成领域与现实领域之间的差距至关重要。许多最先进和畅销的游戏远非现实主义游戏。这些游戏的例子包括 PUBGMinecraftRed Dead Redemption。玩家通常更重视游戏玩法、剧情和叙事,而不是游戏中的照片级真实感。在视频游戏中实现现实主义图形是一个极具挑战性的过程,可能对游戏工作室来说并不划算。

伦理问题

利用视频游戏进行合成数据生成是一个复杂的话题。将玩家在游戏之外的数据用于研究或商业项目可能会引发隐私问题。在由视频游戏生成的合成数据上训练将使基于此数据源训练的机器学习模型在通常玩视频游戏的群体中更准确,而在其他不玩视频游戏的群体中则不那么准确。例如,仅使用由视频游戏生成的合成数据进行训练的面部识别系统可能在年轻人中表现良好,但可能难以应对通常不玩视频游戏的老年人。请参阅2022 年美国视频游戏玩家按年龄 群体 分布 (www.statista.com/statistics/189582/age-of-us-video-game-players)。

知识产权

没有游戏创作者的许可,我们不能利用视频游戏进行合成数据生成,因为游戏创作者通常拥有复制游戏的独家权利。如果我们修改游戏并将其用于其他目的,可能会侵犯知识产权和版权。同时,游戏本身生成的数据可能也受到相同的版权或许可约束。

摘要

在本章中,我们学习了视频游戏如何成为合成数据的有价值来源。我们了解到可以从视频游戏中收集生物识别、人口统计和游戏数据,并可用于众多基于机器学习的应用。我们深入了解了如何以及为什么可以从视频游戏中收集有关玩家的各种类型的数据。最后,我们讨论了使用视频游戏进行合成数据生成的局限性。

在下一章中,我们将深入探讨另一种生成合成数据的方法,即使用扩散模型。

第九章:探索用于合成数据的扩散模型

本章向您介绍扩散模型,这是合成数据生成的前沿方法。我们将强调这种新颖的合成数据生成方法的优缺点。这将帮助您根据自己的问题做出明智的决定,选择最佳的方法。我们将强调扩散模型的机会和挑战。此外,本章还包含一个全面的实践示例,提供生成和有效利用合成数据用于实际机器学习应用的动手经验。随着您对扩散模型的了解,您将了解在实践中使用这种合成数据方法的主要道德问题和关注点。此外,我们还将回顾一些关于这个主题的最新研究。因此,本章将为您提供必要的知识,以彻底理解这种新颖的合成数据生成方法。

在本章中,我们将涵盖以下主要主题:

  • 扩散模型简介

  • 扩散模型 – 优点与缺点

  • 实践中的动手扩散模型

  • 扩散模型 – 道德问题

技术要求

本章中使用的任何代码都将可在本书 GitHub 仓库的相应章节文件夹中找到:github.com/PacktPublishing/Synthetic-Data-for-Machine-Learning

扩散模型简介

在本节中,我们将探讨扩散模型。我们将将其与我们在第七章中介绍过的变分自编码器VAEs)和生成对抗网络GANs)进行比较。这将帮助您获得对生成模型的全面和综合理解。此外,这将使比较和对比这些方法的架构、训练过程和数据流变得简单。此外,我们还将学习如何训练一个典型的扩散模型。

扩散模型DMs)是一种生成模型,最近被提出作为一种聪明的解决方案来生成图像、音频、视频、时间序列和文本。DMs 在建模复杂概率分布、数据结构、时间依赖性和相关性方面表现出色。DMs 背后的初始数学模型最初是在统计力学领域提出的,并应用于研究气体和液体中粒子的随机运动。正如我们稍后将看到的,了解 DMs 至关重要,因为它们是强大的生成模型,通常可以生成比其他方法更高质量和更保护隐私的合成数据。此外,DMs 依赖于强大的数学和理论基础。

首先展示 DMs 可以用于生成逼真图像的工作之一是去噪扩散概率模型(arxiv.org/abs/2006.11239),该模型由加州大学伯克利分校的研究者提出。这项开创性工作随后被 OpenAI 的另一篇工作所跟进,题为扩散模型在图像合成上击败 GANs(arxiv.org/pdf/2105.05233.pdf),表明 DMs 在生成逼真的合成图像方面更胜一筹。然后,其他研究者开始探索这些 DMs 在不同领域的潜力,并将它们与 VAEs 和 GANs 进行比较。

变分自编码器VAEs)是生成合成数据最早的解决方案之一。它们基于使用编码器将数据从高维空间(如 RGB 图像)编码到潜在的低维空间。然后,解码器用于将这些编码样本从潜在空间重建到原始的高维空间。在训练过程中,VAE 被强制通过解码器最小化原始训练样本与重建样本之间的损失。假设模型在足够的训练样本上进行了训练,那么它可以用来通过从潜在空间采样点并使用解码器将它们解码到高维空间来生成新的合成数据,如图图 9**.1所示。

DMs 的训练过程

DMs(数据生成模型)用于生成与训练数据概率分布接近的合成数据。因此,一个重要的任务是学习我们训练数据的分布,然后利用我们对真实数据的了解来生成无限数量的合成数据样本。通常,我们希望使用快速生成方法生成高质量且多样化的合成数据。然而,每种生成方法都有其自身的优缺点,正如我们稍后将看到的。

图 9**.1所示,给定一个训练图像,来自真实数据,DM 向该图像添加高斯噪声以形成。这个过程会重复进行,直到图像仅仅变成随机噪声的图像,。这个过程被称为正向扩散。随后,模型开始去噪过程,在这个过程中,DM 接受随机噪声,,并逆转之前的过程(即正向扩散)以重建训练图像。这个过程被称为反向扩散

Figure 9.1 – 主要生成模型(VAEs、GANs 和 DMs)的训练过程和架构 –

图 9.1 – 主要生成模型(VAEs、GANs 和 DMs)的训练过程和架构

图 9**.1所示,前向扩散过程是一个马尔可夫链。过程的每一步都是一个随机事件,每个事件只依赖于前一个事件或状态。因此,它们形成了一系列随机事件,从而构成了一个马尔可夫链。

DMs 训练过程中的一个关键思想是使用像U-Netarxiv.org/abs/1505.04597)这样的神经网络来预测添加到给定噪声图像中的噪声量。这对于反转噪声过程并学习如何根据随机噪声生成合成样本至关重要。

在成功训练过程之后,当扩散模型收敛时,我们可以给它添加随机噪声,,然后 DM,通过反向扩散路径,将基于提供的给出一个合成样本。因此,我们现在可以从相同的训练数据概率分布中生成无限数量的新合成样本。

请注意,在噪声/去噪过程中的扩散步骤的数量,,取决于你希望训练过程有多平滑。换句话说,的更高值意味着在训练过程中将添加更少突然和更多渐进的噪声。因此,模型的权重将稳步更新,优化损失将平滑下降。然而,的更高值将使过程变慢(通常,)。

DMs 的应用

DMs 已在计算机视觉、自然语言处理、金融和医疗保健等各个领域的广泛应用中得到利用。让我们简要讨论一些这些应用。

  • 计算机视觉

    • 图像生成:生成多样化的逼真图像是 DMs 的最终目标之一。然而,多样性和逼真性之间通常存在权衡。因此,为了保持良好的保真度,DMs 通常在文本数据的引导或条件下进行。有关更多信息,请参阅GLIDE:通过文本引导的扩散模型实现逼真图像生成和编辑(arxiv.org/abs/2112.10741)。正如你可以想象的那样,生成的合成图像可以用于各种应用,包括数据增强、创意艺术、原型设计和可视化。

    • 视频预测:预测下一帧有许多有用的应用,因为它有助于预测未来事件,这对于机器人等领域的规划和决策至关重要。同时,它在监控和安全等领域也有巨大的应用。视频预测 ML 模型可以用来预测和预测可能的威胁、危害和潜在风险。此外,准确预测未来帧可以用来生成合成视频,以补充真实训练数据。更多详情,请参阅扩散模型在视频预测和填充中的应用 (arxiv.org/pdf/2206.07696.pdf)、视频扩散模型 (arxiv.org/pdf/2204.03458.pdf)和Imagen Video:使用扩散模型的超高清视频生成 模型 (arxiv.org/pdf/2210.02303.pdf)。

    • 图像修复:这仅仅是填充或恢复图像中缺失或损坏的部分。它在历史存档、隐私保护和娱乐等领域是一个基本任务。此外,它最近也被用于合成数据生成。例如,最近利用 DMs(扩散模型)生成合成脑部 MRI,能够控制肿瘤和非肿瘤组织。研究表明,使用生成的合成数据可以显著提高性能。更多详情,请参阅使用扩散模型的多任务脑肿瘤修复:方法报告 (arxiv.org/ftp/arxiv/papers/2210/2210.12113.pdf)和RePaint:使用去噪扩散概率 模型 进行修复 (arxiv.org/abs/2201.09865)。

    • 图像着色:这是将灰度图像转换为彩色图像的任务。例如,这对于提高历史或旧照片的逼真度至关重要。添加颜色对于使这些照片更具吸引力并更具情感吸引力很重要。DMs(扩散模型)在此任务中表现出色。更多信息,请阅读Palette:图像到图像扩散 模型 (arxiv.org/pdf/2111.05826.pdf)。

  • 自然语言处理

    • 文本生成:虚拟助手、聊天机器人和类似的基于对话的文本系统依赖于文本生成。最近,为了提高质量和多样性,已经利用了 DMs(扩散模型)来完成这项任务,因为它们更能捕捉复杂的分布。例如,请参阅DiffuSeq:使用扩散模型的序列到序列文本生成 模型 (arxiv.org/abs/2210.08933)。

    • 文本到语音合成:这是将文本转换为音频的过程。虽然它在人机交互(HCI)、教育和学习、视频游戏等领域有许多应用,但最近它被用来使文本内容对视力受损者可访问。有关扩散模型和文本到语音合成的更多详细信息,请参阅Diff-TTS:用于文本到语音的降噪扩散模型 (arxiv.org/pdf/2104.01409.pdf)和Prodiff:用于高质量文本到语音的渐进式快速扩散模型 (dl.acm.org/doi/abs/10.1145/3503161.3547855)。此外,关于基于文本到语音扩散模型的近期方法的综述,请参阅A Survey on Audio Diffusion Models: Text to Speech Synthesis and Enhancement in Generative AI (arxiv.org/pdf/2303.13336.pdf)。

    • 文本驱动图像生成:这是另一个有前景的领域,其目标是根据文本输入生成视觉内容,例如图像。它在内容生成、营销、数据增强和辅助数据标注工具等方面有各种应用。正如预期的那样,扩散模型(DMs)在建模复杂数据分布方面表现出色,并且在生成多样化和吸引人的图像方面非常强大。因此,它们被用于文本驱动图像生成。有关更多详细信息,请参阅Text2Human:文本驱动的可控人类图像生成 (dl.acm.org/doi/abs/10.1145/3528223.3530104)。

  • 其他应用

    • 医疗保健中的隐私:患者的真实电子健康记录EHRs)包含丰富且非常有用的信息,这些信息可以被机器学习模型利用,以帮助疾病诊断、预测分析、决策制定以及资源和管理的优化。扩散模型已被证明可以生成高质量和大规模的 EHRs,这些 EHRs 可以在包括机器学习模型训练、医疗保健研究和医学教育在内的巨大应用中发挥作用。要深入了解更多细节,请阅读MedDiff:使用加速降噪扩散模型生成电子健康记录 (arxiv.org/pdf/2302.04355.pdf)。

    • 异常检测:这是检测或识别不符合预期行为和分布的模式和实例的任务。它在网络安全、欺诈检测、电信和制造等领域有无数的应用。扩散模型通常对噪声具有鲁棒性且更稳定,这使得它们非常适合这些应用。有关利用扩散模型进行医疗异常检测的示例和更多详细信息,请参阅Diffusion models for medical anomaly detection (link.springer.com/chapter/10.1007/978-3-031-16452-1_4)。

    • 文本到运动:从文本输入生成动画或运动在培训、教育、媒体和娱乐领域有许多应用。DMs 通过生成高质量的人体运动动画显示出有希望的结果。更多详情请参阅Human Motion Diffusion 模型 (arxiv.org/abs/2209.14916)。

既然我们已经了解了扩散模型应用的一些领域,在下一节中,我们将仔细检查 DMs 的优缺点。

扩散模型——优缺点

在本节中,您将了解并检查使用 DMs 进行合成数据生成的主要优缺点。这将帮助您权衡每种合成数据生成方法的优缺点。因此,这将为您选择最适合您自己问题的最佳方法提供智慧。

正如我们在第七章中学到的,GANs 在特定应用(如风格迁移和图像到图像翻译)中表现良好,但它们通常很难训练且不稳定。此外,生成的合成样本通常多样性较低且不够逼真。相反,最近的研究表明,基于 DM 的合成数据生成方法在许多基准测试上超过了 GANs。更多详情请参阅Diffusion Models Beat GANs on Image Synthesis (arxiv.org/pdf/2105.05233.pdf)。像任何其他合成数据生成方法一样,DMs 也有其优缺点。因此,您需要仔细考虑它们对您特定应用或问题的影响。然后,您可以选择最佳方法来生成您想要的合成数据。带着这个目标,我们将检查使用 DMs 的关键优势和劣势。

使用 DMs 的优点

通常,DMs 在建模复杂数据概率分布、捕捉时间依赖性和隐藏模式方面表现出色。这是可能的,因为它们使用扩散过程来建模数据分布,使用一系列条件分布。因此,我们可以强调 DMs 的主要优势和优点如下:

  • 泛化能力和广泛适用性:与其他仅限于图像和视频生成的生成方法不同,DMs 可以用于生成图像、音频、视频、文本、分子结构以及许多其他数据类型和模态

  • 训练过程中的稳定性:DMs 的架构、训练过程和优化技术使它们比其他生成模型(如 GANs)更稳定

  • 高质量合成数据生成:由于它们独特的架构和创新性的逐步和迭代训练过程,DMs 生成的高质量合成数据超越了其他生成模型,如 VAEs 和 GANs

使用 DMS 的缺点

使用 DMs 的两大主要局限和不足可以从训练和推理过程的计算复杂度以及 DMs 所需的大规模训练数据集来描述:

  • 计算复杂度:DMs 计算量大。与其他生成模型相比,它们通常较慢,因为正向和反向扩散过程由数百个步骤组成(通常,步骤数,,接近)。

  • 需要更多训练数据:DMs 需要大规模的训练数据集才能收敛。获取此类数据集对于某些领域来说并不合适,这限制了 DMs 在某些应用中的实用性。

现在,我们可以清楚地识别出使用 DMs 进行合成数据生成时的优缺点。让我们练习利用 DMs 生成合成数据以训练机器学习模型。

在实践中使用手头的扩散模型

让我们研究一个实际例子,以展示合成数据在计算机视觉领域的实用性。为此,我们将生成和准备我们的数据集,从头开始构建我们的机器学习模型,对其进行训练,并评估其性能。数据集可在 Kaggle 上找到(www.kaggle.com/datasets/abdulrahmankerim/crash-car-image-hybrid-dataset-ccih)。完整的代码、训练好的模型和结果可在 GitHub 上找到,位于书籍仓库中相应章节的文件夹下。

上下文

我们希望构建一个机器学习模型,能够将汽车图像分类为两个不同的类别——描绘交通事故的图像和那些不描绘交通事故的图像。正如你可以想象的那样,精心制作这样一个真实的数据集既耗时又容易出错。收集没有事故的汽车图像可能很容易。然而,收集发生事故、碰撞、火灾和其他危险场景的汽车图像则极为困难。为了解决这个问题并证明合成数据的实用性,让我们首先生成我们的训练数据集。为此,我们可以使用单一合成数据生成方法。然而,让我们结合不同的方法和工具来收集更多样化的数据,并实践不同的方法。在这个例子中,我们将使用以下方法:

  • DALL·E 2 图像生成器

  • DeepAI 文本到图像生成器

  • 使用游戏引擎(如 Silver)构建的模拟器

数据集

首先,让我们利用最近生成的模型(如 DALL·E 2 openai.com/dall-e-2)的显著能力来生成一些交通事故图像。

图 9.2 – 使用 DALL·E 2 网络应用程序生成合成图像

图 9.2 – 使用 DALL·E 2 网络应用程序生成合成图像

我们可以使用以下提示简单地生成这些图像(参见 图 9.2):

  • 交通事故

  • 白色 交通事故

  • 红色 交通事故

  • 蓝色 交通事故

  • 救护车 交通事故

如您从 图 9.3 中所见,生成的图像看起来非常逼真且多样化,这正是我们训练我们的机器学习模型所需要的。

图 9.3 – 使用 DALL·E 2 生成的汽车事故图像

图 9.3 – 使用 DALL·E 2 生成的汽车事故图像

我们还使用从 car-accident(resnet) 数据集中收集的图像,该数据集获得 CC BY 4.0 许可(universe.roboflow.com/resnet-car-accident/car-accident-resnet-n7jei),使用 Roboflow (roboflow.com)。我们选择这个数据集,因为图像与从视频游戏(如 BeamNG Drive Crashes www.beamng.com/game)中获取的图像相似。我们将将这些图像添加到我们的数据集中,以进一步提高其多样性。这些图像的样本在 图 9.4 中展示。

图 9.4 – 从视频游戏中收集的汽车事故图像

图 9.4 – 从视频游戏中收集的汽车事故图像

然后,我们需要为其他类别生成类似的图像,即无事故的汽车图像。这次,让我们使用 DeepAI 工具生成这些图像。与之前一样,我们可以简单地使用以下提示来获取所需的图像:

  • 雨中的汽车

  • 白色汽车

  • 雾中的汽车

  • 蓝色汽车

正如我们在 图 9.5 中所见,我们轻松地获得了另外 30 张无事故的汽车图像。

图 9.5 – 使用 DeepAI 生成的完整汽车图像

图 9.5 – 使用 DeepAI 生成的完整汽车图像

现在,我们有 60 张合成图像,但我们仍然需要更多图像来适当地训练我们的机器学习模型。我们可以使用之前的生成模型生成任意数量的图像,但让我们探索另一种方法 – 使用 Silver 模拟器 (github.com/lsmcolab/Silver)。

通过指定我们想要的图像数量,我们可以为这个类别生成以下图像(图 9.6)。

图 9.6 – 使用 Silver 生成的完整汽车图像

图 9.6 – 使用 Silver 生成的完整汽车图像

到目前为止,我们已经收集了 600 张合成图像。现在,为了评估我们训练的模型性能,我们应该在真实汽车图像上对其进行测试。让我们使用 Unsplash 网站收集真实图像(unsplash.com)。为了进一步提高我们的数据集,我们还可以使用 Roboflow 手动添加图像。图 9.7 展示了这些图像的样本。

图 9.7 – 我们真实数据集的样本图像

图 9.7 – 我们真实数据集的样本图像

最后,我们的数据集由 600 张合成图像和 250 张真实图像组成,如 表 9.1 所示。

分割 合成 真实
训练 540 -
验证 60 62
测试 - 188
总计 600 250

表 9.1 – 我们最终数据集的分割和图像数量

注意,我们将在合成数据上训练,并在真实数据上测试。此外,注意在验证分割中,我们使用了合成和真实数据,因为我们正在两个不同的领域(合成和真实)进行训练和测试。因此,需要从这两个领域的数据中取得平衡混合,以便更好地理解我们的模型对合成数据的理解和泛化到真实领域的能力。

机器学习模型

我们的机器学习模型由四个卷积层和三个全连接层、最大池化、dropout 和批量归一化组成。我们将使用书中 GitHub 仓库相应章节文件夹中的train.py文件。

培训

我们在图 9.1 所示的训练分割上从头开始训练我们的模型30个 epoch。然后,我们将使用验证分割选择最佳模型。训练损失如图 9.8 所示。损失值如预期的那样平滑下降,这意味着我们的模型在我们的合成训练数据集上训练得很好。

图 9.8 – 训练阶段的训练损失

图 9.8 – 训练阶段的训练损失

从图 9.9 所示的验证准确率中,我们可以看到我们的模型在第 27 个 epoch 时在验证集上取得了最佳结果。因此,我们将使用这个模型进行测试。

图 9.9 – 训练阶段的验证准确率

图 9.9 – 训练阶段的验证准确率

测试

让我们看看我们的最佳模型在测试集上的表现。如图 9.10 所示的混淆矩阵所示,我们的模型以 84%的准确率对无事故车辆进行分类,而以 74%的准确率对事故进行分类。我们的模型的总准确率为 80%,考虑到我们的模型仅使用合成数据进行训练,这是一个非常出色的成绩。

图 9.10 – 展示分类结果的混淆矩阵

图 9.10 – 展示分类结果的混淆矩阵

我们提供了一个详细的示例,说明如何生成和利用合成数据来训练机器学习模型。现在,让我们深入了解数据生成模型(DMs)及其主要伦理问题。

扩散模型 – 伦理问题

在本节中,你将了解与使用 DMs 进行合成数据生成相关的伦理问题。

基于扩散的生成模型是新兴且强大的技术。因此,它们的优缺点需要仔细考虑。它们对商业、工业和研究具有巨大的优势。然而,它们具有可能被利用来对个人、企业、社会等造成伤害的危险能力。

让我们列出通常与生成模型,尤其是 DMs 相关的伦理问题:

  • 版权

  • 偏差

  • 不适当的内容

  • 责任问题

  • 隐私问题

  • 欺诈和身份盗窃

现在,让我们深入了解使用 DMs 实践中的一些主要伦理问题。

版权

DMs 通常在大规模真实数据集上进行训练。例如,DALL E 2 在超过 6.5 亿个文本-图像对上进行了训练。因此,从这些数据样本的所有者,如图像、艺术品、视频片段等,那里获得许可是不切实际的。此外,DMs 可能会通过细微的修改来错误地表示或表示受版权和知识产权保护的内容。例如,环球音乐要求流媒体服务和公司阻止 AI/ML 公司访问他们的歌曲进行训练(www.billboard.com/pro/universal-music-asks-spotify-apple-stop-ai-access-songs)。因此,这给监管机构解决和公司遵守的法规带来了许多难题。考虑到这一领域的巨大、快速进步,法规可能无法提供一个道德框架来控制版权问题。

偏见

正如我们在本章中概述的那样,DMs 学习生成与训练数据具有相同分布的合成数据。因此,如果训练数据存在偏见,DM 也会生成偏见的合成数据。与检查原始训练数据(如图像和视频)相比,评估这种偏见更为困难。当这些模型被非专家用于决策时,问题变得更加复杂和严重。例如,一位专业漫画艺术家可能能在漫画书中识别出性别、政治和年龄偏见。然而,在数百万本漫画书上训练 DM,然后使用该模型评估生成的漫画书的偏见可能是不可能的!

不适当的内容

DMs 可能在未经用户同意的情况下生成不适当的内容。这可能包括不适当的语言、色情和暴力内容、仇恨言论和种族主义。因此,DMs 需要利用有效的过滤机制来丢弃不合适的数据。同时,他们需要利用保护程序来防止生成不适当的内容。

责任

在未来,利用如 DMs(决策模型)等生成模型进行决策几乎不可避免。然而,使用当前的 DMs,我们无法理解为什么做出了某个特定的决策。因此,理解谁应对 DMs 做出的可能导致死亡、伤害或财产损失的错误决策负责是具有挑战性的。因此,我们需要开发合适的机制来确保决策过程中的透明度、问责制和追踪。

隐私

由于生成的合成数据仍然遵循原始真实训练数据的统计特性,DMs 可能会泄露关于个人和组织的敏感信息。这些模型可能会披露第三方可能利用的信息,造成损害、损失或不良后果。例如,由于隐私问题,ChatGPT 在意大利被禁止使用。

欺诈和身份盗窃

生成式模型(DMs)功能强大,能够模仿人类的声音、照片和视频。因此,生成的虚假媒体可以用于许多欺诈目的,例如获取个人信息、洗钱、信用卡欺诈和网络犯罪。此外,DMs 还可以用来冒充名人、活动家或政治家,以获取私人信息、机密材料和文件。

摘要

在本章中,我们介绍了一种新颖且强大的生成合成数据的方法——使用 DMs。我们比较了 DMs 与其他最先进的生成模型,然后强调了 DMs 的训练过程。此外,我们讨论了利用 DMs 的优缺点。此外,我们学习了如何在实践中生成和利用合成数据。我们还考察了在部署 DMs 进行合成数据生成时通常提出的主要伦理考量。您对生成模型有了全面的理解,并学习了标准 DM 架构、训练过程以及在实际应用中利用 DMs 的主要优势、益处和局限性。在下一章中,我们将探讨几个案例研究,突出合成数据如何成功应用于实践中改善计算机视觉解决方案。本章旨在激发和激励您探索合成数据在您自己的应用中的潜力。

第四部分:案例研究和最佳实践

在本部分,您将了解机器学习领域三个前沿领域的丰富多样的案例研究:计算机视觉(CV)、自然语言处理(NLP)和预测分析(PA)。您将理解在这些领域中采用合成数据的益处,并识别主要挑战和问题。随后,您将学习提高合成数据在实际应用中可用性的最佳实践。

本部分包含以下章节:

  • 第十章案例研究 1 – 计算机视觉

  • 第十一章案例研究 2 – 自然语言处理

  • 第十二章案例研究 3 – 预测分析

  • 第十三章应用合成数据的最佳实践

第十章:案例研究 1 – 计算机视觉

在本章中,您将了解计算机视觉在众多工业应用中的多样性。您将发现一些使用计算机视觉成功解决的问题。与此并行,您将掌握传统计算机视觉解决方案的主要问题。此外,您将探索并理解使用合成数据在实际中改进计算机视觉解决方案的引人深思的例子。

在本章中,我们将涵盖以下主要主题:

  • 工业革命——计算机视觉作为解决方案

  • 合成数据和计算机视觉——行业中的例子

转型产业 – 计算机视觉的力量

在本节中,我们将简要讨论主要的四次工业革命,因为它们有助于我们更好地理解人工智能、数据和计算机视觉的历史背景。然后,我们将了解为什么计算机视觉正成为我们现代工业的一个不可或缺的组成部分。

工业革命的四波

工业革命指的是全球经济发生的全球性和快速转变。通常,这种转变会带来并利用新的发明、发现和技术,使制造和生产过程更加高效。工业革命的历史可以总结为四个阶段:

图 10.1 – 工业革命

图 10.1 – 工业革命

接下来,让我们更深入地讨论图 10.1*中展示的每一次工业革命。

工业 1.0

这指的是第一次工业革命,发生在 19 世纪初。它通过引入机械来补充、支持和增强现有的劳动过程;动物和手工劳动大多被水和蒸汽机所取代。这是一次向使用机械执行大多数相同任务但更高效的大转变。这为新的工业打开了大门,如铁的生产,这对建筑、交通和制造业的发展产生了重大影响。工业 1.0 改变了产品的生产方式,为下一次工业革命奠定了基础。

工业 2.0

电是工业 2.0 时期生产发生重大转变的主要驱动力。装配线生产和电力作为动力源的广泛应用促进了大规模生产。与此并行,钢铁制造和生产的大幅进步使得更复杂、更强大的机械得以建造。这为随后的工业革命奠定了基础。

工业 3.0

电力是我们文明发生重大变化的发现之一,包括通信和工业。随着大规模生产,这被认为是工业 2.0 的主要主题之一,迫切需要自动化以最小化错误并最大化效率。因此,制造商利用计算机来实现更加精确和高效的生产。

工业 4.0

大多数行业的数字化转型、全球公司之间的激烈竞争以及资源稀缺都为网络物理系统和因此智能工厂打开了大门。因此,人工智能、机器人和大数据开始吸引工业和学术界更多的关注。由于这次工业革命的主要特性是高效率、定制产品和服务的个性化,机器学习和数据是实现这些目标的关键宝石。

接下来,我们将看到为什么计算机视觉是许多我们当前行业的基础。

工业 4.0 和计算机视觉

计算机视觉是一个跨学科领域,它使机器能够理解图像。计算机视觉是我们当前工业革命的一个基本组成部分。它已被广泛应用于质量控制、安全保障、预测性维护和其他基本且关键的应用。接下来,让我们讨论计算机视觉在以下领域的应用:

  • 制造业

  • 自动驾驶

  • 医疗保健

  • 农业

  • 监控和安全

制造业

在制造业中,人为错误可能导致整个生产流程的重大延误。它甚至可能损坏机器和基础设施,造成伤害和死亡。计算机视觉作为一种解决方案,可以补充、支持或替代过程中的人类因素。计算机视觉可用于指导组装和制造过程,以实现更高的吞吐量、更低的成本和更高的质量。

软镜制造商与ADLINKLEDA合作,他们已经使用计算机视觉自动化了软镜检验过程。这项任务通常由人工检验员完成,每天要检查数千个镜片。这是一个耗时且错误难以避免的过程。通过部署 ADLINK 和 LEDA 基于计算机视觉的解决方案,制造软镜的公司能够使其检验过程准确度提高 3 倍,速度提高 50 倍!他们的创新解决方案从过程中移除了人为因素,这大大提高了检验过程的可扩展性和质量。有关此用例的更多信息,请参阅ADLINK 和 LEDA 技术创造人工智能驱动的软镜检验解决方案(data.embeddedcomputing.com/uploads/articles/whitepapers/13328.pdf)。

自动驾驶

这是与计算机视觉紧密相关的主要领域之一。自动驾驶技术可以减少驾驶中的人为错误,从而最大限度地减少事故、伤害和死亡。2022 年,美国道路交通事故死亡人数超过 46,200 起(www.statista.com/statistics/192575/road-traffic-fatalities-in-the-united-states)。因此,计算机视觉提供了一个有希望的安全、高效和富有成效的解决方案。像 特斯拉WaymoMobileye 这样的自动驾驶公司已经开始利用计算机视觉进行车道检测和跟踪、行人检测、物体识别和交通标志检测与识别。正如你可能猜到的,这样的计算机视觉算法的失败可能导致财产损失、严重伤害或死亡。因此,训练和发展稳健的计算机视觉算法是机器学习研究人员的热门话题,并且正在获得更多的动力和关注。

特斯拉汽车 开发了一个基于神经网络的计算机视觉系统,该系统从不同的摄像头获取视频输入。然后,它处理视觉信息并预测场景中的道路布局、静态物体、行人和其他车辆。更多信息,请参阅 Tesla – AI & Robotics (www.tesla.com/AI)。

Aurora Driver 是一个可用于自动驾驶的计算机视觉系统。该系统学会融合来自各种传感器收集的信息,例如激光雷达、雷达和摄像头,以提供对驾驶环境的理解。更多信息,请参阅 Perception at Aurora: No measurement left behind (blog.aurora.tech/engineering/perception-at-aurora-no-measurement-left-behind)。

接下来,让我们转向医疗保健领域的计算机视觉应用。

医疗保健

由于其分析大量患者数据并提供快速、准确和高效诊断的强大能力,计算机视觉彻底改变了医疗保健领域。计算机视觉算法可以帮助医疗保健从业者、外科医生和医生做出准确和及时的决定,从而降低成本、改善治疗和手术,并减少人为错误。

许多医疗保健提供商已经开始利用计算机视觉在该领域的潜力。让我们突出 Viz.aiPaige 中的两个例子。

Viz.ai 利用计算机视觉算法通过分析患者的医学图像来识别中风迹象。他们将算法部署到高效分析 计算机断层扫描 (CT) 和 磁共振成像 (MRI),如果发现中风迹象,就会通知神经科医生采取适当的行动。

派吉是另一家已部署计算机视觉来改善病理学家诊断和预测测试的公司。在耶鲁医学院最近的一项关于派吉前列腺(他们计算机视觉工具的名称)有效性的研究中,1,876 个由该系统分类为“可疑”的预测被专业病理学家审查。该研究得出结论,只有 31.4%的活检需要由病理学家审查。因此,这个工具确实可以提高病理学家的生产力。此外,它还表明,这个工具可以提高前列腺癌的检测率,尤其是在非泌尿生殖系统专业病理学家审查时。更多详情,请参阅独立评估 AI 在前列腺癌检测中的应用(paige.ai/case-study/an-independent-assessment-of-ai-for-prostate-cancer-detection)。

在下一节中,让我们考察计算机视觉在农业领域的应用。

农业

食品安全信息网络(FSIN)最近发布的一份题为2023 年全球粮食危机报告的报告(www.fsinplatform.org/sites/default/files/resources/files/GRFC2023-hi-res.pdf)对 58 个国家的当前和未来粮食不安全情况提出了警告。报告强调,2022 年约有 2.5 亿人面临严重的粮食不安全,这比 2021 年的约 1.9 亿人有所增加。据专家们说,未来情况只会变得更糟。

许多公司,如塔兰尼斯普罗斯佩拉,利用计算机视觉引导农民更好地优化资源,分析作物数据,持续监测作物,并检测潜在问题,如害虫和疾病。让我们更详细地谈谈塔兰尼斯和普罗斯佩拉。

塔兰尼斯是一家专注于开发帮助农业企业和农民提高作物质量、产量和利润的技术公司。它利用无人机和计算机视觉来分析农场,使治疗更加高效。该技术开发的成果被用于在叶级水平上高效控制大型农场,这在没有计算机视觉的情况下几乎是无法实现的。如需更多信息,请参阅公司网站(www.taranis.com)。

普罗斯佩拉是另一家依赖计算机视觉来支持农民的公司。这项技术帮助他们控制旋转器、泵和其他灌溉系统的方面。此外,它持续监测作物健康,并立即检测任何问题。更多详情,请参阅公司网站(prospera.ag)。

如您所预期的那样,这些关键的传统计算机视觉解决方案可以通过利用合成数据作为真实数据的补充或替代来进一步改进。现在,让我们深入了解这些计算机视觉解决方案的主要问题,这些问题源于它们对真实数据的重大依赖。

正如我们在前面的章节中讨论的那样,基于真实数据的计算机视觉算法通常存在以下问题:

  • 训练数据不足

  • 数据质量问题及偏差

  • 变化性有限

在下一节中,您将了解为什么和如何行业开始在其基于计算机视觉的解决方案中采用合成数据。

监控和安全

计算机视觉的主要关键能力之一是准确且高效地分析视觉信息,如图像和视频。例如,它可以用于以下目的:

  • 检测异常行为

  • 识别可疑人员、物品或行为

  • 车牌识别

  • 生物识别识别:面部、虹膜、掌纹、静脉、声音和指纹识别

因此,计算机视觉可以用来防止未经授权的访问,保护人员和资产,并在实时中识别安全威胁和风险。如今,计算机视觉被用于确保公共安全。例如,它在机场、公共交通、街道、公园和其他公共场所得到应用。许多公司已经成功地将计算机视觉用于安全和监控问题,例如海康威视(www.hikvision.com)、大华(www.avigilon.com)、Verkada(www.verkada.com)、华为、谷歌、微软和亚马逊。让我们深入了解一个有趣的案例研究,即富士通及其在蒙特利尔监控和优化交通流量方面的有趣应用。

蒙特利尔市因入口和出口点有限、道路基础设施不足以及交通管理系统不完善等因素,在交通流量方面遇到了许多问题。作为解决方案,富士通提出了一种基于计算机视觉的解决方案来解决大多数交通问题。该系统从监控摄像头、超过 2,500 个交通信号灯和其他传感器收集数据。然后,系统做出实时决策以优化交通流量。基于计算机视觉的解决方案降低了旅行时间、空气污染和其他与交通相关的问题。更多详情请参阅使用 AI 平滑交通流量分析(www2.fujitsu.com/global/customer-stories/cs-city-of-montreal-20210701)。

合成数据和计算机视觉 - 行业中的例子

在本节中,您将了解并理解公司如何刚刚开始使用基于合成数据的计算机视觉解决方案来脱颖而出并克服真实数据限制和问题。

Neurolabs 在零售中使用合成数据

根据《正确获取可用性:控制缺货》(www.oliverwyman.com/content/dam/oliver-wyman/global/en/2014/aug/2012_CEU_POV_Getting%20Availability%20Right_ENG.pdf),缺货商品会导致严重的财务损失和客户不满。对企业和收入的影响可能非常显著。同时,收集和标注大规模真实数据对于这项任务来说是一个昂贵且耗时的过程。Neurolabs,一家专注于提供零售自动化解决方案的机器学习公司,研究了使用合成数据解决这一问题的优雅方案。他们利用 Unity 和自己的合成数据生成器生成了 129 种独特库存单位SKU)在货架上的 1,200 张图像。该数据集命名为 CPGDet-129,可以从以下链接下载(dl.orangedox.com/SampleRetailSyntheticDataset)。此外,有关数据集和许可的更多详细信息,请参阅 GitHub 仓库(github.com/neurolaboratories/reshelf-detection)。该数据集是自动生成并标注的。此外,它专门支持目标检测任务。仅使用他们的合成数据集进行最先进的对象检测算法训练,而不使用任何真实数据,他们在真实测试数据集上实现了 60%的平均精度均值mAP)。mAP 是一个指标,用于告诉我们目标检测模型在预测感兴趣对象周围的边界框时的准确性。mAP 分数越高,表明我们的模型做出的预测越准确。

这是一个完美的例子,展示了合成数据如何在实践中解决复杂的计算机视觉问题。

更多详细信息,请参阅neurolabs.medium.com/using-neurolabs-retail-specific-synthetic-dataset-in-production-bbfdd3c653d5www.neurolabs.ai/post/using-neurolabs-retail-specific-synthetic-dataset-in-production

微软仅使用合成数据进行面部分析

面部分析,如面部解析和地标定位,对于现代工业至关重要。应用范围从安全和广告到医疗诊断。使用合成数据进行面部分析似乎不可避免,因为对这些任务标注真实图像不仅极其困难,而且还会带来伦理和隐私问题。您可以参考第三章,其中我们讨论了这些问题。

微软是面部识别技术领域的先驱公司之一。他们在该领域进行了多年的研发。Face API只是其中的一个例子(azure.microsoft.com/en-gb/products/cognitive-services/face)。他们最近的工作,题为Fake it till you make it: face analysis in the wild using synthetic data alone(openaccess.thecvf.com/content/ICCV2021/papers/Wood_Fake_It_Till_You_Make_It_Face_Analysis_in_the_ICCV_2021_paper.pdf),是合成数据如何在计算机视觉中得到应用的绝佳展示。

本工作中的研究人员首先以程序化方式生成了逼真的合成人脸。他们使用了一个模板人脸,然后随机化了头发、衣服、表情以及本质上的人脸特征。他们在随机环境中模拟了这些人脸。他们生成的合成数据集包含带有真实值标注的 10 万个合成人脸,包括 2D 密集人脸地标和每像素人脸部分语义分割。

他们仅使用他们生成的合成数据训练了人脸解析和地标定位的机器学习模型,而没有使用任何真实图像。他们的实验结果表明,训练好的机器学习模型在真实数据集上能够实现更优的结果。例如,与使用真实数据训练的机器学习模型相比,他们的合成数据训练的机器学习模型能够预测出 10 倍多的地标。他们声称这种成功归功于他们合成训练数据的优越性。他们强调,在实际操作中,人类标注者很难准确标注那么多的地标。此外,他们还表明,他们的合成数据生成流程可以很容易地适应生成其他计算机视觉任务(如眼动追踪)的合成训练数据。他们只需添加一个虚拟眼动追踪相机,并生成带有相应真实值的训练图像。要下载数据集,您可以参考他们的 GitHub 仓库(microsoft.github.io/FaceSynthetics)。

使用合成数据进行虚拟试穿的合成 AI

虚拟时尚正在获得更多动力,因为它提供了一种可持续的解决方案,与传统的时尚不同,它降低了成本和努力。此外,它为公司和客户提供了可扩展和更加个性化的解决方案。更进一步,它为创意、协作和社会影响开辟了更多机会。为了使该行业蓬勃发展并实现预期目标,计算机视觉技术需要在多个任务上表现出色,例如姿态估计、语义分割、视觉物体检测和跟踪。合成 AI通过使用具有巨大体型、性别、种族、年龄、身高和其他属性变化的合成逼真 3D 人类,提出了一种优雅的解决方案。他们能够生成深度图、表面法线、分割图和许多其他注释。更多详情,请参阅合成 AI 虚拟试穿(synthesis.ai/applications/virtual-try-on)。此外,他们通过实验证明了生成的合成数据在许多任务中的可用性,例如人脸分割、背景抠图和面部特征点检测。他们发现,在合成数据上预训练后,在真实数据上进行微调,与仅使用真实数据或合成数据训练,甚至两者的混合训练相比,可以达到最佳结果。要更详细地了解案例研究,请参阅合成数据案例研究:它就是 有效 (synthesis.ai/2021/06/17/synthetic-data-case-studies-it-just-works)).

总结

总结

在下一章中,你将深入探讨自然语言处理领域另一组有趣的案例研究。

第十一章:案例研究 2 – 自然语言处理

本章向您介绍自然语言处理NLP),其中合成数据是关键角色。您将探索 NLP 模型的多种应用。此外,您将了解为什么这些模型通常需要大规模训练数据集才能收敛并在实践中表现良好。同时,您将理解为什么合成数据是 NLP 的未来。讨论将基于一个实际、动手的示例,以及来自研究和行业领域的许多有趣的案例研究。

在本章中,我们将涵盖以下主要主题:

  • NLP 简介

  • NLP 中大规模训练数据集的需求

  • 使用 ChatGPT 的动手实践示例

  • 合成数据作为 NLP 问题的解决方案

NLP 简介

NLP 是一个跨学科领域,结合了计算机科学、机器学习和语言学。它使计算机能够理解、分析和响应用户的自然语言文本,无论是书面还是口头。NLP 领域正在因许多原因而不断发展,包括大数据的可用性和强大的计算资源,如图形****处理单元GPUs)和张量处理单元TPUs)。最先进的 NLP 模型示例包括 BERT: 用于语言理解的深度双向变换器预训练 (arxiv.org/abs/1810.04805)、ChatGPT (openai.com/blog/ChatGPT) 和 Google Bard (bard.google.com)。接下来,让我们探讨一些 NLP 模型在实践中的关键应用。

NLP 在实践中的应用

NLP 模型的一些常见应用在 图 11.1 中展示。

图 11.1 – NLP 模型在实践中的关键应用样本

图 11.1 – NLP 模型在实践中的关键应用样本

现在我们将更详细地讨论一些这些应用。

文本和语音翻译

这是将文本或语音从一种语言翻译成另一种语言的任务。通常,一个大规模的文本语料库,由大量从一种语言翻译成另一种语言的句子组成,用于训练此类模型。Google Translate (translate.google.co.uk)、Microsoft Translator (translator.microsoft.com) 和 iTranslate (itranslate.com) 都是通用翻译 NLP 模型的例子。还有一些特定于领域或行业的基于 NLP 的翻译器,例如 Lingua Custodia (www.linguacustodia.finance) 和 Trados (www.trados.com),它们更专注于金融领域。

情感分析

这是 NLP 领域的一项主要任务。它的目标是根据文本中嵌入的情感或情绪来分析和分类文本。它通常被公司用来理解客户反馈,评估他们的服务,并识别问题。例如,它通常被用来将商品或服务的客户评论分类为正面负面中性。此外,它还常用于识别文本中的情感,如愤怒、悲伤、不满、挫败和快乐。例如,Medallia 文本分析利用 NLP 提供市场趋势和客户对服务和产品的反馈及评论的快速总结。更多详情,请参阅 Medallia 文本分析网站 (www.medallia.com/resource/text-analytics-solution-brochure)。此外,对于使用情感分析的实际案例的最新例子,请参阅使用航空公司乘客评论的情感分析识别意见趋势 (doi.org/10.1016/j.jairtraman.2022.102232) 和 社交媒体推文的情感分析和意见挖掘的新方法 (link.springer.com/chapter/10.1007/978-981-19-2358-6_15)。

文本摘要

这是一项以人类方式生成文本或文档摘要的任务,通过捕捉本质或要点。这是一个复杂的过程,因为 NLP 模型需要学习如何关注文本的精华部分,这是一个依赖于上下文的任务。然而,NLP 模型最近在这个领域取得了显著的进步。有许多 NLP 模型可以总结大量文本的例子,例如plnia 文本摘要 API (www.plnia.com/products/text-summarization-api) 和 NLP Cloud 的摘要 API (nlpcloud.com/nlp-text-summarization-api.xhtml)。

测试到场景生成

这是一项依赖 NLP 的另一个基本任务。它的目标是根据描述性文本输入生成虚拟场景。它在游戏开发、元宇宙、广告和教育等领域有许多有趣的应用。文本到场景生成的主要优势之一是它允许用户在没有计算机图形、游戏开发和编程背景的情况下生成多样化和逼真的场景。文本到场景方法通常基于 GANs、VAEs、扩散模型和 Transformers。更多信息,请参阅Text2NeRF:基于神经辐射场的文本驱动 3D 场景生成(arxiv.org/pdf/2305.11588.pdf)和SceneSeer:使用自然语言进行 3D 场景设计(arxiv.org/pdf/1703.00050.pdf)。

文本到图像生成

在这个任务中,NLP 模型根据用户提供的文本描述生成图像。在这个任务中,模型的目标是创建受文本输入控制的视觉表示。从文本生成图像的任务有许多吸引人的应用,如数据增强、内容生成、电子商务和广告。您可以以DALL-E2(openai.com/product/dall-e-2)和Stable Diffusion(stablediffusionweb.com)为例。它们可以根据描述性文本生成逼真的图像。

在下一节中,我们将了解为什么我们需要大规模数据集才能成功训练 NLP 模型。

NLP 中大规模训练数据集的需求

NLP 模型需要在实践中表现良好,需要大规模的训练数据集。在本节中,您将了解为什么 NLP 模型需要大量的训练数据才能收敛。

通用机器学习模型在实践中需要大量的训练样本。与其它机器学习领域相比,NLP 模型需要更多的训练数据。这有很多原因。接下来,让我们讨论主要原因,如下:

  • 人类语言复杂性

  • 上下文依赖

  • 泛化

人类语言复杂性

最近的研究表明,我们大脑中很大一部分用于语言理解。同时,了解不同的脑区在阅读、写作或进行其他与语言相关的活动时如何相互沟通仍然是一个研究问题。更多信息,请参阅关于听到的言语、口语和阅读的前 20 年 PET 和 fMRI 研究的综述和综合 (doi.org/10.1016/j.neuroimage.2012.04.062)。此外,婴儿的基本语音和视觉功能在 8 到 12 个月大时就已经形成。然而,他们需要几年时间才能适当地使用口头或书面交流。因此,语言处理不仅对计算机来说是困难的,对人类也是如此。使这个问题对机器来说更加困难的是需要学习语法、表达和隐喻。因此,NLP 模型需要大量的训练数据来学习这些隐藏的规则和模式。

上下文依赖性

尽管大多数机器学习(ML)任务仍然是上下文相关的,例如计算机视觉,但在自然语言处理(NLP)问题中,上下文依赖性更为严重和强烈。例如,一个句子的意义可以根据说话者的语调从陈述句变为疑问句。单词的顺序以及前后的几句话也可能改变意义并暗示不同的解释。即使是相同的单词有时也会根据上下文有不同的含义。例如,“light”可以用作名词表示“照明”或用作形容词表示“轻微的重量”。因此,为了掌握这些场景,NLP 模型需要在包含足够示例以涵盖这些上下文的多样化数据集上进行训练。

泛化

另一个使得自然语言处理(NLP)任务变得更加困难的因素是语言、方言和变体的数量庞大。例如,英国英语在某些方面与美国英语不同。它不仅在拼写上不同,而且在所使用的单词、习语和表达方式上也有所不同。即使在同一国家的同一种语言中,不同城市的人们也会使用不同的方言。为了使 NLP 模型具有实用性和有效性,它们应该适应这些大多数变化。因此,通常需要大规模的训练数据来捕捉这些变化。

在下一节中,我们将学习如何为 NLP 的一个实际例子生成合成数据。

使用 ChatGPT 的动手实践示例

让我们设想我们想要训练一个 NLP 模型来识别关于机器学习(ML)书籍的正面和负面评论。我们将使用ChatGPT (chat.openai.com)来生成正面和负面评论的列表。然后,我们将部署这些评论来增强我们的真实训练数据集。

要获得 10 条正面评论,我们可以简单地使用以下提示:给我 10 条关于机器学习书籍的好评。ChatGPT 将生成以下评论:

  • 《精通机器学习》是一本适合初学者和资深专业人士的杰出书籍。作者的清晰简洁的解释使得复杂的概念变得容易掌握,确保了任何进入机器学习世界的人都能打下坚实的基础。

  • 这本书在理论与实践实施之间取得了完美的平衡。动手练习和现实世界案例提供了宝贵的见解,使其成为任何希望在其项目中应用机器学习的人不可或缺的资源。

  • 我赞赏作者涵盖了广泛的机器学习算法和技术,超越了常规的怀疑对象。这是一本全面的指南,真正为读者提供了应对各种机器学习挑战所需的知识。

  • 作者的写作风格引人入胜且易于接近,感觉像是一位友好的导师在引导你通过机器学习之旅。复杂的话题被分解成可管理的部分,使学习过程变得愉快。

  • 这本书强调理解机器学习算法背后的数学,使其与其他书籍区别开来。它建立了坚实的数学基础,而没有让读者感到压倒,这对于有志于成为机器学习实践者的人来说至关重要。

  • 这本书的代码示例有良好的文档记录,易于复制。实践练习是巩固学习和以动手方式实验机器学习概念的绝佳方式。

  • 这本书的一个亮点是它关于模型选择和超参数调整的实用建议。这些见解节省了时间,并有助于避免机器学习项目中常见的陷阱。

  • 作为一名非技术背景的人,我发现这本书非常易于理解。作者花时间以任何人都能够理解的方式解释了甚至是最复杂的概念。

  • 这本书紧跟机器学习领域的最新趋势和进步。它涵盖了最近的突破和当代应用,使其成为一个相关且前瞻的资源。

  • 这本书是渴望成为数据科学家和机器学习爱好者的真正瑰宝。它不仅教授机器学习技术,还传授解决问题的思维方式,使读者能够自信地应对现实世界的数据挑战。

同样,为了获得负面评价,我们可能使用“给我 10 条关于机器学习书籍的负面评价”的提示。我们得到了以下负面评价:

  • 这本书让我大失所望。解释复杂难懂,作者似乎更感兴趣于展示他们的知识,而不是帮助读者理解概念。在整个阅读过程中,我都感到迷茫。

  • 这本书声称是为初学者而写,但它假设了我在先前的知识水平,而这正是我所缺乏的。缺乏清晰的解释和实践示例,使我几乎无法跟上。

  • 我在提供的代码示例中发现了许多错误。当我本应学习时,花费数小时尝试调试示例令人沮丧。粗心的编辑和糟糕的代码质量是主要的缺点。

  • 由于机器学习领域的快速发展,这本书的内容感觉已经过时。我原本期待学习前沿技术,但结果却只是重复了网上容易找到的旧材料。

  • 这本书开头很有希望,但很快变得过于技术化,难以消化。作者似乎假设读者拥有数学博士学位,这使得没有高级背景的人难以理解。

  • 我本期待看到实用的练习,但本书中的练习解释和执行都做得不好。缺乏逐步指导使得无法有效地应用这些概念。

  • 这本书的组织结构混乱,在主题之间跳跃,没有任何清晰的进展。这让我感到困惑,难以在章节之间建立联系。

  • 提供的例子不切实际,并不能反映现实世界的场景。我很难将概念与实际应用联系起来,这违背了最初学习机器学习的目的。

  • 这本书承诺将提供全面的内容,但在关键领域如神经网络和深度学习方面却缺乏深度。我原本希望获得全面的理解,但结果却发现内容中存在巨大的空白。

  • 写作风格枯燥乏味,使得读者难以保持对主题的兴趣。我在本应令人兴奋的机器学习世界中的主题上打起了瞌睡。

这些正面和负面的合成评论可以用来增强我们的训练数据集。正如您所看到的,生成无限数量的训练样本来增强和补充我们的训练数据非常简单。生成的样本多样化、相关、准确、详细且结构化。因此,将这些样本包含在我们的训练数据集中可以提高我们的 NLP 模型性能。

接下来,让我们深入探讨在工业界使用 NLP 模型的三个实际例子。

合成数据作为解决 NLP 问题的方案

在本节中,您将了解公司如何利用合成数据作为解决其基于自然语言处理(NLP)问题的方案。我们将探讨四个案例研究:

  • SYSTRAN Soft 的合成数据应用

  • Telefónica 的合成数据应用

  • 利用合成数据进行临床文本挖掘

  • 亚马逊虚拟助手模型

SYSTRAN Soft 的合成数据应用

神经机器翻译(NMT)是 NLP 中一个有前景的方法。它利用神经网络来学习统计模型,从而执行翻译任务。典型的架构由编码器-解码器组成,通常在大规模训练数据集上训练。这些模型在实践中被证明取得了优异的结果。然而,它们也有一些局限性,正如我们在 SYSTRAN 案例研究中将看到的。

SYSTRAN 是机器翻译技术领域的少数先驱公司之一(www.systransoft.com)。虽然他们的标准和传统 NLP 模型实现了最先进的结果,但在两种主要场景下遇到了挑战:翻译长句和翻译短标题,例如新闻文章的标题。为了解决这些问题,他们探索了通过为该目的特别生成的合成数据来增强他们的真实训练数据。他们能够解决这些问题并提高整体性能。更多信息,请参阅SYSTRAN 纯神经机器翻译系统(blog.systransoft.com/wp-content/uploads/2016/10/SystranNMTReport.pdf)。

泰尔斐卡公司对合成数据的利用

在电信行业,收集有关客户的数据以分析他们的需求、识别问题并定制提供的服务是至关重要的。这有助于这些公司建立更强的声誉,从而在市场上更加成功。问题通常不是数据可用性,而是限制利用客户数据来训练 NLP 或 ML 模型的一般规定。

泰尔斐卡公司部署了一个优雅的解决方案来解决这些问题。他们使用了MOSTLY AI合成数据平台,从原始客户数据集泰尔斐卡 CRM 数据集市中合成一个新的数据集。新生成的合成数据现在符合 GDPR 的要求,因为它不包含任何关于客户的真实信息。同时,合成数据集具有与原始真实数据集中可见的模式、相关性和统计特性。因此,它可以作为真实数据集的副本来训练 NLP 模型。这使得公司能够使用高达 85%的客户数据,这在基于真实数据的 NLP 模型中是不可能的。

利用合成数据进行临床文本挖掘

最近,莱斯大学和德克萨斯 A&M 大学的研究人员以及其他合作者进行的一项研究,调查了合成数据生成模型(如 ChatGPT)在临床文本挖掘中的可用性。他们的目标是利用大型语言模型LLMs)来帮助进行临床文本挖掘。他们将 LLMs 部署以从非结构化的医疗健康文本数据中识别生物命名实体。他们有趣地发现,直接针对这项任务在真实数据上训练的 ChatGPT 并没有达到令人满意的表现。开发合成数据生成管道并生成必要的合成数据显著提高了他们模型的表现。F1 分数从 23.37%提高到 63.99%,这是一个显著的增长。此外,他们强调,与基于真实数据的模型相比,他们基于合成数据的模型现在更好地解决并减轻了隐私问题。更多信息,请参阅LLMs 的合成数据生成对临床文本挖掘有何帮助arxiv.org/pdf/2303.04360.pdf)。

Alexa 虚拟助手模型

虚拟助手模型,如亚马逊的 Alexa、苹果的 Siri 和谷歌的 Google Assistant,正成为我们现代生活的重要组成部分。它们提供了巨大的服务,例如订购产品、控制家用电器和语音搜索。为了使这些工具对更广泛的受众有益,它们需要支持许多语言和方言,这需要大规模的训练数据集。

亚马逊在推出针对三种新语言(印地语、美国西班牙语和巴西葡萄牙语)的模型时,Alexa 虚拟助手遇到的主要问题之一是真实训练数据的稀缺。作为解决方案,亚马逊利用可用的有限真实数据创建“模板”。然后,他们将模板部署以生成补充和增强真实数据的合成数据。例如,他们利用这些语言中可用的真实数据来学习这些语言的必要语法和句法。然后,他们利用训练好的模型生成一个足够大的合成训练数据集,该数据集包含遵循这些语言语法和句法的创新句子。这个基于合成数据的优雅解决方案帮助亚马逊减轻了真实数据不足的问题,从而帮助公司为更广泛的受众提供更准确的虚拟助手,并具有更好的性能。因此,亚马逊成功获得了更多订单和更高的盈利能力。更多信息,请参阅生成合成数据的工具帮助 Alexa 的新语言发布www.amazon.science/blog/tools-for-generating-synthetic-data-helped-bootstrap-alexas-new-language-releases)。

摘要

在本章中,我们介绍了自然语言处理(NLP)模型,并探讨了这些模型在实际应用中的主要用途。此外,我们还了解到 NLP 模型需要大规模数据集。然后,我们详细讨论了这一需求的主要原因。在此之后,我们研究了几个行业和研究领域的例子,其中合成数据被成功部署。在下一章中,我们将深入探讨另一组有趣的案例研究,其中合成数据在预测分析领域得到了成功应用。

第十二章:案例研究 3 – 预测分析

本章向您介绍预测分析,这是合成数据最近被应用的一个新领域。此外,您将探索基于真实数据的解决方案的关键缺点。通过提供行业中的例子,讨论将得到丰富。在此之后,您将理解并清楚地识别在预测分析领域使用合成数据的益处。

在本章中,我们将涵盖以下主要内容:

  • 什么是预测分析?

  • 基于真实数据的预测分析问题

  • 利用合成数据进行预测分析的案例研究

什么是预测分析?

在本节中,您将了解预测分析。您将了解其实际应用中的各种应用。您还将探索其在不同领域的广泛应用,包括银行、金融和医疗保健。

预测未来一直是人们关注的中心,并且数千年来一直吸引着人类,它仍然是一个热门话题!预测未来有助于识别和利用机会,优化资源配置,并为灾难、灾害和危机做好准备。预测分析是数据分析的一个子领域,旨在利用历史数据预测或预测未来。现在,为了开始我们理解预测分析之旅,让我们考察一些其有趣的 应用。

预测分析的应用

在实践中,预测分析有巨大的应用。图 12.1 展示了这些应用的样本。

图 12.1 – 行业中预测分析应用的样本

图 12.1 – 行业中预测分析应用的样本

让我们简要讨论一些这些应用。

销售和营销

识别潜在客户对公司至关重要,因为它使他们能够集中资源和注意力,并将他们的广告努力有效地针对特定的客户群体。此外,它还帮助公司创建个性化的广告、产品和服 务。因此,他们可以吸引更多客户,优化他们的资源,从而实现更高的利润。例如,星巴克 利用您的购买历史来推荐您可能喜欢的 新饮料。有关更多信息,请参阅 星巴克如何使用预测分析和您的忠诚度卡数据 (demand-planning.com/2018/05/29/how-starbucks-uses-predictive-analytics-and-your-loyalty-card-data)。

此外,价格优化也是企业的一个核心要素。公司通常旨在找到实现最高盈利性的理想价格。在低价格吸引更多客户和高价格吸引较少客户之间往往存在权衡。因此,公司利用预测分析和机器学习来考虑市场需求、竞争对手的价格以及商品的质量和数量,以进行最佳价格预测。有关定价优化的更多信息,请参阅 定价优化与机器学习 技术 (vitalflux.com/pricing-optimization-machine-learning-techniques)。

医疗保健

准确预测疾病的进展有助于控制其进展甚至预防它。例如,预测癌症的进展对于为患者制定最有效的治疗方案至关重要。一般来说,慢性病特别受益于利用预测分析。研究人员已经表明,利用测试结果、临床访问和其他有关患者的信息可以帮助他们准确预测慢性病进展。有关更多详情,请参阅 慢性病进展预测:利用基于案例的推理和大数据 分析 (doi.org/10.1111/poms.13532)。

预测性维护

计划外的停机时间是影响客户、服务、公司声誉和收入的主要问题之一。因此,预测机械故障可以帮助避免它们并延长机器和设备的使用寿命。预测分析通常利用从各种来源收集的数据,包括以下内容:

  • 来自传感器的数据,例如压力、温度和振动频率

  • 来自故障记录仪的数据,例如故障类型、原因和后果

  • 机器历史性能数据,例如在标准和非标准操作条件下收集的数据

  • 行业基准

有关设备故障预测分析的更多详情,请参阅 预测性维护:采用工业物联网和机器学习预防设备 故障 (www.altexsoft.com/blog/predictive-maintenance)。

风险管理

预测分析在现代商业中被广泛用于风险管理。以前风险事件和欺诈活动的历史数据可以用来训练机器学习模型,以预测未来的可能攻击、威胁和风险。PayPalApple PayAmazon Pay持续评估客户行为,以识别任何可疑活动或异常模式。这包括异常的消费模式、多次失败的认证尝试以及账户或客户信息的快速变化。机器学习模型通常在客户的相关数据上训练,例如交易模式、设备信息和客户的位置。更多信息,请参阅4 Ways Machine Learning Helps You Detect Payment Fraud (www.paypal.com/us/brc/article/payment-fraud-detection-machine-learning)。

现在,让我们深入了解实际数据驱动的预测分析解决方案的主要问题。

实际数据中的预测分析问题

在本节中,你将了解基于实际数据的预测分析解决方案的主要问题。主要地,我们将讨论以下三个问题。

部分和稀缺的训练数据

预测分析模型在实际中良好工作的一个主要要求是拥有大规模的历史数据。在医疗保健、银行、安全和制造等行业,找到这样的数据集并不容易。背后的主要原因包括隐私问题、法规和商业机密。正如我们所知,没有足够的训练数据集,机器学习算法在实践中的表现就无法良好。因此,基于实际数据的预测分析方法只在数据可用的某些领域表现良好。因此,通过添加合成数据来补充小型和不完整的数据集可以解决这个问题。因此,它解决了这些领域中实际数据集的主要问题之一,正如我们将在下一节中看到的。

偏差

当然,实际数据集中另一个主要问题是偏差。换句话说,数据通常分布不均。因此,预测模型会存在偏差,这会导致错误的决策和预测。使用合成数据,你可以通过为样本较少的类别或类别生成样本来使你的数据集平衡。这会积极影响你的预测模型性能,从而改善你公司决策流程。

成本

虽然收集和标注真实数据通常是一个昂贵且耗时的过程,但公司必须持续更新数据以准确捕捉和展示真实市场。因此,使用真实数据可能会使公司付出更多代价,同时可能导致机器学习模型基于过时数据做出预测。此外,正如所述,公司需要持续收集和标注真实数据,这确实是一个繁琐的过程。合成数据可以快速高效地生成,以增强真实数据。因此,它为预测分析问题提供了一个既经济又高质量的解决方案。

现在,让我们详细探讨三个利用合成数据在预测分析中的案例研究。

利用合成数据进行预测分析的案例研究

在本节中,您将探索合成数据为预测分析领域带来的巨大机遇。您将深入研究三个有趣的案例研究:

  • Provinzial 与合成数据

  • 医疗保健从预测分析中的合成数据中受益

  • 使用合成数据进行亚马逊欺诈交易预测

Provinzial 与合成数据

Provinzial 是德国顶级保险公司之一,由于许多法规限制了敏感数据在快速变化的市场(如保险市场)中用于预测分析的可用性,因此一直面临着许多真实保险数据可用性的问题。同时,他们希望提高他们的服务和向客户提供的报价。为了解决这些问题,他们研究了使用合成数据,并且确实使用生成的合成数据训练了他们的机器学习模型。基于合成数据的预测分析系统“下一最佳报价”取得了惊人的成果,帮助公司更好地理解和支持客户。利用合成数据,他们能够在包含 380 个特征的 100 万客户的大规模数据集上训练他们的模型,该数据集包括有关客户敏感信息,如地址、支付历史和保险索赔。他们强调,使用合成数据有助于他们的公司在不侵犯客户隐私的情况下测试他们的假设。合成数据减少了处理隐私问题所需的时间。他们得出结论,使用基于合成数据的预测分析是有益且宝贵的:

“我们发现[基于合成数据的解决方案]是我们数据科学团队的一个有用解决方案,可以简化数据访问并专注于我们的数据项目、机器学习模型优化和新想法的测试。”

– Dr. Sören Erdweg,Provinzial 公司的数据科学家

更多信息,请参阅 保险预测分析中的合成数据:Provinzial 的案例 (www.statice.ai/post/synthetic-data-for-predictive-analytics)。

医疗保健从预测分析中的合成数据中受益

嵌合抗原受体细胞疗法CAR-T)是治疗特定类型血液癌症的有效治疗方法。通常,哪些患者有资格并可以从这种治疗中更好地受益是由一个专门的委员会决定的(见www.england.nhs.uk/cancer/cdf/car-t-therapy)。机器学习模型和预测分析被用于对这个任务进行准确预测。然而,由于可用的真实数据量有限,这个任务对机器学习模型来说是复杂的。正如预期的那样,这类模型准确性的微小提高意味着可以挽救更多生命和减少开支。因此,这仍然是一个需要更多研究的热门研究课题。

在这个特定的案例研究中,任务是二元分类问题——是否有资格接受 CAR-T 治疗。这里的主要问题,除了数据稀缺之外,还有一个数据分布不平衡的问题,其中一个类别的训练样本数量远多于另一个类别,这导致机器学习模型给出有偏见的预测。使用合成数据来增强真实数据是一个理想的解决方案,可以使训练数据集平衡。这是通过为训练数据较少的类别生成合成样本来实现的。

利用合成数据解决这个问题提高了性能至少三个百分点,并估计节省了 6500 万英镑。此外,该解决方案没有违反任何规定或侵犯任何患者的隐私。在所有这些成果之上,识别出了更多合适的患者,因此挽救了更多生命!有关这个案例研究的更多信息,请参阅预测分析在医疗保健中受益于合成数据 生成mostly.ai/case-study/predictive-analytics-in-healthcare)。

使用合成数据预测亚马逊欺诈交易

根据英国金融公司 2023 年年度欺诈报告,在英国,由于各种欺诈活动,估计损失了 12 亿英镑(www.ukfinance.org.uk/policy-and-guidance/reports-and-publications/annual-fraud-report-2023)。不幸的是,这并不是唯一的问题;欺诈活动也阻碍了经济增长,破坏了关系,并削弱了社会凝聚力。

亚马逊在可利用的真实数据集方面遇到了许多问题,特别是对于欺诈交易预测分析。除了真实数据集的偏差和不平衡问题外,它们在罕见事件下没有包含足够的训练样本。这导致机器学习模型在这些场景下的准确性较低。为了解决这些问题,他们使用了WGAN-GP,我们已在第七章中讨论过。他们利用 WGAN-GP 来学习真实数据。然后,他们使用这个生成模型来生成样本,使数据集平衡并包括罕见的欺诈活动。这补充了训练数据集,并直接提高了机器学习模型在标准场景和挑战场景下的鲁棒性和泛化能力,在这些场景中,没有足够的真实训练数据可用。更多信息,请参阅在亚马逊 SageMaker 中使用合成数据增强欺诈交易 (aws.amazon.com/blogs/machine-learning/augment-fraud-transactions-using-synthetic-data-in-amazon-sagemaker)。

摘要

在本章中,我们讨论了预测分析和其在行业中的主要应用。我们探讨了基于真实数据的解决方案的主要局限性。然后,我们学习了合成数据如何为这些问题提供一个优雅的解决方案。此外,我们还介绍了三个案例研究,了解了某些公司如何利用合成数据来改进他们的预测分析,从而提高他们的服务和收入。在下一章中,我们将强调一些最佳实践,以成功和高效地应用合成数据来解决您自己的问题。

第十三章:应用合成数据的最佳实践

合成数据确实具有许多优势,并且最近在各个领域和应用程序中得到了成功和广泛的应用。然而,许多普遍问题限制了合成数据的可用性。在本章中,你将了解这些问题,这些问题是合成数据的瓶颈。然后,我们将深入探讨与领域相关的问题,这些问题使得部署合成数据更具挑战性。你将在医疗保健、金融和自动驾驶汽车等各个领域探索这些问题。随后,你将了解到一套优秀的良好实践,这些实践可以提高合成数据在实际应用中的可用性。

在本章中,我们将涵盖以下主要主题:

  • 揭示生成和利用合成数据所面临的挑战

  • 限制合成数据可用性的领域特定问题

  • 有效利用合成数据的最佳实践

揭示生成和利用合成数据所面临的挑战

在本节中,你将了解不同领域通常看到的主要常见问题,这些问题限制了合成数据的好处和可用性。

我们可以将这些限制因素大致分为四个主要类别:

  • 领域差距

  • 数据表示

  • 隐私、安全和验证

  • 信任和可信度

它们可以表示如图 图 13.1 所示:

图 13.1 – 限制合成数据在实际应用中可用性的主要因素

图 13.1 – 限制合成数据在实际应用中可用性的主要因素

接下来,让我们更详细地探讨这些类别的每一个。

领域差距

虽然神经网络在从大型数据集中学习隐藏模式、相关性和结构方面非常成功,但它们可能会遭受领域差距问题。领域差距通常指的是源领域和目标领域数据之间的差异。源领域指的是训练数据所在的领域,在该领域上训练了机器学习(ML)模型。另一方面,目标领域指的是模型将要被测试、评估或实际应用的领域。

在许多场景中,你可能在某个数据集上取得优异的结果,但在另一个数据集上却表现出令人不满意的表现。这两个数据集可以是真实的、合成的,或者两者的混合。然而,我们在这里关注的是合成源领域和真实目标领域,因为这通常是主要且最常见的情况。在大型合成数据集上训练你的机器学习(ML)模型并在合成领域取得优异性能,并不一定保证在真实数据集上也能取得相同的表现。因此,通常建议你在目标领域收集的数据集上验证你的 ML 模型。

现在,让我们深入探讨合成领域和真实领域之间领域差距的主要原因。一般来说,我们可以识别以下主要因素:

  • 缺乏现实性

  • 分布差异

  • 缺乏噪声和伪影

缺乏现实感

使用模拟器、游戏引擎或生成模型可能会生成吸引人且半真实的合成数据,但并非完全真实的数据。合成数据生成器无法捕捉复杂真实世界的所有细节。对于机器学习模型来说,没有必要在捕捉所有真实世界细微差别的数据上训练。然而,它需要在捕捉和反映基本和辅助任务相关细节的合成数据上训练。承认这两种场景之间的实质性差异至关重要。此外,确定与你的机器学习任务相关的内容可能不是一个简单的过程。因此,一般来说,如果你没有在足够真实的数据上训练你的机器学习模型,你最终会在你的训练数据和现实世界之间出现领域差距。因此,你的模型在实际应用中可能表现不佳。

分布差异

深度学习(DL)和机器学习模型的训练过程本质上是学习如何建立输入特征和输出标签之间的关联。换句话说,对于分类问题,机器学习模型学习将像素颜色和位置中的某些模式与目标类别标签联系起来。因此,当机器学习模型接收到一张新图像时,它可能会根据在训练阶段学习的模式正确地对其进行分类。正如你所看到的,有一个明确的假设,即源域和目标域之间的数据分布是相同的或彼此非常接近。如果合成数据的分布与真实数据不够接近,这将使得从合成数据中学习到的关联、模式和相关性不适用于真实数据。

为了演示,让我们设想一个能够捕捉主要思想的场景,尽管它可能并不完全反映现实。如果你训练你的机器学习模型在从《宠物大机密》动画电影收集的合成标记图像上执行猫狗分类任务,你不会期望你的模型在真实数据上表现良好,因为存在分布差异问题。例如,电影中猫和狗的尺寸、颜色、变化和场景中其他对象的密度可能与真实数据集中的不完全匹配,尽管它们可能看起来部分真实。重要的是要认识到,这里的问题不是照片的真实性,而是分布差异。

缺乏噪声和伪影

尽管可以通过生成合成数据来近似或表示真实数据,但通常对复杂真实世界数据的噪声和伪影(异常和不完美)进行建模极具挑战性。现实世界充满了不完美、异常、噪声和伪影。这有多种原因,例如随机事件的发生、复杂过程中的相互作用和涌现,传感器和测量程序的限制和错误,甚至由于人为干预而产生的错误。因此,合成数据可能成功地呈现分布的中心部分,但它可能无法捕捉到异常、离群值和伪影。因此,当机器学习模型在训练过程中没有观察到这些场景时,它将在遇到现实世界中的类似情况时直接失败。

关于如何弥合合成域和真实域之间差距的更多详细信息,请参阅第十四章

现在让我们探索下一个主要类别,该类别限制了合成数据的可用性。

数据表示

训练数据通常被收集或生成,以作为现实世界的代理。在这个过程中,人的因素始终存在。因此,在某种程度上,我们的决策、假设和偏见会明确或隐性地反映在我们选择如何表示现实世界以供机器学习模型使用的方式中。尽管在真实数据中这也是一个问题,但在合成数据中,它更为重要和复杂,正如我们接下来将要看到的。

偏差和扭曲

如我们所知,生成合成数据的主要方法之一是使用生成模型,这些模型是在真实数据上训练的(更多详细信息,请参阅第七章)。如果生成模型是在有偏差和扭曲的真实数据上训练的,它也会生成有偏差的数据。然后,当机器学习模型在这组数据上训练时,决策也将是有偏差的。因此,在我们生成合成数据时,彻底理解和关注我们的决策方法论和假设的质量和程序非常重要。

覆盖范围有限和过度拟合

在这一类别下的第二个主要问题是合成数据的多样性。想象一下,你想使用游戏引擎来生成合成数据,为语义分割问题构建一个 3D 虚拟世界。为了使你的合成数据有用,你需要多样化场景元素,如 3D 模型、材料、纹理、光照和相机参数。否则,你的机器学习模型将过度拟合到少数几种变化,并在真实数据测试时无法很好地泛化。需要注意的是,多样化这些场景元素需要购买或设计更多的 3D 资产,更多的劳动和努力,更多的预算支出,以及更多的工程师、设计师和程序员。

缺乏上下文

与由现实世界过程生成的真实数据不同,合成数据是通过算法或系统人工生成的。因此,它缺乏对于学习所考虑的现象或任务可能至关重要的上下文信息。

例如,假设我们创建了一个用于生成猫狗分类问题合成数据的系统。确实,我们可以在各种属性下生成成千上万的有标签的猫和狗图像,例如光照条件、背景和天气条件。然而,用合成数据捕捉到的至关重要的信息是上下文——换句话说,狗和猫通常在现实世界中何时、何地以及如何出现。例如,我们通常可以在公园、街道和住宅区看到它们。另一方面,在医院和实验室看到它们的可能性不大。因此,正如你所看到的,如果我们没有完全意识到问题的上下文,我们可能会最终生成缺乏上下文的合成训练数据。在这个简单场景中,理解上下文可能很容易,但在其他场景中,上下文可能并不清晰和直接。

隐私、安全和验证

如我们之前所见,真实数据的主要问题之一是隐私(更多信息,请参阅第三章)。不幸的是,即使对于合成数据,这仍然是一个问题。

在处理敏感数据时,通常在数据的有用性和隐私之间有一个权衡。用于医疗保健和金融等领域某些问题的合成数据生成器通常是在敏感数据上训练的。因此,生成的合成数据可能泄露敏感信息的机会。

虽然生成合成数据是主要挑战,但在部署合成数据用于你的机器学习问题之前,还有其他任务需要执行。合成数据需要评估和验证。因此,应该执行有效的风险评估程序,以确保合成数据是匿名的,并且仍然代表所考虑的现象。随着隐私攻击的发展,合成数据生成过程需要持续评估和监控,以确保生成的合成数据不会违反规定或泄露敏感信息。

接下来,让我们探讨另一个有趣的因素,它与客户的社会学有关。

信任和可信度

机器学习总体上仍然是一个新兴的新兴领域,合成数据最近才被利用。因此,公司、客户和机器学习从业者需要时间来理解和信任合成数据。让我们讨论这个类别下的主要两个元素,它们通常限制了合成数据在实际中的可用性。

消费者怀疑和缺乏熟悉感

随着公司刚刚开始部署更多基于合成数据的机器学习解决方案,客户也开始质疑这种新方法的可用性。背后的一个主要原因是他们对合成数据生成方法的不理解或对其不熟悉。

对人工性的感知

合成数据并非来自现实世界,而是人工生成的。其合成性质导致客户对其可用性和真实性产生疑问。因此,他们可能会质疑并不相信这个新的数据源或基于它的任何机器学习解决方案。

现在你已经了解了限制合成数据可用性的关键一般性问题,让我们考察在某些领域(如医疗保健和金融)中常见的广泛领域特定问题。

限制合成数据可用性的领域特定问题

除了限制合成数据在实际中可用性的一般性问题之外,还有一些与特定领域相关的特定问题。在本节中,我们探讨这些常见的领域特定问题,限制合成数据的可用性。让我们研究以下三个领域的合成数据可用性问题:医疗保健、金融和自动驾驶汽车。

医疗保健

医疗保健中的机器学习需要大规模的训练数据。通常,这些数据是非结构化的,来自不同的传感器和来源,是纵向的(在长时间内收集的数据),高度不平衡,并且包含敏感信息。患者所患的疾病和病症种类繁多且复杂,并依赖于众多因素,如基因、地理位置、医疗状况和职业。因此,为了在医疗保健领域生成有用的合成训练数据,通常需要领域专家来评估生成的训练数据的质量以及机器学习工程师所做假设的有效性。更多信息,请参阅在临床数据管道中增强领域专业知识 (Pipelines) (www.ncbi.nlm.nih.gov/pmc/articles/PMC7677017)。

金融

这个领域通常与快速变化相关,受到大量通常很难预测的因素和元素的影响,例如政治、法规、竞争、新技术和自然灾害。因此,生成考虑市场动态和其他因素的合成数据并不容易。因此,将领域知识应用于合成生成管道可能会显著提高生成的合成数据在该领域的可用性。更多详情,请参阅数据驱动和机器驱动金融中的期望、能力和领域知识 (finance) (www.tandfonline.com/doi/full/10.1080/03085147.2023.2216601)。

自动驾驶汽车

模拟 3D 虚拟世界是一项艰巨的任务。然而,更具挑战性的是模拟驾驶员和行人的行为。在现实世界中,人类行为复杂,难以预测,并且高度依赖于环境和情境。例如,在自然灾害和疏散事件中,驾驶员和行人可能不会遵守交通规则和规则。生成包含并预测类似场景的合成数据非常复杂,并且不容易实现。此外,模拟器通常需要做出许多假设以简化计算。然而,这些假设的后果可能并不总是清晰的,并可能导致机器学习模型在关键和罕见情况下失败。

接下来,让我们学习一些最佳实践,以充分发挥合成数据潜力。

合成数据有效利用的最佳实践

在本节中,我们将学习一些常见的良好实践,这些实践可以提高您基于合成数据的机器学习解决方案在实际应用中的可用性:

  • 理解问题:在开始部署合成数据之前,您需要了解您的机器学习模型和数据的问题是什么,以及为什么可用的真实数据集不适合。如果您对问题以及基于可用的真实数据集的解决方案的限制没有完全了解,请不要直接跳到合成数据解决方案。

  • 理解合成数据生成流程:我们不应将合成数据生成流程视为黑盒。然而,我们需要对生成过程有一个良好的理解,以避免偏差和伪影。例如,假设我们正在为标记欺诈交易的应用程序生成合成数据。如果我们的合成数据生成器经常生成具有某些属性的大多数欺诈交易,例如交易金额在 10K 到 12K 之间,并且交易地点是某些特定国家,那么在这个有偏差的数据上训练的机器学习模型将倾向于错误地将具有这些属性的任何交易识别为欺诈,无论其他关键属性如何!正如预期的那样,这将使我们的机器学习模型在实际中表现不佳。

  • 多样性、可变性和现实性:为了在实际中发挥作用,合成数据通常应该是多样化的、丰富的和现实的,并且与真实数据集的分布相匹配。请参阅机器学习中的多样性(arxiv.org/pdf/1807.01477.pdf)和增强照片逼真度(arxiv.org/abs/2105.04619)。始终建议您分析可用的真实数据(如果有的话),并确定您希望您的合成数据集解决的关键可变性和属性。

  • 持续验证和评估:你应该始终并且频繁地比较和评估生成合成数据的质量,以确保数据生成管道按预期工作。例如,如果你正在处理敏感数据,你应该持续评估生成的合成数据,以确保它不会泄露任何敏感信息,并确保高质量的匿名化过程。

  • 结合合成数据和真实数据:通常建议结合合成数据和真实数据以获得最佳结果。在两种数据的混合上训练或先在合成数据上预训练然后在真实数据上微调都是提高合成数据可用性的已知方法。请参阅在不利条件下进行语义分割:基于天气和夜间感知的合成数据方法(bmvc2022.mpi-inf.mpg.de/0977.pdf)和在不利天气条件下使用合成数据进行人员跟踪(doi.org/10.1016/j.imavis.2021.104187)。

  • 噪声和异常值:在生成合成数据时,一个主要常见的问题是忽略或低估异常值和罕见场景的益处。尽量始终包括这些情况,因为它们对于确保你的机器学习模型在现实世界中的这些情况下不会失败是至关重要的。

摘要

在本章中,我们讨论了部署合成数据的主要挑战。然后,我们深入探讨了特定领域的问题。我们了解到为什么合成数据在本质上具有挑战性,尤其是在医疗保健和金融等领域。最后,我们探索了一系列最佳实践,以提高你在实践中使用合成数据的可操作性。接下来,我们将更详细地关注通过合成到真实领域的适应技术来增强和改进合成数据的使用性。

第五部分:当前挑战和未来展望

在本部分中,你将了解一个通常限制合成数据可用性的知名问题。你将了解领域差距问题以及多样性和逼真度为什么是生成有用和大规模合成数据的主要挑战之一。你将了解各种方法来弥合领域差距并提高你合成数据的多样性和逼真度。然后,我们将回顾基于合成数据解决方案的益处、挑战和局限性。最后,我们将强调一些有趣的未来视角。

本部分包含以下章节:

  • 第十四章合成到真实领域适应

  • 第十五章合成数据中的多样性问题

  • 第十六章计算机视觉中的逼真度

  • 第十七章结论

第十四章:合成到真实领域自适应

本章向您介绍了一个常见的问题,通常限制了合成数据的使用性,称为领域差距问题。在本章中,您将学习到各种弥合这一差距的方法,这将帮助您更好地利用合成数据。同时,本章讨论了合成到真实领域的自适应的最新研究。因此,您将了解您可能用于自己问题的方法。然后,它代表了在此背景下的问题和挑战,以便更好地理解这个问题。

在本章中,我们将涵盖以下主要主题:

  • 机器学习中的领域差距问题

  • 合成到真实领域自适应的方法

  • 合成到真实领域自适应——问题和挑战

机器学习中的领域差距问题

在本节中,我们将了解领域差距是什么以及为什么它在机器学习中是一个问题。领域差距是限制合成数据在实际中可用性的主要问题之一。它通常指的是两个或更多领域中的数据分布和属性的不相似性。它不仅与合成数据相关。然而,它是机器学习中一个常见的问题。在测试类似但略有不同的数据集时,通常会发现机器学习模型性能的下降。更多信息,请参阅 Who is closer: A computational method for domain gap evaluation (doi.org/10.1016/j.patcog.2021.108293)。

数据集之间领域差距的主要原因可以与以下因素相关联:

  • 对传感器变化的敏感性

  • 类别和特征分布的差异

  • 概念漂移

让我们更详细地讨论这些观点。

对传感器变化的敏感性

在计算机视觉中,你的机器学习模型可能在某些相机、设置和参数捕获的图像上表现良好,但在使用不同相机或不同参数捕获的相似输入下会彻底失败。例如,你的计算机视觉模型可能在从第一人称视角捕获的视频上表现良好,但在从第三人称视角捕获的视频上会彻底失败。因此,我们可以看到,即使是同一任务,如动作识别,通常也会侧重于研究人的视角,如在通过建模主体-动作相关性进行第一人称活动识别doi.org/10.1109/IJCNN55064.2022.9892547)。另一个例子是相机的视野FoV)。一些计算机视觉任务,如语义分割,也是在特定的相机视野下进行的。在标准视野下捕获的 Cityscapes 和 Synscapes 数据集上训练的语义分割方法,在由超广角鱼眼镜头捕获的鱼眼图像上进行分割时会失败。例如,请参阅FPDM:用于门 监控的鱼眼全景分割数据集(ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9959151)。

类别和特征分布的差异

属性、类别和特征分布的差异或不一致性是合成域和真实域之间或甚至在同一真实域中训练和测试在不同数据集上时出现领域差距的主要原因之一。当处理基于时间序列的问题时,这一点可以清楚地观察到。很多时候,训练数据变得过时,并不来自测试或评估数据的同一分布。例如,一个基于一年前收集的数据来预测通货膨胀率的机器学习模型,一旦应用于当前数据,可能由于领域差距问题而表现不佳。这是因为源数据和目标数据分布以及特征现在与预期不同。

概念漂移

概念漂移指的是输入(特征)和输出(目标)之间关系的变化。让我们举一个说明性的例子。假设我们设计了一个对象分类器,“打印机”是我们感兴趣的对象之一。正如你在图 14.1中可以看到的,“打印机”概念在时间上发生了剧烈变化,从早期的打字机到喷墨打印机,再到激光打印机。因此,如果你的训练数据只包含旧打印机(打字机),它将因为领域差距问题而难以准确分类现代打印机。

图 14.1 – 概念漂移的示例(来源:Pixabay)

图 14.1 – 概念漂移的示例(来源:Pixabay)

接下来,让我们探讨缓解合成域和真实域之间领域差距问题的主要解决方案。

从合成到现实域自适应的方法

在本节中,你将学习从合成到现实域自适应的关键方法。我们将讨论以下方法:

  • 域随机化

  • 对抗域自适应

  • 基于特征的域自适应

让我们从域自适应中最常用的方法之一开始。

域随机化

域随机化是一种通常用于缓解域差距问题并提高目标域上机器学习模型性能的机制或程序。这种方法旨在随机化训练数据或环境的主要属性和属性,例如模拟器,以增加机器学习模型在训练阶段所接触到的场景的多样性。因此,我们可以增加机器学习模型对未来可能遇到的场景的鲁棒性。有关更多信息,请参阅从模拟到现实世界的域随机化,用于迁移深度神经网络 (arxiv.org/pdf/1703.06907.pdf)。

让我们考察在两个有趣的领域中通常随机化的主要元素:计算机视觉和自然语言处理。

计算机视觉

在几乎任何计算机视觉问题、任务或系统中,我们都有以下四个主要元素,如图图 14.2所示。2:

图 14.2 – 计算机视觉中要随机化的主要元素

图 14.2 – 计算机视觉中要随机化的主要元素

接下来,让我们更详细地讨论这些元素。

  • 物体:它们通常是计算机视觉的主要焦点。它们充满场景并与彼此、光照和环境相互作用。计算机视觉中的许多主要任务,如物体检测、识别、分割和跟踪,从根本上与这些图像在三维世界中的外观以及世界如何被相机投影为二维图像有关。

利用域随机化来缓解域差距,例如,我们可以随机化以下元素以多样化物体的外观:

  • 纹理和材料

  • 颜色

  • 形状

  • 维度

  • 变形和动画

正如你所见,决定哪些因素更相关取决于任务和问题。

  • 光照:尽管光照对于使物体对观察者可见是必要的,但它几乎为几乎所有计算机视觉任务都带来了一个令人畏惧的问题。光照条件的一点点变化会极大地改变物体的外观,从而改变像素的强度,这使得这些物体对于基于机器学习的计算机视觉模型来说难以识别、检测或跟踪。

因此,为了使我们的机器学习模型在各种光照条件下保持鲁棒性,我们可能需要多样化以下元素:

  • 光照强度

  • 光照颜色和温度

  • 光源

  • 光照异常:耀斑、眩光和闪烁

  • 相机和传感器特性:相机从场景中捕获视觉数据,这是计算机视觉模型最通用和传统的输入。因此,为了确保我们的机器学习模型即使在新的相机设置下也能很好地泛化,我们需要在训练阶段多样化,例如,多样化的相机设置。这可以通过以下方式实现:

    • 相机位置

    • 方向

    • 海拔

    • 视角

    • 光圈、曝光和焦点

此外,相机参数(如焦距)的变化也可能极大地改变世界被捕捉和感知的方式。因此,它将直接影响计算机视觉系统识别世界的方式。因此,我们可能需要在我们的训练数据中考虑以下传感器特性变化:

  • 镜头畸变

  • 蒙影

  • 色差

  • 划痕

  • 光泄漏

  • 环境因素:即使场景、光照和相机参数相同,环境因素也会在很大程度上改变场景可能的外观。例如,像雾这样的天气条件充当低通滤波器,移除远离相机的物体细节。因此,这使得在这些场景中提取稳健特征变得更加困难。因此,许多机器学习模型可能在类似情况下失败或挣扎。

在许多情况下,我们无法清楚地识别我们的计算机视觉系统将工作的环境因素,因此我们可能需要随机化以下因素:

  • 天气状况

  • 白天时间

  • 室内和室外环境

  • 污染程度

  • 风的影响

  • 地形和景观

  • 路面状况

  • 人群密度

  • 背景杂乱

  • 地理位置信息

因此,基于我们在本节中学到的知识,为了缓解源(训练)和目标(评估)域之间的领域差距,我们需要在训练过程中使我们的机器学习模型学习的场景多样化并随机化。接下来,让我们深入了解如何利用领域随机化来解决 NLP 问题。

自然语言处理(NLP)

与我们在计算机视觉中讨论的类似,领域随机化也可以用于 NLP 问题。通常,它可以部署来使 NLP 模型更加鲁棒和准确。更多信息,请参阅 《扩大规模与提炼:语言引导的机器人技能获取》 (arxiv.org/abs/2307.14535)。

如您在 图 14.3 中所见,有四个关键元素可以随机化,以在实际中提高 NLP 模型的泛化能力:

图 14.3 – NLP 中需要随机化的主要元素

图 14.3 – NLP 中需要随机化的主要元素

让我们详细讨论以下这些元素:

  • 文本变化:为了提高 NLP 模型对现实世界问题的泛化能力和鲁棒性,引入了许多文本变化来增强和补充训练数据。这通常通过以下元素的变化来完成:

    • 词汇表

    • 句子结构

    • 句子长度

  • 上下文:NLP 模型可以在不同的上下文中以及各种应用中使用。例如,ChatGPT 可以用来回答关于各种主题的问题,如医疗保健、数学、金融和历史。它可以用来提出旅行计划,甚至总结文本。因此,在训练数据中多样化这些元素至关重要:

    • 主题

    • 领域

    • 文本体裁,如社交媒体、研究论文和小说

  • 语言因素:一个理想的 NLP 模型应该能够处理和回应不同格式和风格的查询。此外,它应该能够理解各种应用中的情感。因此,以下因素应在训练阶段随机化,以确保在实际应用中表现更佳:

    • 风格,如正式、非正式、技术或口语

    • 情感,如积极、消极或中性表达

  • 噪声和扰动:在训练数据中引入扰动,并指导 NLP 模型如何处理这些场景,将确保您的 ML 模型学会如何正确应对这些问题。现实世界是嘈杂的,因此在训练阶段关注以下因素至关重要,以覆盖通常在文本数据中观察到的这些已知不完美之处:

    • 拼写错误

    • 语法错误

    • 标点符号错误

接下来,让我们探索另一种有趣的域适应方法。

对抗域适应

对抗域适应是基于 GANs 在合成域和真实域之间架起桥梁的另一种强大技术。在这种域适应方法中,生成器试图提取域无关的特征,而判别器试图识别数据的来源:合成还是真实。一旦模型训练完成,判别器无法再识别数据域的来源,生成器就可以生成域不变的特征。更多信息,请参阅对抗判别域 适应 (arxiv.org/pdf/1702.05464.pdf)。

让我们简要讨论一个来自计算机视觉的例子,说明这种合成到真实域的自适应方法如何被利用。例如,让我们考虑车辆重识别问题。研究表明,使用对抗性领域自适应训练合成和真实数据提高了两个评估真实数据集CityFlow-ReID (paperswithcode.com/dataset/cityflow)和VeRi (github.com/VehicleReId/VeRi)的性能,与其他解决方案相比有很好的差距。该方法在合成和真实车辆重识别数据集的混合上训练。机器学习模型被引导学习判别性特征,特别是从真实训练图像中学习。同时,它还被引导学习合成域和真实域之间的共同特征。更多细节请参阅StRDAN:用于车辆重识别的合成到真实域自适应网络 (arxiv.org/abs/2004.12032)。接下来,让我们看看另一种用于领域自适应的方法。

基于特征的领域自适应

与先前的方法不同,基于特征的领域自适应旨在学习一种变换,该变换可以从合成域和真实域中提取域无关的特征。这种方法将两个域的特征转换成新的表示,然后最小化合成域和真实域之间的差异。换句话说,这种方法试图使两个域的特征分布相互对齐。因此,这种方法促使机器学习模型学习基本特征,同时丢弃特定于领域的细节和变化。例如,如果机器学习模型通过在Synscapes (synscapes.on.liu.se)和Cityscapes (www.cityscapes-dataset.com)数据集上训练来学习语义分割,我们希望模型能够通过某种方式学习这些对象的意义。例如,人类通常在人行道或人行道上行走,他们通常具有胶囊状形状。这些都是我们希望模型学习的高级和域不变特征。

最后,为了详细了解领域自适应方法,请参阅领域自适应简评 (arxiv.org/pdf/2010.03978v1.pdf)。现在,我们已经了解了通常用于合成到真实域自适应的一些关键方法。接下来,让我们深入了解它们的共同局限性以及如何在实践中克服它们。

合成到真实域的自适应——问题和挑战

在本节中,你将探索从合成到真实领域自适应的主要问题和挑战。这将帮助你了解这种方法的优势。此外,它还将为你提供更深入的了解,了解如何在你的问题中克服这些问题。因此,我们将重点关注以下问题:

  • 未知的领域

  • 有限的真实数据

  • 计算复杂性

  • 合成数据局限性

  • 多模态数据复杂性

让我们在以下小节中详细讨论它们。

未知的领域

在许多情况下,目标是确保你的机器学习模型能够很好地泛化到新的领域。如果我们知道领域,领域自适应方法可能有效。然而,有时预测这个新领域的属性是不可能的。例如,假设你有一个在欧洲表现良好的计算机视觉模型,但你还想让这个算法在中国、非洲、中东甚至火星上也能工作!我们并不总是能够拥有关于机器学习模型将要部署的环境或领域的先进知识,以便进行适当的适应。

有限的真实数据

如我们所知,真实数据稀缺且昂贵。因此,监督式领域自适应方法不能轻易应用于所有机器学习问题。此外,合成领域和真实领域之间配对数据的有限可用性使得问题更加困难。因此,从合成领域到真实领域的映射学习确实复杂且繁琐。

计算复杂性

领域自适应方法计算成本高,可能需要资源、时间、经验、大量预算和领域专家。因此,训练这些模型,尤其是对抗性领域自适应模型,并不容易,有时甚至具有挑战性。

合成数据局限性

合成数据有一些局限性,特别是如果数据生成不当。合成数据可能缺乏真实数据的多样性和现实性。因此,这使得适应方法弥合差距变得更加困难。请参阅第十三章

多模态数据复杂性

最近最先进的计算机视觉系统,如 Tesla Vision Autopilot,利用来自不同来源的数据,例如摄像头、激光雷达传感器、雷达传感器、加速度计和陀螺仪。然而,生成和标注真实数据以及将其与合成数据匹配并不是一个简单的过程。例如,可以生成语义分割、光流或其他相关地面真实情况,但模拟虚拟世界中加速度计和陀螺仪的行为非常困难。此外,开发一个提供所有这些地面真实情况的模拟器非常复杂。与此并行,领域自适应学习如何适当地将一个领域的数据适应到另一个领域也相当困难。

总结

在本章中,你学习了机器学习领域中域差距问题的本质。此外,你还探讨了缓解该问题的主要解决方案。我们重点讨论了计算机视觉和自然语言处理中的域随机化。然后,你了解了从合成域到真实域适应的主要问题和局限性。在下一章中,我们将探讨并强调合成数据中的多样性问题,以便更好地理解合成数据在机器学习中的优缺点。

第十五章:合成数据中的多样性问题

本章向您介绍合成数据领域的一个众所周知的问题,即生成多样化的合成数据集。它讨论了确保大规模数据集中高度多样性的不同方法。然后,它突出了实现合成数据多样性的问题和挑战。

在本章中,我们将涵盖以下主要内容:

  • 机器学习中多样化数据的需求

  • 生成多样化的合成数据集

  • 合成数据领域中的多样性问题

机器学习中多样化数据的需求

正如我们在前面的章节中讨论和看到的,多样化的训练数据提高了机器学习模型对新领域和上下文的泛化能力。实际上,多样性有助于你的基于机器学习的解决方案更准确,更好地适用于现实世界场景。此外,它使模型对噪声和异常更加鲁棒,这在实践中通常是不可避免的。有关更多信息,请参阅 Diversity in Machine Learning (arxiv.org/abs/1807.01477) 和 Performance of Machine Learning Algorithms and Diversity in Data (doi.org/10.1051/MATECCONF%2F201821004019)。

接下来,让我们强调使用多样化训练数据在机器学习中的主要优势。总的来说,在多样化的数据集上训练和验证你的机器学习模型可以提高以下方面:

  • 可迁移性

  • 问题建模

  • 安全性

  • 调试过程

  • 对异常的鲁棒性

  • 创造力

  • 客户满意度

现在,让我们更详细地探讨这些要素中的每一个。

可迁移性

当你在涵盖各种场景、环境和上下文的多样化数据上训练你的机器学习模型时,你提高了你的机器学习解决方案在其他应用和领域中的可迁移性。其原因是,当模型在训练阶段学习如何处理更多样化的情况时,它就更能适应新的、未见过的上下文。有关更多信息,请参阅 Can Data Diversity Enhance Learning Generalization? (aclanthology.org/2022.coling-1.437)。

更好的问题建模

多样化的训练数据使机器学习模型能够从不同的角度看待问题。例如,让我们考虑我们的机器学习模型正在学习一个语义分割任务。在恶劣天气条件下以及具有各种颜色、纹理和形状的物体下训练模型,将有助于模型更好地学习从 RGB 图像到语义分割图像的映射。因此,它将显著提高性能,因为模型已经学会了如何捕捉各种变化下的更广泛范围的模式。这些模式和输入特征与输出标签之间的关联,在训练数据集较少多样化的情况下可能不容易识别。

安全性

最近的研究表明,在多样化的训练数据上训练您的机器学习模型可以提高模型对对抗攻击的鲁棒性。因此,多样化的训练数据使您的模型更加可靠和安全。例如,在多样化的对抗训练样本集上训练您的机器学习模型可以显著提高模型对对抗攻击的鲁棒性。这些攻击主要涉及通过添加噪声来操纵图像,以欺骗机器学习模型,同时仍然使它们对人类眼睛来说是可识别的。例如,某些像素强度的轻微变化,如交通标志的颜色,可能会导致机器学习模型以高置信度错误地将它归类为不同的类别。更多信息,请参阅 针对深度神经网络对抗攻击的多样性对抗训练 (www.mdpi.com/2073-8994/13/3/428) 和 对抗攻击在交通标志识别中的应用:一项 调查 (arxiv.org/pdf/2307.08278.pdf)。

调试过程

利用多样化的数据在验证和评估阶段有助于机器学习从业者识别其机器学习模型和算法的弱点和局限性。因此,他们可以在具有挑战性的场景下避免代价高昂的失败。此外,他们可以迭代他们的解决方案并减轻任何潜在的问题和问题。例如,假设我们正在提出一个新的个人识别机器学习模型。为了清楚地了解我们模型的局限性,我们需要在涵盖各种照明条件、摄像机视角、室内和室外场景以及其他相关属性的不同数据集上评估该模型。这将帮助我们找出我们方法中的弱点。通过回到我们的例子,我们可能会看到我们的模型在夜间或摄像机非常靠近人的时候难以识别人。这种观察对于改进模型和防止代价高昂的失败至关重要,而这不能在没有使用适当的多样化验证或评估数据集的情况下实现。

对异常的鲁棒性

在包含异常的多样化训练数据上训练您的机器学习模型有助于模型学习如何处理类似的情况。因此,它使您的基于机器学习的解决方案对异常值和意外情况更加鲁棒。例如,假设您为深度估计训练了机器学习模型,该模型是在正常条件下由行业标准传感器收集的标准数据上进行的。如果相机传感器部分损坏,或者一些灰尘或雨滴积累在相机镜头上,您的模型可能会失败。因此,在类似的场景下训练您的机器学习模型可以提高您机器学习系统的鲁棒性和可靠性。更多信息,请参阅 一种新的跨扰动用于单域泛化 (arxiv.org/pdf/2308.00918.pdf)。

创造力

在创意是关键要求的领域中,在多样化的训练数据上训练生成模型是满足这一需求所必需的。例如,一个大型语言模型或图像生成器将显著受益于从不同来源收集的文本或视觉数据的训练。这将帮助这些生成模型接触到各种主题、风格、想法和观点,这将提供充足的知识并促使模型在各个任务和应用中更加具有创造力。对于一些有趣的例子,请参阅 Deep Dream Generator (deepdreamgenerator.com)、AutoDraw (www.autodraw.com)、Stablecog (stablecog.com) 和 DALL-E 2 (openai.com/dall-e-2)。

包容性

部署适当代表现实世界的多样化训练数据有助于让客户感觉到你的基于机器学习的解决方案是包容性的,不会歧视全球人口的任何特征。因此,确保你的机器学习模型对所有客户都能按预期工作,无论他们的年龄、种族、性别、地理位置、语言和宗教,这一点至关重要。如果客户因为上述任何因素而感到处于不利地位,他们将对你的业务产生负面印象,而不仅仅是应用程序本身。此外,这还可能导致组织面临法律问题和不良后果。另一方面,这有助于决策者做出更合适的决策,这些决策会仔细考虑目标受众中每个人口群体的独特需求。

现在我们已经了解了在多样化的训练数据上训练我们的机器学习模型的重要性,让我们来探讨如何生成多样化的合成数据。

生成多样化的合成数据集

在本节中,你将学习到生成多样化合成数据集的不同方法。我们将讨论以下内容:

  • 潜在空间变化

  • 集成合成数据生成

  • 多样性正则化

  • 结合外部知识

  • 逐步训练

  • 使用游戏引擎进行程序化内容生成

潜在空间变化

潜在空间通常指的是一个高维空间,其中训练数据以更抽象或紧凑的方式表示。具有许多层的深度学习旨在使潜在空间中的特征捕获更多语义和概念信息。更多详情,请参阅第一章。因此,这些特征在该空间中通过机器学习模型在训练阶段传达关于问题的编码信息。我们可能无法直接将潜在空间中的变化与在如 GANs 等模型中生成的图像上的变化联系起来。然而,在《解释 GANs 的潜在空间以进行语义人脸编辑》(arxiv.org/abs/1907.10786)和《GANs 中潜在语义的闭式分解》(arxiv.org/abs/2007.06600)中表明,改变潜在空间中的某些属性可以生成独特且多样化的合成样本。例如,如果你仔细改变潜在空间中的某些特征,你可能会生成具有不同姿势、背景、光照和天气条件的新样本。

集合合成数据生成

通常部署以提高生成合成数据多样性的一种方法是使用多个生成模型以确保它们能够捕获预期的数据分布。这在分布复杂且无法使用单个生成模型进行建模的情况下尤其适用。更多信息,请参阅《用于合成训练数据生成的 GANs 集合》(arxiv.org/pdf/2104.11797.pdf)。在这项工作中,使用了多个 GANs 来提高生成的合成数据多样性。研究人员特别关注了这种方法在合成数字病理切片方面的有效性。GANs 在训练数据集上是独立且相互隔离地训练的。这项工作表明,优化过程的随机性对于更好地表示训练数据分布和丰富 GANs 生成的数据多样性是基本的。

多样性正则化

鼓励生成模型生成多样化的合成样本的另一种方法是利用训练目标或损失中的正则化项。换句话说,你可以对生成模型生成相似的合成样本进行惩罚。因此,你的模型将倾向于生成更多样化的样本以最小化训练损失。例如,这种方法在用于多样化图像合成的模式寻找生成对抗网络arxiv.org/pdf/1903.05628.pdf)中被采用,以解决 GAN 中的模式坍塌问题并提高生成合成图像的多样性。有关 GAN 中模式坍塌问题的更多详细信息,请参阅第七章。这种方法不需要对 GAN 的架构进行任何修改。它只是将损失函数改为鼓励生成器生成不同的图像。因此,生成器被鼓励更好地覆盖训练数据分布,从而生成更多样化的合成图像。关于 GAN 中正则化方法的综述,请参阅GAN 中的正则化和归一化系统调查arxiv.org/abs/2008.08930)。

结合外部知识

你还可以对生成过程进行条件化,以鼓励生成模型生成具有特定属性和特定场景下的合成数据。例如,如果你的数据在雨天采集的训练样本较少,你可以明确地条件化 GAN 模型以生成更多这种天气条件下的示例。此外,你可能防止生成模型生成与你的问题不相关的示例。例如,如果你在室内环境中生成猫的图像,你可能防止你的 GAN 在恶劣天气条件下生成示例,因为这些条件在这个特定环境中是不适用的。这可以通过各种方式实现,例如修改损失函数对这些无关或不希望的预测施加惩罚。在这种情况下,判别器至少需要做出两个不同的预测:一个用于评估样本是真实还是虚假,另一个用于确定其相关性。

进阶训练

增加生成的合成样本多样性的另一种有趣的方法是在训练过程中逐渐引入更复杂的模式,在整个训练过程中增加生成器和判别器的层数,并在训练阶段对多样性较低的示例进行惩罚。这鼓励合成数据生成模型生成更多样化和变体化的数据。例如,在《用于提高质量、稳定性和变化的渐进式增长 GAN》arxiv.org/pdf/1710.10196.pdf)的研究中,研究人员通过添加新层并在训练过程中使用更详细和更高分辨率的图像来增长生成器和判别器,显著提高了 GAN 训练过程的稳定性和生成合成图像的多样性。

使用游戏引擎进行程序性内容生成

程序性内容生成PCG)是视频游戏中广泛使用的一种方法,用于使虚拟世界多样化且丰富,从而提高玩家的体验。同样的概念可以用于游戏引擎和模拟器中,以创建多样化的 3D 虚拟世界,从而生成多样化的合成数据。PCG 可以用于生成纹理、对象、地图、动画和其他场景元素。具体示例,请参阅《ProcSy:程序化合成数据集生成,用于语义分割影响因子研究网络》uwaterloo.ca/waterloo-intelligent-systems-engineering-lab/procsy)。

到目前为止,我们已经学习了通常用于提高生成合成数据多样性的主要方法。接下来,让我们了解这些方法的主要问题和局限性。

合成数据领域的多样性问题

正如我们所见,多样性有助于我们构建健壮、准确和通用的机器学习模型。此外,我们还学习了在实践中提高合成数据多样性的许多方法。在本节中,我们将探讨我们在尝试生成多样化合成数据时通常遇到的三种主要问题:

  • 平衡多样性与现实性

  • 隐私和保密问题

  • 验证和评估挑战

平衡多样性与现实性

通常在多样性和逼真度之间存在权衡。在不考虑这些生成的样本逼真度的前提下生成多样化的合成示例可能会引入或增加合成域和真实域之间的领域差距。更多细节,请参阅第十三章第十四章。例如,假设我们想要为特定的计算机视觉任务或应用生成带有运动汽车的图像。虽然生成覆盖现实世界中大多数可用真实运动汽车样本的多样化运动汽车至关重要,但我们不希望生成在问题上下文中不太可能观察到的运动汽车。因此,我们的目标始终应该是生成能够准确反映现实世界分布的合成数据。它应该是多样化的,同时也应该是逼真的,以便在实际中用于训练和测试机器学习模型。

隐私和保密问题

当生成受隐私或保密问题限制的具有真实数据的合成数据时,生成多样化的合成数据变得相当困难。其背后的原因是对于真实数据属性、模式和关联的理解有限,这些关联无法通过给定小规模训练数据集的生成模型来学习。因此,对于这类应用,生成模型生成多样化的合成数据变得极其困难。请参阅第三章以深入了解大规模真实数据集的隐私问题。

验证和评估挑战

该领域的主要问题之一是评估生成的合成数据的多样性,以及因此在实际应用中该数据的可用性。开发一个稳健、可靠和通用的多样性评估指标在实践中将非常有用。最先进的指标通常是问题相关的,实验性的,并且缺乏适当的理论框架。更多信息,请参阅生成模型的可靠保真度和多样性指标 (arxiv.org/abs/2002.09797)。

摘要

在本章中,我们讨论了为什么数据多样性对于基于机器学习的解决方案至关重要。我们还考察了生成多样化合成数据的关键方法。然后,我们强调了主要问题和挑战。在下一章中,我们将关注合成数据中的另一个相关且有趣的问题,即逼真度。

第十六章:计算机视觉中的逼真度

在本章中,您将了解为什么在计算机视觉中需要逼真合成数据。然后,您将探索生成逼真合成数据的主要方法。之后,您将理解主要挑战和限制。尽管本章侧重于计算机视觉,但讨论可以推广到其他领域和应用。

在本章中,我们将涵盖以下主要主题:

  • 计算机视觉中的合成数据逼真度

  • 逼真度方法

  • 逼真度评估指标

  • 逼真合成数据面临的挑战和限制

计算机视觉中的合成数据逼真度

在本节中,您将了解为什么逼真度在计算机视觉中至关重要。合成数据的逼真度是缓解真实和合成数据之间领域差距的主要因素之一。因此,在逼真合成数据上训练计算机视觉模型可以提高这些模型在真实数据上的性能。更多详情请参阅 Hypersim: A Photorealistic Synthetic Dataset for Holistic Indoor Scene Understanding (arxiv.org/abs/2011.02523) 和 A Review of Synthetic Image Data and Its Use in Computer Vision (www.ncbi.nlm.nih.gov/pmc/articles/PMC9698631)。此外,合成数据可以用来评估计算机视觉算法。然而,在非逼真合成数据上评估这些模型可能会导致这些模型表现出较差的性能,这并非因为测试场景的挑战性质,而是因为领域差距本身。因此,逼真合成数据对于有效地训练和准确评估机器学习模型至关重要。

现在,让我们讨论利用逼真合成数据的主要好处。首先,让我们深入了解特征提取。

特征提取

计算机视觉算法通常依赖于在训练阶段学习的自动特征提取。机器学习模型学习如何识别最可靠和具有判别性的特征和模式,后续子模块利用这些特征和模式来学习实际任务,例如语义分割、深度估计和视觉目标跟踪。在非逼真合成数据上训练您的计算机视觉模型,这些数据过度简化了现实世界,会导致不适当的特征提取。相反,逼真合成数据帮助机器学习模型学习如何提取判别性特征。因此,机器学习模型将在现实世界中表现良好。这是因为真实数据帮助机器学习模型更好地理解场景元素之间的关系,它们如何相互影响,以及它们如何有助于正在学习的任务。

领域差距

真实感合成数据缓解了合成域和真实域之间的领域差距。主要原因在于真实数据部分重采样了真实数据,这有助于计算机视觉模型在更接近模型实际部署环境的训练数据上训练。因此,模型可以从训练阶段学习的合成数据中很好地泛化。另一方面,大规模、多样但非真实感的合成数据可能会扩大领域差距并显著阻碍性能。

坚韧性

创建能够模拟真实光照、纹理、着色器、动画和摄像机运动的模拟器,使研究人员能够生成大规模、多样化的合成训练数据集,这些数据集能够恰当地反映现实世界中的挑战和多样性。因此,计算机视觉算法可以在更多真实场景中训练,以学习如何适应现实世界的实际复杂性。这对于使计算机视觉算法在现实世界中更加健壮至关重要,因为在现实世界中收集真实数据可能极其昂贵或不可行。

性能基准测试

合成数据提供了一种更准确、更高效的方式来生成地面真实数据(参考第五章)。地面真实数据对于评估机器学习模型性能至关重要。真实感合成数据使我们能够确保合成数据的性能适当反映了真实世界中的预期。相反,非真实感合成数据不太适合进行准确评估和基准测试。

真实感方法

在本节中,你将了解并探索通常用于生成真实感合成数据的主要方法。我们将了解以下内容:

  • 基于物理的渲染

  • 神经风格迁移

基于物理的渲染(PBR)

基于物理的渲染PBR)方法在游戏引擎如UnityUnreal中得到了广泛应用,用于准确模拟 3D 虚拟世界中的材料如何与光线相互作用。在现实世界中,这是一个复杂的过程,因此它需要深入了解光学并简化这些过程以适用于游戏引擎。基于物理的材料对于这种方法至关重要。它们类似于现实世界中类似材料如何与光线相互作用。这些材料通常具有基于现实世界材料真实测量的属性和参数。这些属性可能包括吸收、散射和折射系数和参数。需要注意的是,PBR 背后的主要原则是能量守恒,这意味着材料反射和散射的光能不应超过该材料接收到的总入射或接收光能。

如预期的那样,部署一个照片真实感渲染管线将帮助我们模拟和渲染更准确和真实的光照和材质行为。因此,我们可以生成更具照片真实感的合成数据。

神经风格迁移

神经风格迁移是一种著名的技巧,它可以将一种艺术风格从一个图像转移到另一个图像,同时保留后者的内容。这种方法可以应用于合成数据集,以提高其照片真实感,从而缓解合成数据和真实数据之间的领域差距。例如,Sim2Real风格迁移模型可以部署以弥合合成数据和真实数据在姿态估计任务之间的差距。更多信息,请参阅Sim2Real Instance-Level Style Transfer for 6D Pose Estimation (arxiv.org/abs/2203.02069)。此外,还有许多有趣的研究探讨了如何将来自Grand Theft Auto V电子游戏的合成数据集GTA5https://www.v7labs.com/open-datasets/gta5)适配到真实的Cityscapes数据集(www.cityscapes-dataset.com)。

照片真实度评估指标

在这个主题领域中的一个主要问题是定量评估生成的合成图像的照片真实感。在本节中,我们将探讨通常使用的指标。我们将探讨以下内容:

  • 结构相似性指数 度量SSIM

  • 学习感知图像块 相似度LPIPS

  • 专家评估

结构相似性指数度量(SSIM)

SSIM 是衡量两张图像之间结构相似度最广泛使用的指标之一。它首次在题为Image quality assessment: from error visibility to structural similarity的论文中提出(ieeexplore.ieee.org/document/1284395)。SSIM 指标并不比较两张图像的个别像素。然而,它考虑了一组像素,假设空间上接近的像素具有相互依赖性。这些依赖性可以与由给定图像捕获和呈现的实际物体结构联系起来。SSIM 特别关注像素之间的空间关系,如边缘和纹理,以评估图像与参考图像的接近程度。

最近,研究表明,当 SSIM 用于比较图像或包含在机器学习模型的训练损失中时,可能会导致不正确或意外的结果。更多信息,请参阅Understanding SSIM (arxiv.org/pdf/2006.13846.pdf)。

学习感知图像块相似度(LPIPS)

LPIPS通过利用在大规模数据集上训练用于计算机视觉任务的神经网络来衡量特征空间中图像之间的距离,例如在ImageNet数据集上训练的VGG。研究发现,LPIPS 给出了与人类感知图像之间相似性的更相似结果。更多信息,请参阅深度特征作为感知度量不可理喻的有效性(arxiv.org/abs/1801.03924)。在这篇论文中,研究发现,在复杂视觉任务上训练的机器学习模型学习到了丰富、通用和有用的世界视觉表示。这种知识可以用来以类似于人类可能感知这种相似性的方式来评估图像之间的视觉相似性。

专家评估

在某些应用中,我们可能需要请求领域专家对生成的合成图像进行评估。例如,假设你的生成模型正在生成用于后续训练癌症预测机器学习模型的计算机断层扫描(CT)合成图像。我们仍然可以利用定性指标,如结构相似性指数(SSIM)来评估与真实数据对应的结构相似性,峰值信噪比(PSNR)来衡量生成图像的质量,弗雷歇起始距离(FID)来了解生成样本的现实性和多样性,以及 LPIPS 来评估与真实数据的感知相似性。然而,对于这些关键问题,专家评估仍然是必不可少的。对合成生成数据的专家评估对于验证其有效性、质量和多样性至关重要。最重要的是,这种评估对于确认合成数据符合伦理标准是必不可少的。

接下来,让我们讨论生成光真实合成数据的一些主要挑战。

光真实合成数据面临的挑战和限制

在本节中,你将探索阻碍在实际中生成光真实合成数据的主要挑战。我们将强调以下限制。

创建超逼真场景

现实世界是复杂、多样和错综复杂的,细节丰富。现实场景中的元素具有各种形状、复杂的动态和高度非线性的相互作用。此外,我们对世界的视觉和感知是有限的,并受许多因素的影响,例如认知偏差和颜色感知。此外,我们可能根据上下文和评估者的不同对光真实性有不同的判断。例如,更真实的是前景物体真实而背景不真实,还是相反?所有这些因素共同使得在实际中生成高度逼真的场景相当困难。

资源与光真实性的权衡

预算、时间、技能和其他因素限制了生成的合成数据的照片级真实感。正如预期的那样,模拟由高多边形 3D 模型和多样化、逼真的动画组成的世界需要大量的计算资源。此外,采用高级和复杂的光渲染机制,如光线追踪和 PBR,进一步增加了对更多处理能力和资源的需求。“光线追踪”是一种渲染技术,可以模拟光的真实行为及其与场景元素的复杂交互。因此,在资源和照片级真实感之间始终存在权衡。

因此,对于您特定的实际问题,确定您所说的“照片级真实感”是什么非常重要。此外,您还需要仔细考虑您将部署哪些指标来评估生成的合成数据的质量和照片级真实感,同时考虑到可用的资源。

摘要

在本章中,您了解了促使研究人员努力在计算机视觉问题中生成的合成数据中实现高照片级真实感的主要原因。您了解了通常用于此目的的两个主要方法。然后,您探讨了用于评估生成的合成数据照片级真实感的知名定量和定性指标。最后,您检查了一些在实践中阻碍生成理想照片级真实感合成数据的问题。在下一章和最后一章中,我们将总结并结束本书。

第十七章:结论

在本章中,我们将总结我们在合成数据之旅中学到的所有内容。我们将再次强调基于真实数据的机器学习解决方案的主要问题。然后,我们将回顾基于合成数据的解决方案的好处、挑战和局限性。最后,我们将突出一些有趣的未来展望。

在本章中,我们将涵盖以下主要主题:

  • 真实数据及其问题

  • 合成数据作为解决方案

  • 现实世界案例研究

  • 挑战和局限性

  • 未来展望

真实数据及其问题

在本书的第一部分,我们学习了为什么机器学习模型需要大规模标注数据(第一章)。然后,我们深入分析了真实数据的主要问题,并彻底分析了标注过程的关键缺点(第二章)。之后,我们讨论并学习了为什么隐私阻碍了某些领域(如金融和医疗保健)的机器学习进步(第三章)。

合成数据作为解决方案

然后,我们将合成数据作为解决这些复杂问题和挑战的解决方案介绍(第四章和第五章)。在此之后,我们探讨了生成合成数据的各种知名方法(第三部分)。我们深入探讨了利用模拟器和游戏引擎生成合成数据(第六章)。然后,我们详细探讨了生成对抗网络(GANs)(第七章)。稍后,在我们探索一种新颖的合成数据生成方法时,我们发现了关于利用视频游戏作为合成数据来源的宝贵见解(第八章)。最后,我们广泛研究了扩散模型,并探讨了它们在合成数据生成中的多种应用(第九章)。

现实世界案例研究

我们通过提供计算机视觉(第十章)、自然语言处理(第十一章)和预测分析(第十二章)等不同领域的成功应用实例,讨论并展示了在现实场景中利用合成数据的有效性。然后,我们了解了一些限制合成数据可用性的知名领域特定问题,并揭示了在实践中有效利用合成数据的一些最佳实践(第十三章)。

挑战和局限性

为了确保你们了解通常阻碍合成数据有效利用的常见问题,我们全面研究了合成到真实域适应方法。我们深入研究了机器学习中的域差距问题,并了解了合成到真实域适应的主要方法(第十四章)。然后,我们学习了为什么在机器学习中多样化的数据至关重要,并发现了生成多样化合成数据集的主要策略。在此之后,我们强调了生成多样化合成数据的主要问题和挑战(第十五章)。之后,我们学习了为什么在计算机视觉中生成逼真数据至关重要。我们还了解了提高逼真度的主要方法,并讨论了必要的逼真度评估指标。然后,我们涵盖了在实践中生成逼真合成数据所面临的挑战和限制(第十六章)。

未来展望

我们一起探讨了合成数据的潜力。现在轮到你们在这个机器学习领域解锁新的机会和可能性了。我强烈鼓励你们加入合成数据社区,例如 Discord 上的 Mostly AI 合成数据社区(mostly.ai/synthetic-data-discord-community)和 AI 中合成数据的创建和使用开放社区(opensynthetics.com)。你们可以随时探索合成数据生成工具,如 Synthesized(www.synthesized.io)、Gretel.ai(gretel.ai)和 Neurolabs(www.neurolabs.ai)。

在未来,合成数据预计将更加多样化、更加真实、成本更低,并且更容易生成和利用。政府和决策者已经意识到合成数据巨大的优势。包括美国政府在内的许多政府都有明确的计划来推进隐私保护数据共享和分析PPDSA)方法(www.whitehouse.gov/wp-content/uploads/2023/03/National-Strategy-to-Advance-Privacy-Preserving-Data-Sharing-and-Analytics.pdf)。正如预期的那样,合成数据是这些解决方案的核心。因此,在不久的将来,将有更多的研究、关注和资金投入到合成数据领域。

摘要

在本章中,我们简要概述了本书涵盖的内容。首先,我们讨论了收集和标注大规模真实数据集的需求以及通常与之相关的主要问题。然后,我们看到合成数据提供了一个巧妙的解决方案,优雅地缓解了这些问题的多数部分。其次,我们掌握了生成多样化和真实合成数据的主要方法。第三,我们探讨了各种案例研究,并了解了基于合成数据的机器学习解决方案的主要问题和局限性。

实质上,你已经学会了如何克服真实数据问题以及如何提高你的机器学习模型性能。此外,你还掌握了仔细权衡每种合成数据生成方法优缺点的艺术。你同样也获得了在实践中更好地利用合成数据的最佳实践。

现在,随着我们接近使用合成数据学习机器学习的旅程的尾声,你已经具备了推动机器学习领域边界的技能和知识。你准备好将合成数据应用于自己的问题、研究和企业,在学术界、工业界、社会乃至更广阔的领域产生重大影响!

posted @ 2025-09-04 14:10  绝不原创的飞龙  阅读(14)  评论(0)    收藏  举报