数据增强:提高 ML 性能的策略

2025年6月26日 | 阅读17分钟

机器学习模型在拥有足够多的训练数据时,能够完成令人惊叹的工作。然而,对于许多应用来说,获取可靠的数据是一个挑战。一个解决方案是数据增强,它通过组合现有样本来创建新的训练模型。数据增强是一种经济高效且有效的方法,可以在数据有限的环境中提高基于模型的学习的效率和准确性。

如果基于模型的机器学习只用少数样本进行训练,它们可能会过拟合。过拟合发生在机器学习模型在训练样本上表现准确,但在应用于未见过的数据时却失败了。有多种方法可以防止机器学习中的过拟合,例如使用不同的算法、改变模型的架构或改变超参数。然而,解决过拟合最有效的方法是向数据中添加更高质量的数据。但是收集额外的训练实例可能成本高昂或耗时。有时,这是不可能的。当使用监督学习程序时,这种情况会变得更具挑战性,因为训练样本需要由领域专家进行标记。

增强训练数据多样性的一种方法是复制现有数据,然后对原始数据进行微小更改。这被称为数据增强。例如,假设我们的分类数据集中有二十张鸭子照片。通过翻转鸭子照片的垂直方向来复制它们,我们将“鸭子”类别的训练样本数量加倍。还可以使用其他变换,如裁剪、缩放、平移和旋转。还可以组合这些变换来增加我们独特的训练样本库。

数据增强不一定局限于几何形状的操作。添加噪声、更改颜色设置或添加模糊和锐化滤镜等其他效果可能有助于将旧的训练模型重新用作新数据。数据增强对于监督学习尤其有利,因为它已经有了标签,无需花费额外时间来标记新样本。数据增强对于使用机器学习算法的不同类别也有益,例如无监督学习、对比学习和生成模型。

数据增强已成为计算机视觉领域开发机器学习模型的一种公认方法。最流行的深度学习和机器学习编程库都提供易于使用的功能,可以将数据增强集成到机器学习训练流程中。数据增强不仅限于图像,还可以应用于不同类型的数据。对于文本数据,动词和名词可以替换为同义词。在音频文件中,可以通过添加噪声或改变播放速度来修改训练样本。

数据增强并非解决我们所有数据相关问题的灵丹妙药。它可以被视为使用机器学习提高模型性能的一种方式。基于我们所针对的应用,仍然需要一个包含足够实例的大型训练数据集。在某些情况下,训练数据可能太小,以至于数据增强无法从中受益。在这些情况下,有必要收集更多数据,直到达到可接受的阈值,然后再使用数据增强。有时,我们可以使用迁移学习,即我们在通用数据集上开发一个机器学习模型,并通过微调其顶层以适应目标应用中的可用数据来重新利用它。

数据增强也不能解决其他问题,例如训练数据中的偏差。数据增强需要进行调整来处理其他问题,例如类别不平衡。

数据增强的类型

图像数据增强

  • 图像数据增强是通过对人工生成的图像进行变换来人工增加训练集的大小和多样性的方法。典型的几何操作包括旋转、翻转、缩放、裁剪和平移。更常见的是使用颜色空间变换、亮度变化、对比度调整、饱和度或色调调整等。单独的增强通过向模型展示不同的视角和条件来帮助模型更好地泛化,从而最小化过拟合。可以使用更复杂的技术,例如随机擦除、融合图像和添加噪声。在某些应用(如计算机视觉)中,当获取大量标记数据的成本很高或不可行时,图像增强非常重要。

文本数据增强

  • 文本数据增强方法试图为基于文本的训练数据添加非语义上有意义的数量和多样性。一些流行技术是同义词替换,即将短语替换为其同义词以形成新短语;回译,即将文本翻译到新语言然后返回以形成释义;以及非必需词的放置或排除。涉及词嵌入的替换和随机词或字符交换也是实现此目的的其他方式。文本数据对结构和含义敏感,因此此类增强必须足够谨慎以保持连贯性。这些增强功能可以通过 NLP Aug 等库实现,并可以直接应用于自然语言处理,在这些应用中它们非常有用,例如情感分析或语言建模。

音频数据增强

  • 在训练数据集以改进语音识别或音乐分类以及其他音频相关应用时,会使用音频数据增强来修改现有示例。技术包括添加背景噪声、改变语速或音调、时间拉伸以及随机改变音量。另一种是音频剪辑混合或模拟混响。这些技术增强了模型对声学条件和说话人差异变化的抵抗力。谨慎的添加要注意确保添加的音频听起来不陌生并且包含所有必要的特征。Audiomentations 和 TorchAudio 库是便于高效执行此类转换的库,可用于在音频使用的各种实际情况中取得进展。

表格数据增强

  • 表格数据增强处理列和行中的数据。方法包括向实数添加噪声和生成合成样本(例如,使用 SMOTE(合成少数类过采样技术)等算法)、过采样和打乱特征。分类特征可能会发生随机选择或分组(特别是随机替换或分组)。表格增强的目标是类别平衡、过拟合最小化和模型泛化能力,尤其是在处理不平衡数据时。与非结构化数据相反,表格数据需要特殊处理,因为增强可能会破坏数据完整性以及与特征的关系。一些工具,如 SDV(Synthetic Data Vault),专注于创建逼真的合成表格数据。

合成数据生成

  • 合成数据生成利用现有数据的统计性质生成绝对新颖的数据样本。方法包括生成对抗网络 (GAN)、变分自编码器 (VAE) 和基于模拟的技术。合成信息可以在存在隐私问题或实际数据很少的领域补充数据。该方法具有很大的灵活性,可以根据特定情况或条件生成数据。尽管合成数据非常强大,但必须对其进行彻底验证,并且不得引入偏差或影响模型结果的伪影。它在计算机视觉、医疗保健和自动驾驶汽车中变得越来越普遍,以获得训练的多样性和鲁棒性。

实际应用和用例

计算机视觉和图像识别

  • 计算机视觉在很大程度上依赖于数据增强来提高模型的鲁棒性和图像识别模型的性能。旋转、翻转、缩放和颜色调整使用类似的技术,可以在无需额外数据收集的情况下提供不同的训练示例。这在物体检测、人脸识别和医学成像等过程中起着至关重要的作用,在这些过程中,多视角和光照条件可能会影响准确性。模型增强能够更好地泛化到训练课程中未包含的图像,消除过拟合并平衡数据集中类别的大量分布,尤其是在数据不均衡的情况下。它在自动驾驶、监控和零售领域得到了广泛应用,以提高视觉智能。

NLP 自然语言处理 (NLP)

  • 在 NLP 领域,数据增强专注于通过现成的释义或合成地操纵句子来缓解标记文本数据不足的问题。用例包括情感分析、聊天机器人和机器翻译。诸如同义词替换、回译和上下文增强之类的方法可以改进训练集,从而产生更鲁棒和准确的模型。例如,聊天机器人会使用不同的措辞变体来理解各种措辞的用户意图。增强的好处在于它可以消除过拟合并提高对嘈杂或非正式语言的抵抗力,这在实际应用中(例如呼叫中心和内容审核)使用 NLP 时非常重要。

音频处理和语音识别

  • 音频数据增强在训练可靠的语音和音频分类器方面发挥着重要作用。音调变化、添加噪声或时间拉伸等有效措施可以增强系统对各种口音、背景声音和语速的适应性。这可以提高语音助手、自动转录服务和智能家居中的转录准确性。增强使模型能够跨各种声学条件和说话人变化进行泛化,而无需以成本效益高且规模宏大的方式在现实世界中衡量数据。

医学影像和医疗保健

  • 由于医学影像的标注样本很少且隐私法规不允许数据共享,因此数据增强在医疗保健领域变得至关重要。诸如图像变换和使用合成数据等训练方法可以训练深度学习在识别疾病、检测肿瘤和分割器官方面的能力。增强通过模拟不同患者的解剖结构和成像,可以提高模型的泛化能力。

自动驾驶汽车 (AV) 和机器人

  • 通过应用变换和/或模拟场景来增强相机和 LiDAR 收集的数据,可以训练感知模型来识别各种天气、光照和交通条件下的物体、行人和路标。这比收集大量实际道路数据要安全可靠得多,因为模型已经为在现实世界中运行做好了准备。数据增强还有一个好处,就是可以加速该模型的主动学习部分,从而降低了物理数据收集的成本。

欺诈检测和金融服务

  • 数据增强可用于金融服务中的欺诈检测和风险评估模型,其中欺诈账户的数量相对于合法账户的数量很少。诸如 SMOTE 等合成数据生成技术会合成看起来真实的少数类样本来平衡数据集。这可以防止模型偏向多数类,从而提高检测的准确性。通过多样化训练数据,增强可以用于合规性分析、信用评分和异常检测,从而在关键金融应用中实现更可靠的预测分析。

数据增强的常用方法

几何变换

  • 图像变换是增强照片数据的常用方法,它们在不改变图像语义元素的情况下改变图像的空间方面。典型的变换类型包括旋转、平移(移动)、缩放(放大/缩小)、翻转(水平或垂直)和裁剪。它们使模型能够泛化到现实世界的变异,因为这些操作模拟了对物体在不同方向上的不同视角和观察;物体可能以各种方向出现。几何变换通过人工增加训练图像的多样性来减少过拟合并增强模型的鲁棒性。这些技术易于部署且非常有效,因此构成了计算机视觉应用(如物体识别和图像分类)的基础。

噪声注入

  • 噪声注入通过在训练过程中向数据样本添加随机噪声来提高模型鲁棒性。这可以是高斯噪声、椒盐噪声或散斑噪声(Speckle noise),用于模拟图像中的缺陷或传感器错误。在音频数据中,可以添加背景噪声或意外失真。同样,文本中的微小变化,如拼写错误或同义词替换,在文本中也能起到类似作用。噪声会促使模型利用更通用的特征,这些特征对输入的微小变化不变,从而更好地处理嘈杂的现实生活数据。然而,噪声的使用要谨慎,以免损坏信号或语义。

人工数据生成

  • 生成合成数据会生成与可用数据的分布和特征完全不同的新样本。诸如生成对抗网络 (GAN) 和变分自编码器 (VAE) 之类的方法可以学习复杂的特征分布并获得逼真的人工数据点。这种实践可以解决数据短缺、隐私和类别不平衡的问题。合成数据可以模拟不常见或难以收集的情况,并用于创建丰富的训练数据集,以用于计算机视觉、NLP 和表格应用。尽管它很强大,但仍需要进行验证,以确保合成数据的质量与真实数据相当,从而消除任何偏差或噪声。

文本回译和释义.

  • 回译是一种常用的文本数据增强方法,它涉及将整个句子翻译成另一种语言,然后再翻译回原始语言。这种技术可以产生释义,同时保持原意,从而扩大了训练数据的语言多样性。其他释义技术包括同义词替换以及随机插入或删除单词。这些方法使 NLP 算法能够适应异构词、俚语和语法变体,平均而言,能够更好地泛化到所有实际使用的文本输入。当谨慎使用增强后的句子时,它们将具有语义上的合理性和语法上的准确性。

数据增强的工具和库

图像增强库

  • Albumentations 是一个快速、灵活的 Python 库,常用于图像增强。它提供了广泛的增强协议,包括裁剪、旋转、缩放、颜色调整和添加噪声。Albumentations 以其简洁的 API、良好的性能以及与最著名的深度学习库和框架(如 PyTorch 和 TensorFlow)的简单集成而著称。它还支持更复杂的增强,例如 mixups,并允许在支持指定功能的流水线中组合多个增强。由于通过增加图像的变异性来覆盖训练数据集,从而提高了模型的泛化能力,Albumentations 已成为计算机视觉领域最受欢迎的选择之一。

NLPAug 自然语言处理增强

  • NLPAug 是一个全面的 Python 库,可用于自然语言处理 (NLP) 应用的文本数据增强。它提供了各种增强过程,例如同义词替换、随机插入、删除、回译和上下文词嵌入。这种灵活性可以提高 NLP 模型的鲁棒性和泛化能力,因为它们提供了不同的训练样本,而不会削弱语义含义。NLPAug 还支持与流行的深度学习框架集成,并提供文本、语音和音频数据的增强。它功能强大且方便,是处理基于文本增强的研究人员和开发人员的另一个工具。

Augmentations - 音频数据增强

  • Augmentations 是一个 Python 库,专注于音频数据增强,提供用于处理音频样本数据的工具,以用于语音识别和音频分类应用。它包含背景声音添加、音高、周期、裁剪和音量改变等增强功能。Augmentations 设计得效率高,并且能够无缝集成到 PyTorch 等音频流水线和框架中。该库还可以创建自定义增强列表,以帮助模型在各种声学条件下进行测试,从而提高模型的鲁棒性。Audiomentations 需要更加谨慎地解决对不断变化的环境的抵抗力问题,从而使音频 AI 系统更有效。

Imgaug - 灵活的图像增强

  • 另一个很棒的 Python 库是 Imgaug,它具有最广泛的功能,可用于机器学习应用的图像增强。它支持几何变换、颜色空间增强、模糊、噪声注入以及更复杂的变换,例如超像素分割和弹性变形。Imgaug 被誉为最全面、用途最广的图像增强库之一,可以通过精细控制参数来指定增强序列。它还可以与 NumPy 一起使用,并与各种机器学习框架集成,便于在训练过程中使用。Imgaug 通过允许图像数据具有更大的变异性,来通过数据增强实现跨现实世界变异的模型的泛化。

表格数据增强 - Synthetic Data Vault (SDV)

  • Synthetic Data Vault (SDV) 是一个处理合成表格数据生成的 Python 包。它基于高保真机器学习模型,学习原始数据集的统计特性,并生成逼真的合成样本。SDV 还兼容不同类型的数据,因此可用于增强金融、医疗保健和市场营销等领域的结构复杂数据。SDV 通过增加可用数据量和解决类别不平衡问题,来补充机器学习模型的性能和隐私保护。它提供了评估工具,以确保合成数据的可用性和适用性。

实时应用公司

Google:大胆的愿景和语音建模

  • Google 广泛对其 AI 解决方案进行数据增强,尤其是在计算机视觉和语音识别领域。几何变换、颜色修改和合成数据提高了模型的准确性,并增强了模型对图像变异的鲁棒响应,例如在 Google Photos 和 Google Lens 等基于图像的任务中。所使用的音频增强方法包括添加音频噪声和改变音高,以适应 Google Assistant 等语音识别服务中的不同口音和环境。Google 的数据增强应用实现了可靠的产品可扩展性和增强的全球用户体验。

NVIDIA:赋能复合技术,推动自动驾驶汽车发展

  • NVIDIA 利用数据增强来训练用于自动驾驶汽车技术的神经网络。其平台创建人工传感器输出,例如摄像头图像和 LiDAR 扫描,模拟各种驾驶环境,例如天气、光照和道路变化。这种增强补充了真实世界的训练数据,从而提高了模型的检测能力,并使其能够在恶劣情况下做出导航决策。增强和合成信息最小化了实际信息收集和数据的成本,并比生产版本更快地开发出更安全的自动驾驶系统。

Facebook (Meta):增强内容发现

  • Facebook 在其内容审核、推荐和增强现实系统中使用数据增强。在计算机视觉领域,图像增强技术能够分割不当内容并增强用户生成照片中的物体识别能力。对于文本数据,Facebook 依赖回译和释义来增强训练数据集,以训练语言理解模型,从而驱动聊天机器人和内容翻译。增强功能有助于 Facebook 的 AI 处理海量、多样化且无误的数据,并维护用户在全球平台上的安全和参与度。

Tesla:自动驾驶:训练神经网络

  • Tesla 在自动驾驶和全自动驾驶神经网络训练中深度应用数据增强。数据增强能够重现摄像头和雷达数据中存在的各种环境因素,如雨、雾、夜间和传感器噪声,以增强物体检测和决策算法。Tesla 可以利用这些丰富的数据,使其模型能够泛化到原始数据中表示不足的低概率或困难场景。通过数据增强,Tesla 提高了数百万辆汽车中实现的自动驾驶功能的安全性、稳定性和可信度。

Amazon:增强 Alexa 和电子商务推荐

  • Amazon 在任何类型的 AI 相关服务中都使用数据增强,例如 Alexa 语音助手及其产品推荐引擎。对于 Alexa,音频增强技术有助于提高对不同语音和噪声条件的识别率。在电子商务领域,用户行为增强和合成数据有助于改进推荐建模,优化提供的产品以及客户满意度。通过不断丰富和增强数据,Amazon 确保其系统能够继续为全球数百万用户提供准确且高性能的服务。

常见问题解答

什么是数据增强机器学习?

  • 数据增强是指通过对现有数据样本进行一系列变换来重复和扩展训练集。该方法通过向机器学习模型呈现广泛的示例来帮助提高其性能,从而最小化过拟合并限制泛化。根据数据类型,常见的增强技术包括图像变换(在视觉任务中为图像旋转)、文本的同义词替换等。在无法获取或获取更多真实世界数据的成本过高的情况下,数据增强可能特别有用。

数据增强的重要性是什么?

  • 数据增强很重要,因为它人为地增加了数据集的大小,使模型能够处理更多的示例。它能够更好地泛化到未见过的数据,并防止由于数据集过少或有偏见而导致的过拟合。它还可以使模型更能抵抗实际应用中遇到的噪声和波动,从而提高准确性和可靠性。人工智能增强可用于计算机视觉、自然语言处理和语音识别等应用,从而在标记数据有限的情况下创建高性能模型。

一些常见的图像数据增强方法有哪些?

  • 几何增强:标准图像增强方法包括旋转、翻转、裁剪、缩放和平移。还有一些颜色调整,如提高亮度、对比度、饱和度调整和噪声注入。更先进的技术包括 mixup、cutout 和弹性扭曲。这些增强方法会产生图像的不同变体,并使模型能够轻松地在各种条件下和多个角度正确识别物体。这些方法相对简单但功能强大,在计算机视觉任务中很受欢迎。

是否可以将数据增强应用于文本?

  • 是的,可以通过执行诸如单词同义词替换、单词删除或插入、回译(翻译到另一种语言然后返回)和释义等操作来对文本数据进行数据增强。这些方法可以增加语言的多样性,并使 NLP 模型能够泛化到更广泛的书写风格、单词和句子结构。文本增强应保持原始文本的语义特性,同时又不至于混淆模型。当标记文本的数据集很小或有偏见时,这一点尤其有用。

数据增强对模型有什么影响?

  • 通常,数据增强通过最小化过拟合来提高模型的性能,并能更好地将模型泛化到新数据。在更多样化的示例上进行训练可以使模型学习到更鲁棒的特征表示,这些表示可以更好地应对现实世界中的噪声和广泛的输入。然而,如果增强的样本质量差或不现实,可能会对性能产生负面影响。因此,应仔细选择和调整增强技术,以在数据多样性和质量之间取得平衡。

用于进行数据增强的库或工具有哪些?

  • 一些最受欢迎的库实现了对各种数据类型的数据增强。在图像方面,Albumentations 和 image 提供了广泛的转换功能。在文本方面,NLPAug 和 TextAttack 等库实现了语言增强方法。Augmentations 专注于音频增强。在表格方面,Synthetic Data Vault (SDV) 允许创建合成数据。这些实用程序自动化了增强流水线,适合机器学习框架的服务,并允许研究人员和开发人员有效地增强数据集的多样性。

数据增强是否适用于所有类型的数据?

  • 数据增强的方法最有可能应用于图像、文本和音频数据,但也可以为表格数据手工制作。方法取决于数据类型;例如,图像可以使用空间变换,文本可以使用释义,表格数据可以使用合成采样方法。虽然增强可以广泛应用,但必须明确构建,以保留数据的完整性和实质性,从而消除对模型的混淆。因此,需要针对特定领域制定策略,以促进数据增强。

数据增强能否替代收集更多真实数据?

  • 尽管数据增强有助于个人抵消对海量数据的需求,但与仅仅增加真实数据的高质量和多样性相比,它可能并不完全足够。通过增强,会产生现有信息的不同版本,但不会引入根本上的新信息。因此,对于复杂任务或新领域,通过数据增强扩展数据,并结合不断收集真实数据,通常会带来最佳的模型性能和可靠性。