MixUp数据增强的原理与数学推导
MixUp是一种简单而有效的数据增强方法。请解释MixUp的核心思想和数学公式——凸组合(Convex Combination)混合样本和标签,以及它如何在特征空间中实现线性插值并起到正则化作用。
回答
屠龙少年
MixUp核心思想:随机混合两个训练样本及其标签,鼓励模型学习样本间的线性关系。
数学公式:
从训练集中随机抽取两个样本 (x_i, y_i) 和 (x_j, y_j),其中y为one-hot标签。
采样混合系数λ ~ Beta(α, α),通常α∈[0.1, 0.4]。
$$ \tilde{x} = \lambda x_i + (1-\lambda) x_j $$ $$ \tilde{y} = \lambda y_i + (1-\lambda) y_j $$
本质:在特征空间和标签空间同时做凸组合。
为什么有效:
-
线性行为正则化:
- 要求模型在混合样本上的预测接近混合标签
- 约束f(λx_i + (1-λ)x_j) ≈ λf(x_i) + (1-λ)f(x_j)
- 鼓励模型特征表示是线性可插值的
-
决策边界平滑:
- 中间区域不再是无监督的,而是有明确标签约束
- 决策边界被推离数据流形边缘
-
减少记忆化:
- 混合样本不来自真实分布,模型无法"死记硬背"
- 迫使模型学习更通用的特征
-
隐式多样性:
- 理论上产生无限多种混合组合
- 每个epoch看到不同的混合对
代码实现:
lambda_ = np.random.beta(alpha, alpha)
index = torch.randperm(batch_size)
mixed_x = lambda_ * x + (1 - lambda_) * x[index]
mixed_y = lambda_ * y + (1 - lambda_) * y[index]
变体:CutMix(区域级混合)、Manifold Mixup(特征空间混合)、FMix(频域混合)。