——数据增强方法
——https://github.com/hongyi-zhang/mixup
动机:
机器学习的目标就是根据训练样本,寻找一个最优的函数,是的函数对输入X的估计Y'与实际输出Y之间的期望风险(误差)最小化。利用已知的经验数据(训练样本)来计算得到的误差,称之为经验风险。经验风险是模型关于训练样本集的平均损失。 经验风险最小化(Empirical Risk Minimization,ERM)的策略认为,经验风险最小的模型是最优的模型。
当样本容量足够大时,经验风险最小化能保证有很好的学习效果,在现实中被广泛采用。例如,极大似然估计(MLE)就是经验风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等于极大似然估计。 但是,当样本容量很小时,经验风险最小化学习的效果就未必很好,会产生过拟合现象。研究证明模型体量固定,数据量足够,即可保证使用ERM时训练的收敛性,但是如今网络体量都很大,模型参数量远远超过训练集样本容量,这就造成:网络倾向于记忆训练数据,而不是进行泛化;难以抵御分布外的对抗样本。
解决这一问题的一个途径就是使用邻域风险最小化原则(Vicinal Risk Minimization,VRM),即通过先验知识构造训练样本在训练集分布上的邻域值。通常做法就是传统的数据扩充,如翻转,旋转,放缩等。但是这种做法过于依赖特定数据集,此外需要人类的专门先验知识,此外,数据增强假定邻域内样本都是同一类,且没有对不同类不同样本之间邻域关系进行建模 。本文的贡献是提出一种新的数据扩展方式,即使用线性插值的方法得到新的扩展数据。本质上,mixup在成对样本及其标签的凸组合(convex combinations)上训练神经网络。作者分别在ImageNet-2012、CIFAR-10、CIFAR-100等数据集上进行试验,研究结果表明,mixup可以改进当前最先进的神经网络架构的泛化能力。mixup能够减少对错误标签的记忆,增加对抗样本的鲁棒性,并能够稳定对生成对抗网络的训练过程。
Mixup构建了虚拟的训练样本,假设是两个随机抽取的样本,构建的样本为,,,其中代表原始输入向量,代表one-hot标签编码。
从ERM到Mixup的数学原理:
在监督学习中,旨在寻找一个函数描述一个任意的特征向量与目标向量之间的关系,服从联合分布,因此,定义损失函数来度量与实际目标之间的差别。对于样本-标签对~,最小化数据分布上的平均损失,即期望风险:
但是,实际中分布通常是未知的,因此我们通常构建一个训练集{},对于所有样本,均服从分布,因此可以通过经验分布估计分布,,其中是狄拉克函数(定义域上积分为1),因此以经验风险估计期望风险:
ERM仅仅在定义好的训练集上进行优化,但是当函数参数量不断增大时,最小化经验风险的训练趋向于记忆训练数据。
代码表示:
其中服从分布。.
其中,绿色代表类别0,橙色代表类别1。蓝色代表条件概率。
但是根据经验分布来估计分布不是唯一的选择,在邻域风险最小化(VRM)理论中,分布由邻域分布估计给出:,其中代表邻域分布,用于度量在实际样本对的领域内找到虚拟样本对的概率,具体地,考虑高斯邻域,,等价于以加性高斯噪声进行数据扩充,为了学习邻域最小化,通过采样邻域分布来得到数据集,然后最小化经验邻域风险,本文的贡献在于提出一种通用邻域分布,称之为mixup:
服从分布,属于0到正无穷,,,是训练数据中随机抽取的两组向量-标签对,,用于控制特征与特征之间,标签与标签之间的插值强度。
mixup的实现是在网络中前向进行的,计算开销很小,实验证明在狄利克雷分布(多变量普遍化的分布)上对三个或者四个特征进行凸组合并不能带来更多的提升,反而会增加计算负担。目前mixup的实现使用一个单独的data loader来得到一个minibatch,mixup在随机shuffle之后应用于同一个minibatch。此外,仅在具有相同标签的输入之间进行插值不会得到性能提升。
mixup可以理解为一种激励模型在训练数据之间表现出线性的数据扩充方法,我们认为,这种线性行为可以在训练集之外进行预测时增加鲁棒性,减少错误预测的数量。此外,从奥卡姆剃刀的角度来看,线性是一种很好的归纳偏差,因为它是最简单的行为之一。
下图是两种不同训练方法下模型的预测误差比较,当在特征上进行预测时,如果预测结果不为,则认为预测错误。可以看出,以mixup训练的模型错误率更小。
下图表示两种模型在以样本为输入的模型梯度范数。以mixup训练的模型梯度范数更小。
本文还验证了使用mixup训练的模型能够破除网络对噪声标签的过拟合现象:
此外,在对抗样本的测试上,mixup同样优于ERM。对于稳定训练GAN网络也有帮助。