数据增强 (Data Augmentation)
动机与核心思想
数据增强是指在不实际收集新数据的前提下,通过对已有样本施加变换来人工扩充训练集的技术。其主要动机包括:
- 缓解过拟合:当训练数据量有限时,模型容易记住训练样本而非学到泛化特征。增强后的多样化样本迫使模型关注更鲁棒的模式。
- 增加数据多样性:真实场景中的数据分布远比训练集丰富,增强操作模拟了光照变化、视角偏移、表述差异等现实变动。
- 降低数据收集与标注成本:高质量标注数据的获取往往昂贵且耗时,数据增强以极低成本带来等效的数据量提升。
核心原则是:变换后的样本应保持语义不变,即增强操作不能改变样本的标签含义。
图像增强
图像领域是数据增强应用最成熟的方向,方法可分为几何变换、颜色变换与高级混合方法三类。
几何变换
| 方法 | 说明 |
|---|---|
| 水平/垂直翻转 (Flip) | 最常用的基础操作,对自然图像几乎总是安全的 |
| 随机旋转 (Rotation) | 在一定角度范围内旋转,需注意边界填充策略 |
| 随机裁剪 (Random Crop) | 从原图中截取子区域并缩放回原始尺寸 |
| 缩放 (Scale) | 对图像进行随机缩放,模拟距离变化 |
| 仿射变换 (Affine) | 包含平移、旋转、缩放、剪切的组合变换 |
在目标检测任务中,几何变换需要同步变换 bounding box 坐标。
颜色变换
- 亮度 (Brightness):随机调整图像整体亮度,模拟不同曝光条件。
- 对比度 (Contrast):改变像素值的动态范围。
- 色相 (Hue) / 饱和度 (Saturation):在 HSV 空间中随机偏移,模拟色温变化。
- 随机灰度化 (Random Grayscale):以一定概率将彩色图像转为灰度,迫使模型减少对颜色的依赖。
高级混合方法
Cutout (2017):在图像上随机遮挡一个正方形区域(填零),强制模型利用全局信息而非局部特征。
Mixup (2018):对两张图像及其标签做线性插值:
其中 \(\lambda \sim \text{Beta}(\alpha, \alpha)\)。Mixup 产生的软标签对模型校准 (calibration) 也有正面作用。
CutMix (2019):结合 Cutout 和 Mixup 的思想——将一张图像的矩形区域粘贴到另一张图像上,标签按面积比例混合。相比 Cutout 没有信息浪费,相比 Mixup 保留了局部结构。
Mosaic (YOLOv4):将四张图像拼接为一张,使模型在一次前向传播中看到更多目标和背景组合,对小目标检测尤其有效。
AutoAugment 与 RandAugment
AutoAugment (Google, 2019):将增强策略的选择建模为搜索问题,用强化学习在候选操作空间中搜索最优的增强策略组合。缺点是搜索成本极高。
RandAugment (2020):大幅简化了 AutoAugment——只需两个超参数 \(N\)(操作数量)和 \(M\)(操作强度),从预定义操作集中随机选取 \(N\) 个操作、每个操作强度为 \(M\)。实验表明其效果与 AutoAugment 相当,但搜索成本几乎为零。
文本增强
文本数据的增强难度高于图像,因为离散的词序列对微小扰动更敏感,容易破坏语义和语法。
反向翻译 (Back Translation)
反向翻译是 NLP 中最有效的增强手段之一,在机器翻译、文本分类、问答等任务中广泛使用。
原理:将源语言文本翻译为中间语言,再翻译回源语言。由于翻译模型的表达差异,回译结果通常在保留语义的同时产生不同的措辞和句式。
实现流程:
- 准备原始文本语料 \(D = \{x_1, x_2, \ldots, x_n\}\)。
- 选择一个或多个中间语言(如中文 -> 英文 -> 中文,或中文 -> 法文 -> 中文)。
- 使用翻译 API 或本地翻译模型将每条文本翻译为中间语言。
- 将中间语言结果翻译回源语言,得到增强样本 \(x_i'\)。
- 对增强样本做质量过滤(如去除与原文完全相同的结果、去除明显不通顺的翻译)。
- 将增强样本与原始样本合并为训练集。
适用场景:
- 低资源语言的文本分类:标注数据稀缺时效果尤为显著。
- 机器翻译:经典的 Back Translation 方法利用单语数据生成伪平行语料,是提升翻译质量的标准技巧。
- 问答与阅读理解:对问题做回译可以增加问题的多样性,同时答案 span 通过对齐保持不变。
注意事项:使用多个中间语言可以获得更多样的结果;采样式解码(而非 beam search)产生的多样性更高;需要对回译质量做过滤,低质量翻译会引入噪声。
EDA (Easy Data Augmentation)
EDA 提出了四种简单的文本扰动操作:
- 同义词替换 (Synonym Replacement):随机选取非停用词并替换为 WordNet 同义词。
- 随机插入 (Random Insertion):随机选取一个词的同义词插入句中随机位置。
- 随机交换 (Random Swap):随机交换句中两个词的位置。
- 随机删除 (Random Deletion):以一定概率随机删除每个词。
EDA 的优点是实现极其简单,不依赖外部模型;缺点是增强多样性有限,且在大数据集上收益递减。
基于 LLM 的文本增强
随着大语言模型的成熟,使用 GPT、Claude 等 LLM 进行文本改写成为一种高质量的增强方式:
- Prompt 改写:给定原始文本,要求 LLM 生成语义相同但措辞不同的版本。
- 风格迁移:将正式文本改写为口语化表达,或反之。
- 条件生成:给定标签,直接让 LLM 生成符合该标签的新样本。
优势在于生成质量高、多样性强;缺点是成本较高,且需要对生成结果做标签一致性验证。
音频增强
音频增强多应用于语音识别 (ASR) 和音频分类任务。
- 时间拉伸 (Time Stretching):在不改变音高的前提下加速或减速音频,模拟不同语速。
- 音高偏移 (Pitch Shifting):在不改变时长的前提下升高或降低音高,模拟不同说话人特征。
- 添加噪声 (Noise Injection):叠加环境噪声(白噪声、街道噪声、室内混响等),提升模型在嘈杂环境下的鲁棒性。
- 时间偏移 (Time Shifting):随机平移音频波形的起始位置。
SpecAugment
SpecAugment (Google, 2019) 是语音识别中里程碑式的增强方法,直接在 Mel 频谱图上操作:
- Time Masking:在时间轴上随机遮挡连续若干帧。
- Frequency Masking:在频率轴上随机遮挡连续若干频带。
SpecAugment 非常简单,但在 ASR 任务上带来了巨大的性能提升,与 Cutout 在图像领域的思想一脉相承。
表格数据增强
表格数据(结构化数据)的增强主要针对类别不平衡问题,通过在特征空间中合成少数类样本来实现。
SMOTE (Synthetic Minority Over-sampling Technique)
SMOTE 的核心思想是在少数类样本之间进行插值:
- 对每个少数类样本 \(x_i\),找到其 \(k\) 个最近邻(同为少数类)。
- 随机选取一个近邻 \(x_j\),在 \(x_i\) 和 \(x_j\) 的连线上随机生成一个新样本:\(x_{\text{new}} = x_i + \lambda (x_j - x_i)\),其中 \(\lambda \in [0, 1]\)。
SMOTE 避免了简单过采样(复制样本)导致的过拟合问题。
ADASYN (Adaptive Synthetic Sampling)
ADASYN 在 SMOTE 基础上引入自适应机制:对于那些更难分类的少数类样本(即周围多数类样本较多的区域),生成更多的合成样本。这使得增强集中于决策边界附近,提升了分类器在困难区域的性能。
对比学习中的数据增强
数据增强在自监督对比学习中扮演核心角色,其质量直接决定了学到的表征质量。
SimCLR 的增强组合策略
SimCLR (Chen et al., 2020) 的关键发现是:单一增强操作不足以学到好的表征,需要组合使用多种增强。
SimCLR 的标准增强流水线包括:随机裁剪 + 调整大小、随机颜色失真 (color jittering)、随机高斯模糊。其中,随机裁剪与颜色失真的组合被实验证明是最关键的——单独使用任何一种都会显著降低性能。
直觉上,随机裁剪迫使模型理解图像的全局结构,颜色失真防止模型走"颜色直方图匹配"的捷径。两者组合创造了足够困难的正样本对,推动模型学习更深层的语义特征。
增强的注意事项与最佳实践
保持标签一致性
增强操作不能改变样本的真实标签。例如:对数字"6"做 180 度旋转会变成"9";对情感文本做过度改写可能反转情感极性。在设计增强策略时必须考虑任务语义。
避免过度增强
增强幅度过大会生成脱离真实分布的样本(out-of-distribution),反而损害模型性能。建议从温和的增强参数开始,逐步增大强度并观察验证集指标。
验证集与测试集不做增强
数据增强仅应用于训练阶段。验证集和测试集必须保持原始分布,以准确反映模型的真实泛化能力。Test-Time Augmentation (TTA) 是推理阶段的一种特殊技巧——对测试样本做多次增强并取预测均值,但这属于推理策略而非训练增强。
增强策略应与任务匹配
不同任务对增强的容忍度不同。分类任务通常能承受较强的增强;检测和分割任务中几何变换需同步标注;文本生成任务中增强需格外谨慎以避免引入语法错误。
与正则化方法的关系
数据增强本质上是一种隐式正则化。它与 Dropout、Weight Decay 等显式正则化方法是互补的,在实践中通常联合使用以获得最佳效果。