数据增强策略

wen IT资讯 27

本文目录导读:

数据增强策略

  1. 图像数据增强(最成熟、最常用)
  2. 文本数据增强(NLP)
  3. 音频数据增强(语音/声学)
  4. 表格数据增强(结构化数据)
  5. 时间序列数据增强
  6. 核心原则与建议

数据增强(Data Augmentation)是一种在训练数据有限的情况下,通过对原始数据进行微小变换来生成更多、更多样化训练样本的技术,它能有效提高模型的泛化能力,防止过拟合。

数据增强策略的选择高度依赖于数据类型(图像、文本、音频、表格)和具体任务(分类、检测、生成、时间序列预测)。

以下按不同数据类型介绍主流的增强策略:

图像数据增强(最成熟、最常用)

基础几何变换

这些是最简单、最有效的操作,通常结合使用。

  • 随机翻转:水平翻转(常用)、垂直翻转(适用于非对称场景如文字识别)。
  • 随机旋转:小角度旋转(如±15°),防止边缘信息丢失。
  • 随机裁剪与缩放(Random Resized Crop):从图像中随机裁剪一块,再缩放到原始尺寸,这是最核心的增强之一。
  • 随机平移:沿X轴或Y轴平移图像。
  • 随机错切(Shear):使图像沿一个轴倾斜。

颜色与光学变换

模拟不同的光照和成像条件。

  • 亮度、对比度、饱和度、色调调整:随机调整HSV或RGB通道的值。
  • 灰度化:将彩色图转为灰度图,迫使模型学习形状而非颜色。
  • 高斯噪声:模拟传感器噪声,增强鲁棒性。
  • 模糊:高斯模糊、均值模糊。
  • JPEG压缩伪影:降低图像质量模拟传输损耗。

高级/混合增强

  • Cutout / Random Erasing:随机擦除图像中的一个矩形区域(填充灰色或噪声),迫使模型关注全局特征而非局部。
  • Mixup:将两张图像按比例混合(像素叠加、标签线性混合),公式:new_img = λ * img1 + (1-λ) * img2
  • CutMix:裁剪一张图像的一部分,粘贴到另一张图像上,标签也按面积比例混合。
  • GridMask:规则网格式删除部分区域。

自动化增强(AutoAugment家族)

使用搜索算法(强化学习、遗传算法)找到针对特定数据集的最佳增强策略组合。

  • AutoAugment:Google提出的搜索方法。
  • RandAugment:简化版,随机选择N个增强操作并应用幅度M。
  • TrivialAugment:更简单的单次随机增强。

特定场景增强

  • 医学图像:弹性变换、模拟运动伪影、对比度拉伸。
  • 卫星/遥感:多光谱混合、条带噪声模拟、地理扭曲。
  • 文档OCR:透视畸变、笔画粗细变化、背景纹理模拟。

图像增强库推荐

  • torchvision.transforms:PyTorch内置,基础功能。
  • Albumentations:速度极快,支持80+种增强,适合深度学习。
  • imgaug:功能丰富,支持顺序增强。
  • Kornia:基于PyTorch的可微分增强,支持GPU加速。

文本数据增强(NLP)

文本增强比图像难得多,因为必须保持语义和语法正确。

词汇级别

  • 同义词替换:随机选择单词,替换为WordNet或预训练词向量中的近义词。
  • 随机插入:在句子中随机位置插入同义词。
  • 随机交换:随机交换句中两个单词的位置。
  • 随机删除:以一定概率删除单词。

句子级别

  • 回译(Back Translation):将原句翻译成中间语言(如法语),再翻译回原语言,能生成语义相似但表述不同的句子。
  • 语法结构切换:主动->被动语态,否定句转换等。

模型驱动的增强

  • BART / T5 / GPT 生成:使用预训练模型生成语义相似但改写过的句子。
  • 对抗性扰动:在词嵌入向量中加入小噪声。

数据拼接

  • Mixup for NLP:将两个句子的词嵌入向量按比例混合。

增强库推荐

  • nlpaug:支持同义词、回译、TF-IDF替换等。
  • TextAttack:不仅有增强,还支持对抗攻击。

音频数据增强(语音/声学)

信号级别

  • 加性噪声:混合环境噪声(咖啡厅、街道、风声),音源分离任务常见。
  • 时间拉伸:改变播放速度但保持音调不变。
  • 音调偏移:改变音调高低。
  • 时间/频率遮蔽(SpecAugment):在语谱图上随机遮蔽一段频率或时间,这是语音识别最有效的增强。

环境模拟

  • 混响:模拟房间回音。
  • 卷积分:使用房间冲击响应(RIR)模拟不同的录音空间。

表格数据增强(结构化数据)

表格数据的增强难度较高,因为特征之间有依赖关系。

简单扰动

  • 高斯噪声加性:对数值特征加入小噪声(如标准差的5%)。
  • SMOTE:在少数类样本之间插值生成新样本,解决类别不平衡。
  • 缺失值模拟:随机将某些值设为NaN,模拟数据缺失。

生成式方法

  • CTGAN / TVAE:使用生成对抗网络或变分自编码器学习数据分布并生成新样本。
  • Easy Data Augmentation (EDA for tabular):将文本增强思路迁移到表格(交换、删除行等)。

时间序列数据增强

变换

  • 缩放:全局缩放或窗口缩放。
  • 时间扭曲:局部拉伸或压缩时间轴,模拟节奏变化。
  • 排列:在固定窗口内打乱子序列(保持全局趋势不变)。

频域

  • 频率屏蔽:在傅里叶变换后屏蔽某些频率分量,再逆变换回来。
  • 季节性与趋势分解:对残差项加入噪声。

核心原则与建议

  1. 测试集真实性:增强策略必须模拟测试时可能遇到的真实情况,人脸识别不需要垂直翻转(人不会倒立);手写数字识别需要大量旋转和扭曲。
  2. 不要破坏语义:图像分类中,将目标物上半部分裁掉可能没问题;但在细粒度分类(如鸟的品种)中,切掉鸟嘴就是灾难。
  3. 力度控制:增强幅度过大会导致模型学到伪造模式。
  4. 与数据量匹配
    • 小数据(<1k):强增强+预训练+混合增强(Mixup/CutMix)+外部预训练权重。
    • 中等数据(1k-1M):标准增强(翻转+颜色+裁剪)+RandAugment。
    • 大数据(>1M):弱增强(仅随机裁剪+水平翻转)或无需增强。
  5. 在线 vs 离线
    • 在线:训练时实时生成,每次epoch生成不同数据,适合大数据(推荐)。
    • 离线:先扩增数据集再训练,适合避免重复计算或特定缓存需求。

总结建议:

  • 图像:首推 RandomResizedCrop + RandomHorizontalFlip + ColorJitter + AutoAugment/RandAugment
  • 文本:首推 回译 + 同义词替换
  • 音频:首推 SpecAugment加性噪声
  • 通用:从 轻量增强 开始,验证集性能提升再逐步加量;使用增强库的 Pipeline 管理。

上一篇元平衡训练

下一篇AutoAugment

抱歉,评论功能暂时关闭!