方法来源
Mixup是2018年发表在ICLR上的一种数据增强方法,它通过将多组不同数据集的样本进行线性组合,生成新的样本,从而扩充数据集。
核心思想是从每个batch中随机选择两张图像,并以一定比例混合生成新的图像,新图像的标签也是进行线性组合得到的。
需要注意的是,全部训练过程都只采用混合的新图像训练,原始图像不参与训练过程。
Mixup是发源于CV领域的一种数据增强技术,发展到现在不仅在CV领域,在NLP、时间序列预测等领域都有其踪影,是一种提分神器。
Mixup也可以增加数据集的多样性,从而降低模型的方差,提高模型的鲁棒性。
paper:mixup: Beyond Empirical Risk Minimization
存在问题:大型深度神经网络功能强大,但表现出不良行为,如对记忆和对抗性实例的敏感性。
Mixup是一种简单有效的数据增强方法(学习原则),能够缓解这些问题。
Mixup核心公式
其中 x i x_i xi, y i y_i yi和 x j x_j xj, y j y_j yj都是从训练集中随机选择的,其中 λ \lambda λ取值于 β \beta β分布,范围为0-1。
y是one-hot标签,⽐如 y i y_i yi的标签为[0,0,1], y j y_j yj的标签为[1,0,0],此时 λ \lambda λ为0.2,那么此时的标签就变为0.2*[0,0,1] + 0.8*[1,0,0] = [0.8,0,0.2],其实Mixup的立意很简单,就是通过这种混合的模型来增强模型的泛化性。
PyTorch代码
图像领域的应用
根据给定的训练数据集来训练和更新神经网络体系结构中的参数。然而,由于培训数据只涵盖了整个可能数据分布的某一部分,因此网络可能过于适合分布的“可见”部分。因此,我们拥有进行训练的数据越多,理论上就能更好地描述整个分布。
虽然我们拥有的数据数量有限,但我们总是可以尝试稍微改变图像,并将它们作为“新”样本输入网络进行培训。这个过程被称为数据增强。
参考文章
一种巧妙且简单的数据增强方法 - MixUp 小综述
在PyTorch中用Mixup增强神经网络
数据增强黑科技Mixup:9篇顶会论文带你了解Mixup发展脉络
数据增强实测之mixup
【pytorch】使用mixup技术扩充数据集进行训练