知行编程网知行编程网  2022-02-25 05:00 知行编程网 隐藏边栏 |   抢沙发  16 
文章评分 0 次,平均分 0.0

从SamplePairing到mixup:神奇的正则项

SamplePairing和mixup是两种一脉相承的图像数据扩增手段,它们看起来很不合理,而操作则非常简单,但结果却非常漂亮:在多个图像分类任务中都表明它们能提高最终分类模型的精度

某些读者会困惑于一个问题:为什么如此不合理的数据扩增手段,能得到如此好的效果?而本文则要表明,它们看起来是一种数据扩增方法,事实上它们是对模型的一种正则化方案。正如周星驰的电影《国产凌凌漆》的一句经典台词:

"表面上看这是一个吹风机,其实它是一个刮胡刀。"

数据扩增

让我们从数据扩增说起。数据扩增是指我们在对原始数据做一些简单的变换后,它们对应的类别往往不会变化,所以我们可以在原来数据的基础上,“造”出更多的数据来。比如一幅小狗的照片,将它水平翻转、轻微的旋转、裁剪、平移等操作后,我们认为它的类别没有变化,它还是原来的那只狗。这样一来,从一个样本我们可以衍生出好几个样本,从而增加了训练样本量。

从SamplePairing到mixup:神奇的正则项

数据扩增源于我们的先验知识——比如我们事先知道了普通照片具有水平翻转不变性,从而我们用水平翻转来扩增数据,通过扩增数据来告诉模型它应该具有水平翻转不变性。数据扩增并非绝对通用的,比如普通的照片可以水平翻转不变,但是对于文字图片就不行了,这进一步体现了数据扩增是将我们的先验知识融入到模型中的一种方案。

SamplePairing

现在我们来谈SamplePairing。SamplePairing是作为一种数据扩增的手段而提出,但它却非常反直觉:

样本xa的标签是ya,那么训练集随机选一个样本xb,让(xa+xb)/2的标签仍然是ya

没错,你没有看错,我也没有写错,就这么简单,也就这么反直觉。在paperweekly上读者陈泰红曾评论:

"这是我见到 CNN 领域最简单的一篇论文。"

看到这个方案后,读者脑海里可能冒出一系列的问题,这一系列的问题就是SamplePairing的反直觉所在。比如,为什么(xa+xb)/2ya而不是yb?还有,按照我们对数据扩增的理解,(xa+xb)/2都已经不是一幅合理的图像了,这样的“扩增”还能用?

从SamplePairing到mixup:神奇的正则项

首先,关于不对称的问题,其实可以留意到,当前样本是xa时,随机选到xb,而我们让(xa+xb)/2的标签仍然是ya;而轮到xb时,随机选的时候也可能选到xa,这时候(xa+xb)/2的标签就是xb。所以,看上去不对称,实际上SamplePairing是对称的,SamplePairing可以重新表述为:

随机选两个样本xaxb,它们对应的标签为ya,yb,从中随机选一个标签,假设结果为y,那么让(xa+xb)/2的标签为y

Mixup

从重新表述后的SamplePairing中不难看出,如果训练充分的话,理论上模型对于(xa+xb)/2的输出应该是ya,yb各占一半,也就是说,如果ya,yb分别代表类别的one hot向量,那么(xa+xb)/2的输出就是(ya+yb)/2

既然如此,我们何不用更随机的方式混合呢?假设U(ε)是某个[0,1]上的随机分布,那么每次我们都随机采样ε∼U(ε),然后让ε·xa+(1−ε)·xb对应的输出为ε·ya+(1−ε)·yb。其中原论文中将U(ε)取为β分布,我觉得这反而引入了更多的超参数,倒不如干脆让它等于均匀分布。

相比SamplePairing,mixup的做法更加“柔和”一些,也更让人信服。因为SamplePairing总给人“一刀切”的感觉,而mixup相对来说符合直觉一些:既然输入是按ε:1−ε叠加的,那么输出也按照这个方式叠加,应该是比较自然的。

正则项诠释

尽管mixup给人更合理一些的感觉,但它们都没有回答一个很重要的问题:两幅图像相加后,结果已经不是一幅合理的图像了,这跟我们通常说的数据扩增完全不是一回事,为什么效果还会好?

让我们更数学化地描述这个问题,对于训练集对(x1,y1),(x2,y2),…,(xn,yn),我们希望找到一个模型f,使得y=f(x)。对于图像分类等任务,鉴于问题本身具有较强的非线性,所以我们一般会用非常深的网络来拟合。然而,网络越深也意味着更加容易对训练集过拟合。

假设模型已经有能力预测ya=f(xa),yb=f(xb)了,那么对于mixup,它说这样还不够,模型还要同时对ε·xa+(1−ε)·xb输出ε·ya+(1−ε)·yb才行,也就是

从SamplePairing到mixup:神奇的正则项

ya,ybf(xa),f(xb)代替,那么得到

从SamplePairing到mixup:神奇的正则项

这其实是一个函数方程,假如ε,xa,xb都是任意的,那么上述函数方程的解就是“线性函数”,也就是说,只有线性函数才能使得上式恒成立,换句话说,mixup希望模型f是一个线性函数。

我们知道,线性函数相当于没有加激活函数的单层神经网络,可以说是最简单的模型了,而我们实际建模时的模型则是深层的、具有大量参数的、具有强非线性能力的网络,而参数越多,越容易过拟合。这样一来,mixup的含义就很明显了:

mixup相当于一个正则项,它希望模型尽可能往线性函数靠近,也就是说,既保证模型预测尽可能准确,又让模型尽可能简单

所以,mixup就是一个很强悍的模型过滤器:

在所有效果都差不多的模型中,选择最接近线性函数的那一个

写在最后

现在我们就回答了原来的那个问题:诸如SamplePairing、mixup这样的数据扩增手段,它们只不过是有着数据扩增的外貌,实际上是通过数据扩增的形式来给模型增加正则项,或者说对模型进行剪枝。

因此,我们就不需要纠结“相加后的图像都已经不是一幅合理的“图像”了,数据扩增为啥还会有效”的问题了,因为它不是数据扩增。

最后,胡乱篡改唐伯虎的一首诗终结本文:

别人笑我乱扩增,我笑他人看不穿。

不见合理图像出,无声无息滤模型。

 

作者: 

苏剑林

单位:

中山大学

文章速递:

https://kexue.fm/archives/5693 或 点击“阅读原文”

 

为您推荐

集成学习,了解一下

Bagging与随机森林算法原理小结

你值得拥有的特征选择大法

聊一聊激活函数

基础篇|一文搞懂RNN(循环神经网络)

本篇文章来源于: 深度学习这件小事

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享