MIXUP理解

论文:Bag of Freebies for Training Object Detection Neural Networks
论文链接:https://arxiv.org/abs/1902.04103

     网上有很多对该论文的介绍,请自行百度:

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

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

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

                            εya+(1−ε)yb=f(εxa+(1−ε)xb)εya+(1−ε)yb=f(εxa+(1−ε)xb)


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

                                        εf(xa)+(1−ε)f(xb)=f(εxa+(1−ε)xb)

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

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

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

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

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

实际上是通过数据扩增的形式来给模型增加正则项,或者说对模型进行剪枝。

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

参考链接:https://spaces.ac.cn/archives/5693

你可能感兴趣的:(深度学习)