如何评价mixup: BEYOND EMPIRICAL RISK MINIMIZATION? - 知乎这篇paper是ICLR2018的投稿,直接对raw data和 label interpolation,在很多数据集上取得了SoTA。https:/…https://www.zhihu.com/question/67472285【万字总结】图像处理数据增强、网络正则化方法大总:cutmix、cutout、shakedrop、mixup、 Label smoothing等(附代码) - 知乎一、目录 原文链接: 【万字总结】数据增强、网络正则化方法总结:cutmix、cutout、shakedrop、mixup等(附代码) 一、目录 二、介绍 三、方法 1. StochDepth 2. Label smoothing 3. Cutout 4. DropBlock 5. Mixu…https://zhuanlan.zhihu.com/p/402511359mixup与paring samples ,ICLR2018投稿论文的数据增广两种方式 - 知乎动机神经网络训练需要海量的人工标注数据集,一般的数据增光方式是裁剪、翻转/旋转、尺度变化。之前在arxiv看到IBM的一篇文章【1】,主要是关于数据增强方式,没有公式没有网络架构,只通过简单的相加求平均值方式…https://zhuanlan.zhihu.com/p/33485388关于Mixup方法的一个综述 - 知乎Mixup [1]是ICLR2017年提出的针对计算机视觉的一项简单的数据增广策略。通过对输入数据进行简单的线性变换(即\tilde{\mathbf{X}}=\lambda\cdot \mathbf{X}_0+(1-\lambda)\cdot\mathbf{X}_1),可以增加模型的泛化…https://zhuanlan.zhihu.com/p/439205252
【长期赛】安全AI挑战者计划第二期 - ImageNet图像分类对抗攻击-天池大赛-阿里云天池【长期赛】安全AI挑战者计划第二期 - ImageNet图像分类对抗攻击AI安全性有诸多挑战,为了抵御未来AI面临的安全风险,阿里安全联合清华大学,以对抗样本为核心,假想未来作为安全AI防守者的身份,结合内容安全场景,从文字、图像、视频、声音等多个领域针对对抗样本技术资源赏金召集“挑战者”共同打磨AI模型安全,为打造更安全的AI共同努力。https://tianchi.aliyun.com/competition/entrance/231761/introduction mixup能起作用,值得很好的研究,mixup和label smoothing以及label confusion learning都是很值得思考的,作者也回答了Q:为什么data augmentation是理解为控制模型复杂度?A:准确地说,我觉得data augmentation既不能简单地理解为增加训练数据,也不能简单地理解为控制模型复杂度,而是两种效果兼而有之。考虑图像识别里常用的改变aspect ratio做data augmentation的方法,生成的图像虽然和真实图像相似,但是并不是来自于data distribution,更不是它的独立同分布抽样。而经典的监督学习以及统计学习理论的基本假设就是训练集和测试集都是data distribution的独立同分布抽样,所以这并不是经典意义上的增加。这些合成的训练数据的作用,流行的解释是“增强模型对某种变换的invariance(不变性)”。这句话反过来说,就是机器学习里经常提到的“减少模型估计的variance(方差)”,也就是控制了模型的复杂度。需要注意的是,L2正则化、dropout等等也都是在控制模型复杂度,只不过它们没有考虑数据本身的分布,而data augmentation属于更加机智的控制模型复杂度的方法。其实反过来看,L2正则化和dropout也各自等价于某种data augmentation。也是借这篇文章来统一思考常用的正则化以及数据增强的措施,cutmix,cutout,mixup,label smoothing,mosiac等。
从统计学习理论的角度看,泛化误差就是training error(在没有经过data augmentation的训练集上的错误率)和generalization gap两部分。无论data augmentation还是regularization,都是通过控制模型复杂度减小generalization gap。如果同时又不明显增大training error,那就有望减小generalization error(泛化误差)。我们在CIFAR-10 corrupt label实验上的结果表明,与dropout相比,mixup在random label上的training error相近(即overfitting或者说model complexity相近);但同时mixup可以比dropout在真实标签上达到明显更低的training error。这或许是mixup有效的本质原因。至于为什么mixup可以在control overfitting的同时达到更低的training error,这是一个非常有价值的问题,我目前还不知道答案。这是作者的论点,很有道理,在没有损坏标签的cifar10上mixup比dropout效果更好,但是在random label上dropout和mixup的误差又接近了。至于为什么要降低模型复杂度,不降低模型复杂度就很容易过拟合了。数据增强不过是实用先验知识,通过对数据插值来增加系统约束,可以变相的理解为降低系统的复杂度。这个和dropout的约束有一点相似,只不过一个是通过对数据插值增加约束,一个是对映射插值增加约束,dropout随机drop掉一些层来降低过拟合。
1.Abstract
We also find that mixup reduces the memorization of corrupt labels, increases the robustness to adversarial examples, and stabilizes the training of generative adversarial networks.作者发现mixup能减轻对错误表现的记忆,增加对抗样本的鲁棒性,稳定生成性对抗网络的训练。这一块其实个比较重要的安全领域的任务,就是对样本进行一定干扰,从而测试模型是否能具有一定的抗干扰性,即模型鲁棒性。
2.Introduction
神经网络的两个共同点。1,ERM(Empirical Risk Minimization),对训练数据使其平均误差最小化,可以理解为一种训练模型的方式和原则。2.神经网络的规模和训练样本的数量成线性关系。只要神经网络的大小不随训练数据的增加而增加时,ERM的收敛是有保证的。一方面,ERM允许大型神经网络记忆训练数据(即使有强正则化或者对标签进行随机分配),这点特性很重要,O2UNet就是依据这个来的,模型一定能把训练参数都记住,所以通过调整学习率,让模型不断的在过拟合和欠拟合之间游走,找loss始终是最大的对应的图。很有可能是标签发生了,就是难例样本,当然这有风险,可能部分难例样本本身就很难拟合。另外使用ERM训练的模型在其他数据集上评测时,效果会很不好,就是泛化性不行。那么怎么去改善ERM的这种行为呢?
The method of choice to train on similar but different examples to the training data is known as data augmentation.在类似但是不同的训练数据上进行训练的方法叫做数据增强,形式是Vicinal Risk Minimizationn(VRM).在VRM中,需要human knowledge去描述训练数据中每个示例周围的临近区域。可以从训练样本的临近分布中提取额外的虚拟样本,以扩大对训练分布支持。例如,图像分类,通常将一个图像的附近定义为horizontal reflections,slight rotations和mid scalings的集合。虽然数据增强可以有泛化性的提高,但该过程是依赖数据的,需要使用专家知识。什么意思呢?就是为了减轻过拟合的影响,对一个样本进行不同方式的数据增强,这种数据增强被定义为从训练样本的临近分布中产生的虚拟样本,在深一层,其实就是对训练的线性插值,后面也证明了线性插值是不错的产生样本的方式。
作者介绍了一种数据扩充方式,mixup:
mixup extends the training distribution by incorporating the prior knowledge that linear interpolations of feature vectors should lead to linear interpolations of the associated targets. mixup通过特征向量的线性插值引导相关目标的线性插值的先验知识来扩展训练分布。代码也很简单。
def mixup_data(x, y, alpha=1.0, use_cuda=True):
'''Returns mixed inputs, pairs of targets, and lambda'''
if alpha > 0:
lam = np.random.beta(alpha, alpha)
else:
lam = 1
batch_size = x.size()[0]
if use_cuda:
index = torch.randperm(batch_size).cuda()
else:
index = torch.randperm(batch_size)
mixed_x = lam * x + (1 - lam) * x[index, :]
y_a, y_b = y, y[index]
return mixed_x, y_a, y_b, lam
对输入的样本做了一个mix。作者文中也给了实例代码:
3.from empirical risk minimization to mixup
有三个问题:1.实验中发现采用Dirichlet分布产生三个甚至更多样本的结合,并不能有更多增益,因此mixup的最终形式是beta分布产生alpha值,两个样本相结合。2.实际实现时只采用了一个data loader,并没有像文中给出的代码形式一样,用一个dataloader,shuffle之后相互结合同样有效,并且降低IO。3.相同标签之间的结合也有增益。
4.what is mixup doing?
mixup做了什么?The mixup vicinal distribution can be understood as a form of data augmentation that encourages the model f to behave linearly in-between training examples. We argue that this linear behaviour reduces the amount of undesirable oscillations when predicting outside the training examples.混合领域分布可以被认为是一种数据增强的形式,鼓励模型在训练数据之间线性的表现,这种线性行为减少了在训练样本之外进行预测时不希望出现的震荡量。啥意思呢?就是进行了数据插值,降低了模型复杂度,说着说泛化误差又两部分,一部分是训练误差,一部分是泛化gap,此处通过控制模型复杂度降低泛化gap。而且发现了线性就是一个很好感应偏差。
上图中用了mixup了,误差降低了,右图是损失函数的范数,范数下降了,这个和label smoothing是一直的,why does label smoothing work?论文里面也是用了label smoothing之后,logit的feature norm是下降的,和这个是能对应的,norm下降之后,如果是softmax cross-entropy的话,损失会更加集中大非平稳区域,从而有更好的梯度驱使模型收敛的更好。
整体来说,mixup以数据增强的身份,通过对数据的线性插值,降低了模型的复杂度,有更好的泛化性。把泛化误差分成训练误差和泛化gap来说,降低复杂度是有利于降低泛化gap的。不过这些操作也是依赖于人工知识的数据增强。