什么是合成数据(Synthetic Data)?

关于合成数据您需要知道的一切

推出人工智能(AI)的企业在为其模型采集足够的数据方面会遇到一个主要障碍。对于许多用例来说,正确的数据根本不可用,或者获取数据非常困难且成本高昂。在创建AI模型时,数据缺失或不完整就无法满足需要,即使是大型科技公司在这方面也会难免失误。例如,研究人员在2018年发现,顶尖的面部识别软件可以很容易识别出白人男性的面孔,但在识别肤色较深的人时,错误率却高出34%。用于训练这些模型的数据在缺少一整个种群子集的代表。那么,在这种情况下,企业该何以应对?合成数据提供了一种令人信服的解决方案。 合成数据是通过计算机程序人工生成的数据,而不是由真实事件生成的数据。企业可以用合成数据来增强其训练数据,以填补所有潜在用例和边缘用例,节省数据采集费用,或满足隐私要求。随着计算能力的提高和云数据存储选项的崛起,合成数据比以往更容易获取。这无疑是一个积极的发展:合成数据推动了AI解决方案的开发,从而更好地为所有终端用户服务。  

为什么要使用合成数据?

假设您有一个AI问题需要解决,您不确定是否应该投资于合成数据,用以部分或完全满足您的数据需求。以下是合成数据非常适合您的项目的若干原因:

改进模型的可靠性

无需采集更多数据,即可为您的模型获取更为多样化的数据。有了合成数据,您可以用同一个人的不同发型、面部毛发、佩戴不同的眼镜、不同的头部姿势等来训练您的模型,还能以肤色、种族特征、骨骼结构、雀斑等特征创造出不同的面孔,使该模型变得更加可靠。

比“真实”数据获取更快

团队可以在短时间内生成大量的合成数据。当真实数据依赖于很少发生的事件时,这一点尤其有帮助。例如,当为自动驾驶汽车采集数据时,由于极端路况比较罕见,团队可能难以捕获到足够的真实数据。 此外,数据科学家还可以设置算法,在合成数据创建时自动进行标注,从而减少标注过程的耗时。

边缘案例的解读

机器学习算法更喜欢均衡的数据集。回忆我们的面部识别示例。如果这些企业创造出肤色较深的面孔合成数据来填补数据缺口,那么不仅模型的精确度会提高(事实上,这正是其中几家企业所做的),而且还会生成更符合道德标准的模型。合成数据帮助团队涵盖所有用例,包括数据不足或根本不存在的边缘用例。

保护用户的私人数据

根据行业和数据类型的不同,企业在处理敏感数据时可能会面临安全挑战。例如,在医疗行业,患者数据通常包括个人健康信息(PHI),需要满足较高的安全性要求才能使用。合成数据可以减轻对隐私问题的担忧,因为它不涉及真人的信息。如果您的团队需要满足某些数据隐私要求,可以考虑将合成数据作为备选。  

合成数据的应用场景

从业务角度来看,合成数据有许多应用:模型验证、模型训练、新产品测试数据等。一些行业已率先在机器学习中使用合成数据,我们将重点介绍其中的几个行业:

汽车

开发自动驾驶汽车的企业通常依靠模拟来测试性能。在某些条件下,例如极端天气的情况下,获取真实路况数据可能很困难或很危险。总体而言,在所有可能的驾驶体验中,有太多的变量需要考虑,所以不能依赖于在道路上使用真车进行现场测试。合成数据比人工采集数据更安全、更快捷。

医疗保健

由于数据的敏感性,医疗保健是采用合成数据的首选行业。团队可以利用合成数据捕获所有可能的患者类型的生理信息,最终帮助更快速、更准确地诊断疾病。其中一个生动的示例是Google的黑色素瘤检测模型,该模型使用肤色较深个体的合成数据(不幸的是,该领域的临床数据不足),使模型能够适用于所有皮肤类型。

安全

合成数据促进了组织安全性的提高。回到我们的面部识别示例,您可能听说过“深度伪造品(Deepfakes)”一词,它是指人工创建的图像或视频。企业可以创建深度伪造品来测试自己的安全系统和面部识别平台。 视频监控还利用合成数据以更低的成本和更快的速度训练模型。

数据可移植性

企业需要安全可靠的方法来与他人共享其训练数据。合成数据的另一个有趣的用例是在将数据集提供给其他人之前隐藏个人身份信息(PII)。这被称为隐私保护合成数据,可用于共享科学研究数据集、医学数据、社会学数据和可能包含PII的其他领域。  

如何创建合成数据

团队可使用机器学习技术以编程方式创建合成数据。通常情况下,他们将使用一组样本数据来创建合成数据;合成数据必须保留样本数据的统计属性。合成数据本身可以是二进制、数字或分类数据。它应该是随机生成的,具有任意长度,并且足够可靠能覆盖所需的用例。有几种生成合成数据的技术;最常见的技术如下所述:

从分布数据中提取

如果您没有真实数据,但了解数据集分布情况,则可以按分布生成合成数据。在此技术中,您将生成任意分布(正态分布、指数分布等)的随机样本以创建假数据。

将真实数据与分布数据拟合

如果您确实有真实数据,您可以使用蒙特卡罗方法等技术来找到数据的最佳拟合分布,并使用它生成合成数据。

深度学习

深度学习模型可以生成合成数据。例如:

  • 变分自编码器模型:这种无监督模型压缩初始数据集并将其发送至解码器,然后解码器输出该初始数据集的表示。
  • 生成对抗网络(GAN)模型:GAN模型由两个网络组成。生成器接收样本数据集并输出合成数据。鉴别器将合成数据与真实数据集进行比较,并迭代微调。

结合使用上述方法可能是最有益的,具体取决于您开始使用的真实数据量和您使用合成数据的目的。  

合成数据的未来

在过去的十年中,我们看到合成数据的使用速度大幅加快。虽然这为企业节省了时间和资金,但并非没有挑战。合成数据缺乏异常值,这些异常值自然出现在真实数据中,对于某些模型来说,异常值对于精确度至关重要。还需要注意的是,合成数据的质量通常取决于用于生成的输入数据;输入数据中存在的偏见很容易传播到合成数据中,因此不能低估使用高质量数据作为起点的重要性。最后,它需要额外的输出控制;也就是说,需要将合成数据与人工标注的真实数据进行比较,以确保不会出现不一致的情况。 尽管面临这些挑战,合成数据仍然是一个充满机遇、令人兴奋的领域。即使在无法获取真实数据的情况下,合成数据也能帮助我们生成创新的AI解决方案。最重要的是,合成数据能帮助企业创建更具包容性、更能代表终端用户多样性的产品。 来自澳鹏数据科学总监的专业洞察 请记住,合成数据是一种数据增强技术,它不能取代数据采集和标注。必须要认识到,如果没有任何真实数据,就无法创建在现实世界中运行出色的模型。您可能会涵盖大部分情况,但会出现许多模型将失效的边缘情况(例如,对于我们的人脸识别案例,可能会有一些罕见的光照条件、罕见的面部特征、整形手术等情况,您可能从未考虑过——如果您仅从合成数据开始,无论这些人脸有多么逼真,您都不会知道这些情况)。 除此之外,在创建和使用合成数据时,还需要注意以下几点:

  1. 了解模型的可靠性要求,以定义所需的合成数据:甚至在开始生成合成数据之前,您就希望弄清楚模型真正需要什么,并为需要合成数据类型创建一组功能需求。构建与已有数据类似的合成数据对于模型毫无用处。相反,您可能希望通过数据增强改善多样性(例如,人脸识别用例中具有不同面部特征的人脸)和变化(例如,同一人的轻微偏差)。您可能需要考虑一些罕见或边缘的情况,并在生成合成数据时优先考虑这些情况。另一种方法是从现实世界训练、验证和测试数据集预测的误报和漏报中得出合成数据的需求,以减少这些情况的发生。
  2. 了解合成数据可以为您的数据集和模型做什么,不能做什么:数据增强大大提高了模型的精确度,但并不会使模型达到完美。由于我们的合成数据分布接近我们知道的真实数据,因此它无法神奇地有效理解现实世界中产生的任何显著不同的数据,也无法创建训练数据无法引导它生成的预测或结果。我们还要考虑数据的来源和条件(例如,在ThisPersonDoesNotExist.com上生成的人脸是根据个人资料头像生成的。当天空阴云密布、房间光线很暗时,这些都无法帮助您的模型识别室内的图像)。
  3. 了解您可以使用的各种合成数据工具以及即将推出的工具:合成数据的常见方法是从现实世界克隆部分数据并叠加到另一个真实数据上,或者使用Unity或某些3D环境生成逼真的数据。但由于GAN和VAE技术的变化,这一领域正在快速发展。与其创建全新的数据,不如通过在真实数据基础上合成一些新组件(例如,在真实人脸上添加雀斑、改变阴影角度等)来创建现实世界数据的变体。另一个例子是,可以优化叠加的数据,使其更真实。还有许多其他工具可以使用,不过您需要首先了解它们。
  4. 数据的版本管理:当随着合成数据的生成,生成更好合成数据的能力也会增强。您上个月生成的图像现在可能会被更新版本的图像淘汰,后者看起来会更逼真(例如,您发现一种用于面部的更好的皮肤纹理,新的GPU可帮助您从光线跟踪中获得更细致的效果等)。您不会想用这些旧版本图像训练旧模型。版本管理将帮助您了解用新数据替换了哪些数据,并在您添加不同的合成数据或更新旧数据时验证模型的改进。

总之,您的合成数据可以提高模型在现实世界中的性能。您采取的任何方法或生成的数据都必须使您的模型更可靠,并有助于改善其性能。根据模型的不足之处明确定义模型的需求,将能帮助您集中精力选择合适的工具并生成正确的数据。  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/82182.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

葡萄目标检测(yolov8模型,无需修改路径,python代码,解压缩后直接运行)

运行效果视频:葡萄目标检测(yolov8模型,无需修改路径,python代码,解压缩后直接运行)_哔哩哔哩_bilibili 1.采用yolov8模型 models文件夹保存的是yolov8的训练好的模型参数 PinotNoir文件夹存放的是训练集 …

Flink学习笔记(一)

流处理 批处理应用于有界数据流的处理,流处理则应用于无界数据流的处理。 有界数据流:输入数据有明确的开始和结束。 无界数据流:输入数据没有明确的开始和结束,或者说数据是无限的,数据通常会随着时间变化而更新。 在…

透过源码理解Flutter中widget、state和element的关系

1、framework源码组成 Flutter中widget、state、element的源码位于framework.dart中,整个文件6693行(版本Flutter 3.12.0-14.0.pre.28)。整个代码可划分为若干部分,主要包括key、widget、state、element四部分。 1.1 key 关于key的代码65行到272行&am…

8.3.tensorRT高级(3)封装系列-tensor封装,索引计算,内存标记及自动复制

目录 前言1. Tensor封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-tensor封装,索引计算&a…

【Spring系列篇--关于IOC的详解】

目录 面试经典题目: 1. 什么是spring?你对Spring的理解?简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 2.什么是IoC?你对IoC的理解?IoC的重要性?将实例化对象的权利从程序员…

echart 3d立体颜色渐变柱状图

如果可以实现记得点赞分享,谢谢老铁~ 1.需求描述 根据业务需求将不同的法律法规,展示不同的3d立体渐变柱状图。 2.先看下效果图 3. 确定三面的颜色,这里我是自定义的颜色 // 右面生成颜色const rightColorArr ref(["#79D…

自动驾驶仿真:基于Carsim开发的加速度请求模型

文章目录 前言一、加速度输出变量问题澄清二、配置Carsim动力学模型三、配置Carsim驾驶员模型四、添加VS Command代码五、Run Control联合仿真六、加速度模型效果验证 前言 1、自动驾驶行业中,算法端对于纵向控制的功能预留接口基本都是加速度,我们需要…

git环境超详细配置说明

一,简介 在git工具安装完成之后,需要设置一下常用的配置,如邮箱,缩写,以及git commit模板等等。本文就来详细介绍些各个配置如何操作,供参考。 二,配置步骤 2.1 查看当前git的配置 git conf…

解决ios隔空播放音频到macos没有声音的问题

解决ios隔空播放音频到macos没有声音的问题 一、检查隔空播放支持设备和系统要求二、打开隔空播放接收器三、重置MAC控制中心进程END 一、检查隔空播放支持设备和系统要求 Mac、iPhone、iPad 和 Apple Watch 上“连续互通”的系统要求 二、打开隔空播放接收器 ps;我设备是同一…

基于web的停车场收费管理系统/基于springboot的停车场管理系统

摘 要 随着汽车工业的迅猛发展,我国汽车拥有量急剧增加。停车场作为交通设施的组成部分,随着交通运输的繁忙和不断发展,人们对其管理的要求也不断提高,都希望管理能够达到方便、快捷以及安全的效果。停车场的规模各不相同,对其进行管理的模…

剪枝基础与实战(3): 模型剪枝和稀疏化训练流程

Model Pruning 相关论文:Learning Efficient Convolutional Networks through Network Slimming (ICCV 2017) 考虑一个问题,深度学习模型里面的卷积层出来之后的特征有非常多,这里面会不会存在一些没有价值的特征及其相关的连接?又如何去判断一个特征及其连接是否有价值? …

redis实战-缓存数据解决缓存与数据库数据一致性

缓存的定义 缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。防止过高的数据访问猛冲系统,导致其操作线程无法及时处理信息而瘫痪,这在实际开发中对企业讲,对产品口碑,用户评价都是致命的;所以企业非常重视缓存…

【汇编语言】使用DS和[address]实现字的传送

文章目录 要解决的问题:CPU从内存单元中读取数据字的传送 要解决的问题:CPU从内存单元中读取数据 1、要求:CPU要读取一个内存单元时,必须先给出这个内存单元的地址; 2、原理:8086设备中,内存地…

LeetCode--HOT100题(35)

目录 题目描述:23. 合并 K 个升序链表(困难)题目接口解题思路1代码解题思路2代码 PS: 题目描述:23. 合并 K 个升序链表(困难) 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合…

git压缩/合并多次commit提交为1次commit提交

git压缩/合并N次commit提交为1次commit提交 假设有最近3次提交: commit_id1 commit_id2 commit_id3目标是把以上3次commit合并成1个commit,注意,最新的commit提交在最上面。 在git bash里面的操作步骤: (1&#xff0…

【周末闲谈】关于“数据库”你又知道多少?

个人主页:【😊个人主页】 系列专栏:【❤️周末闲谈】 系列目录 ✨第一周 二进制VS三进制 ✨第二周 文心一言,模仿还是超越? ✨第二周 畅想AR 文章目录 系列目录前言数据库数据库的五大特点数据库介绍数据库管理系统&a…

Oracle故障案例之-19C时区补丁DSTV38更新

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!😜&#x1f61…

《TCP IP网络编程》第二十四章

第 24 章 制作 HTTP 服务器端 24.1 HTTP 概要 本章将编写 HTTP(HyperText Transfer Protocol,超文本传输协议)服务器端,即 Web 服务器端。 理解 Web 服务器端: web服务器端就是要基于 HTTP 协议,将网页对…

2023国赛数学建模E题思路模型代码 高教社杯

本次比赛我们将会全程更新思路模型及代码,大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 API 介绍

文章目录 一、RKNN 初始化及对象释放二、RKNN 模型配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN-Toolkit2 API 详细说明。 一、RKNN 初始化及对象释放 在使用 RKNN Toolkit2 的所有 API 接口时,都需要先调用 RKNN()方法初始化 RKNN 对象,…