第3章 数据增强总览:分类与策略

数据增强这个事儿,说白了就是给模型「喂」更多样化的数据。我刚开始做多模态项目时,总觉得数据不够就多采点呗,后来发现——采集成本高得吓人,而且很多场景根本采不到。这时候,数据增强就成了性价比最高的选择。

这一章咱们把数据增强的「家底」翻一翻。我会从两个维度来拆解:一是按学习范式分(有监督、自监督、无监督),二是按执行时机分(在线增强、离线增强)。这两个维度搞清楚了,后面选策略时就不会抓瞎。

3.1 按学习范式分类

为什么先按学习范式分?因为不同的训练方式,对增强的需求完全不同。我踩过这个坑——在自监督任务里用了大量有监督的增强策略,结果把对比学习的正负样本关系搞乱了,模型直接崩掉。

3.1.1 有监督数据增强

有监督增强,就是咱们手里有标签,增强后标签也跟着变。比如图像翻转了,类别标签不变;但如果是目标检测,框的坐标就得跟着变。

核心原则: 增强操作必须保持标签语义不变,或者能精确计算出新标签。

常见的操作包括:

  • 几何变换: 旋转、翻转、裁剪、缩放。我做过一个车牌识别项目,只用水平翻转就把准确率从82%提到了91%。
  • 颜色变换: 亮度、对比度、饱和度调整。注意别调过头,否则语义可能变——比如把「红灯」调成「绿灯」。
  • 噪声注入: 高斯噪声、椒盐噪声。适合提升模型的鲁棒性。
  • 混合类增强: MixUp、CutMix。这类操作会生成「混合标签」,比如0.7的猫+0.3的狗。
我曾经踩过的坑: 在医学影像分割任务里,用了随机旋转90度。结果把「左肺」转成了「右肺」,标签没跟着转,模型直接学歪了。记住——有监督增强,标签必须同步变换。

3.1.2 自监督数据增强

自监督学习这两年火得不行。它的核心思路是:让模型自己从数据中找「监督信号」。数据增强在这里不是锦上添花,而是核心引擎。

你想想看,SimCLR、MoCo、BYOL这些经典方法,哪个不是靠数据增强构造正负样本对的?

方法 增强策略 我的经验
SimCLR 随机裁剪+颜色抖动+高斯模糊 颜色抖动强度很敏感,调大了正样本对差异太大,模型学不到共性
MoCo v3 随机裁剪+水平翻转+颜色抖动 我习惯把裁剪比例设到0.2-1.0,效果最稳
BYOL 更强的颜色抖动+灰度化+模糊 灰度化对纹理敏感的任务帮助很大

自监督增强有个关键点:增强后的两个视图,必须来自同一张原始图。这个「同一来源」的约束,决定了你不能用那些会改变语义的操作。

3.1.3 无监督数据增强

无监督增强,说白了就是没有标签,也没有对比学习的正负样本约束。增强的目的很纯粹——让模型学到更鲁棒的特征表示。

常见的做法包括:

  • 生成式增强: 用GAN、VAE生成新样本。我做过一个工业缺陷检测项目,真实缺陷样本只有200张,用StyleGAN生成了5000张,检测率从65%提到了89%。
  • 随机掩码: 像MAE那样,随机遮掉一部分图像块,让模型去重建。这其实也是一种增强。
  • 数据扰动: 对输入做随机变换,但不需要保持任何标签一致性。
我的建议: 无监督增强最适合做预训练阶段的数据扩充。等下游任务有标签了,再切换到有监督增强策略。

3.2 在线增强 vs 离线增强

这个维度其实更「工程化」。说白了就是:增强操作是在训练过程中实时做,还是提前做好存起来。

3.2.1 离线增强

离线增强,就是先把原始数据扩增N倍,存到磁盘上,训练时直接读。

优点:

  • 训练速度快,因为数据预处理已经做完了
  • 增强结果可复现,方便调试
  • 适合计算资源受限的场景

缺点:

  • 磁盘占用大——扩增10倍,磁盘就多占10倍空间
  • 数据多样性有限——每个epoch看到的增强版本是固定的
  • 灵活性差——想换增强策略,得重新生成一遍
适用场景: 小数据集、计算资源紧张、需要严格复现实验结果的场景。

3.2.2 在线增强

在线增强,就是每个batch实时做增强。PyTorch的torchvision.transforms、TensorFlow的tf.image都是干这个的。

优点:

  • 数据多样性无限——每个epoch看到的增强版本都不同
  • 磁盘占用小——只存原始数据
  • 灵活——可以动态调整增强策略

缺点:

  • 增加训练时间——CPU/GPU要做实时计算
  • 结果不可完全复现——除非固定随机种子
我曾经踩过的坑: 在一个视频理解项目里,用了在线增强。结果每个batch都要做随机裁剪+时序抖动,GPU利用率从95%掉到了40%。后来改成离线增强+缓存策略,才把速度提上来。在线增强不是万能的,IO瓶颈要提前评估。

3.2.3 怎么选?

我个人习惯这样判断:

  1. 数据量小于1万: 离线增强,直接扩到10万级别
  2. 数据量1万-10万: 在线增强为主,配合少量离线增强做验证集
  3. 数据量大于10万: 纯在线增强,除非有特殊需求
  4. 多模态场景: 建议在线增强,因为不同模态的增强策略需要协同调整

3.3 知识体系总览

下面这张图,把咱们这一章的核心内容串起来了。我画图时习惯把「分类」和「策略」分开,这样后面选方案时思路更清晰。

数据增强分类与策略总览 数据增强分类与策略总览 数据增强 按学习范式分类 按执行时机分类 有监督增强 自监督增强 无监督增强 离线增强(预处理阶段) 在线增强(训练阶段) 几何/颜色变换 混合类增强 对比学习增强 生成式/掩码增强 磁盘占用大 多样性有限 训练速度快 可复现性强 灵活性差 实时计算开销 选择策略时:先看学习范式,再看执行时机,最后选具体操作

3.4 多模态场景下的特殊考量

多模态模型的数据增强,比单模态复杂得多。为什么?因为不同模态的增强策略需要「对齐」。

举个例子:图像-文本匹配任务。你给图像做了随机裁剪,文本要不要跟着变?如果文本描述的是「一只白猫在沙发上」,你把猫裁掉了,文本却不变,那模型就学错了。

多模态增强的核心原则: 保持跨模态语义一致性。要么所有模态同步增强,要么只做不影响语义的增强。

我常用的策略:

  • 图像+文本: 图像做颜色抖动、高斯模糊,文本保持不变。因为颜色变化不影响文本语义。
  • 图像+音频: 图像做裁剪,音频做时间拉伸。但要注意——裁剪后的图像和拉伸后的音频,在时间上要对齐。
  • 视频+文本: 视频做时序裁剪,文本只保留对应时间段的描述。这个我在做视频理解时踩过坑——不裁剪文本,模型会把「前面的人在跑步」和「后面的人在走路」混在一起。
我曾经踩过的坑: 做图像-文本检索时,用了随机擦除增强。结果把图像中的关键物体擦掉了,但文本描述还在。模型学到的关联变成了「背景+文本」,而不是「物体+文本」。后来我加了约束——擦除区域不能覆盖图像中与文本关键词对应的区域。

3.5 本章小结

这一章咱们把数据增强的「家底」翻了个遍。记住几个关键点:

  • 按学习范式选策略: 有监督要保标签,自监督要保正负样本关系,无监督最自由
  • 按执行时机选方案: 小数据离线,大数据在线,多模态优先在线
  • 多模态要特别注意: 跨模态语义一致性是底线