文章:https://arxiv.org/pdf/1710.09412.pdf
代码:github
作者:csdbks
mixupBEYOND EMPIRICAL RISK MINIMIZATION 摘要背景 引入贡献 方法 公式理解 实验讨论
摘要
如今大规模深度神经网络具有强大的性能,不过,其损耗巨大的内存以及对对抗样本的敏感性一直不尽如人意。作者提出的mixup是一个简单地减缓两种问题的方案。
本质上,mixup在成对样本及其标签的凸组合上训练神经网络。这样做,mixup规范神经网络增强了训练样本之间的线性表达。
作者指出,mixup方法在ImageNet-2012, CIFAR-10等数据集上的优秀网络上实现,都提高了其表现性能。作者认为,mixup减少了错误标签的开销,增强了对抗样本的鲁棒性,稳定了生成对抗网络的训练。
大规模深度神经网络近年来取得了重大的突破,他们具有两点共性:
对于训练数据取最小平均错误 (学习规则:ERM 即 经验风险最小化)优秀的神经网络规模与训练样本数目呈线性关系冲突的地方在于,经典机器学习理论告诉我们,只要学习机(如神经网络)的规模不随着训练数据数量的增加而增加,那么ERM的收敛性就是可以得到保证的。其中,学习机的规模由参数数量,或其VC复杂度来衡量。
这一矛盾挑战了ERM方法在当前神经网络训练中的适应性。
这一证据表明,在测试分布与训练数据略有不同时,ERM 方法已不具有良好的解释和泛化性能。
因而,数据增强方法(Simard et al., 1998),在简单但不同的样本中去训练数据以及 Vicinal Risk Minimization( VRM)领域风险最小化原则被提出。在VRM中,需要专业知识描述训练数据中每个样本的邻域,从而可以从训练样本邻域中提取附加的虚拟样本以扩充对训练分布的支持。数据增强可以提高泛化能力,但这一过程依赖于数据集,而且需要专家知识。其次,数据增强假定领域内样本都是同一类,且没有对不同类不同样本之间领域关系进行建模。
受这些问题启发,作者提出了一种简单且数据无关的数据增强方式,被称作 mixup 。简而言之,mixup 构建了虚拟的训练样本。
y˜=λyi+(1−λ)yj
其中, (xi,yi) 和 (xj,yj) 是从训练数据中随机抽取的两个样本,且 λ∈[0,1] 。因此,mixup通过结合先验知识,即特征向量的线性插值应导致相关标签的线性插值,来扩展训练分布。mixup仅需要几行代码即可实现,且引入了最小计算开销。
方法 公式
论文的贡献在于提出了一个一般性的领域分布,称作 mixup:
其中, λ∼Beta(α,α) , α∈(0,∞) 。
x˜=λxi+(1−λ)xj
y˜=λyi+(1−λ)yj
mixup超参数 α 控制了在特征-目标向量之间插值的强度,当 α→0 时恢复为 ERM 原则。
上图展示了使用PyTorch 实现 mixup 训练的几行必要代码。
可替换的设计选择:
作者观察了三个和三个以上从Dirichlet 分布采样的权重样本的凸组合的性能表现也不错,但计算成本增加当前实现使用单个数据加载获取一个最小批量,然后 mixup 被用于随机打乱后的同一最小批量。作者发现,减少 I/O 请求仍然能取得相同的效果。仅在标签相同的输入中插值,并不能带来 mixup 后续讨论中的性能提升。 理解
mixup 领域分布可以看作一种形式的数据增强方式增强了模型 f 在训练样本之间的线性表现。作者断定线性表现消减了在训练样本之外预测的不良振荡。由于线性是一种最简单的可能性表示,从dqdjqm剃刀的观点来看线性是一种良好的归偏置。
Figure 1b 显示了mixup 在类与类之间提供了更平滑的过渡线来估计不确定性。Figure 2 显示了两个神经网络(using ERM and mixup)在训练CIFAR-10 数据集上的平均表现。两个模型有着同样的结构,使用同样的步骤训练,在同样的训练数据中采样相同的点进行评估。使用mixup训练的模型在训练样本之间的模型预测和梯度模值更加稳定。
实验
实验过程不详述,具体请看论文。仅贴出重要的图表:
ERM 和 mixup 方法在ImageNet-2012 数据集上验证错误。
ERM 和 mixup 方法在CIFAR-10 数据集上测试错误。
讨论
在作者的实验中,有以下一贯的趋势:随着α的增加,在真实数据中的训练错误增加,同时泛化差距减小。这证明了作者的一个假设,mixup可以隐式地控制模型的复杂度。然而,作者并没有找到一个很好的方法在偏差-方差的平衡中找到最佳位置。举例来说,在CIFAR-10训练中,即使当 α→∞ 时,在真实数据上的训练误差会非常低。然而在ImageNet 分类任务中,真实数据的训练误差在 α→∞ 时会有明显上升。基于作者在ImageNet 和 Google
commands 上使用不同网络结构做的实验,发现增大网络容量,可以使训练误差对大的 α 值敏感性降低,这给mixup 带来更多的优势。
mixup 对更加深入研究还有一些可能性。
ps:我也写了一个简单的 MXNet 实现,欢迎star