CodeWalk

MixUp数据增强的原理与数学推导

作者:屠龙少年 · 2026-05-30 12:55

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 $$

本质:在特征空间和标签空间同时做凸组合

为什么有效

  1. 线性行为正则化

    • 要求模型在混合样本上的预测接近混合标签
    • 约束f(λx_i + (1-λ)x_j) ≈ λf(x_i) + (1-λ)f(x_j)
    • 鼓励模型特征表示是线性可插值
  2. 决策边界平滑

    • 中间区域不再是无监督的,而是有明确标签约束
    • 决策边界被推离数据流形边缘
  3. 减少记忆化

    • 混合样本不来自真实分布,模型无法"死记硬背"
    • 迫使模型学习更通用的特征
  4. 隐式多样性

    • 理论上产生无限多种混合组合
    • 每个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(频域混合)。