一句话定义:Mixup 是一种数据增强和正则化方法:从训练集随机抽两个样本,按比例 λ 线性混合它们的输入和标签,让模型学习“混合输入对应混合输出”。
公式很直观:
\[
\tilde{x} = \lambda x_i + (1-\lambda)x_j,\quad
\tilde{y} = \lambda y_i + (1-\lambda)y_j
\]
其中 λ 通常从 Beta 分布采样。图像任务里,就是把两张图逐像素叠加,像两张照片“半透明叠影”;标签也按同样比例混合,例如一张图 70% 像猫、30% 像狗,目标标签就是“猫 0.7、狗 0.3”。
打个生活化的比方:调酒师把两杯酒按 7:3 兑在一起,并告诉你这杯是 70% A 加 30% B。模型不能只背“非 A 即 B”,而要输出“70% A、30% B”。这相当于告诉模型:两个训练样本之间的区域也应该平滑过渡,而不是从 A 突然跳到 B。于是决策边界更平滑,模型不容易对某个训练样本过度自信。
和相邻概念的区别可以这样看:
| 方法 | 输入怎么变 | 标签怎么变 | 核心作用 |
|---|---|---|---|
| 普通数据增强 | 单张图翻转、裁剪、变色 | 不变 | 学会平移、颜色等不变性 |
| Label smoothing | 不变 | 硬标签变软,如 0.9/0.1 | 抑制过度自信 |
| Mixup | 两个样本线性混合 | 按同比例混合 | 样本间插值,平滑边界 |
| CutMix | 裁剪一块区域粘贴到另一张图 | 按区域面积比例混合 | 局部混合,保留更真实纹理 |
对从业者的实际意义:
1. 实现简单,通常几行代码就能接入分类、回归、语音、文本等任务。
2. 在数据量小、过拟合明显时往往有帮助,常被用来提升泛化能力和置信度校准,对噪声标签也更稳一些。
3. 它不是万能药:图像混合后可能产生不自然样本;细粒度识别、分割、检测等任务要调整混合强度,或改用 CutMix 等变体。
4. 推理时不做混合,按正常流程预测即可。
不同框架的 API 名称和默认超参可能不同,以官方文档为准。
