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