多分类模型如何将LabelSmoothing与MixUp联合使用?

本文探讨了LabelSmoothing和MixUp两种技术在图像分类中的作用,LabelSmoothing通过平滑one-hot编码缓解过拟合,而MixUp则通过输入融合增强数据并部分模拟LabelSmoothing效果。两者的结合实例展示了在CIFAR100训练中的优势,提高了模型的泛化性能。
摘要由CSDN通过智能技术生成

LabelSmoothing

        以图像分类为例,网络模型的最后一层的输出维度等于总的类别数,然后使用softmax将网络预测输出转换为对应类别的概率分布,表示如下:

        然后使用交叉熵损失函数来衡量网络预测输出的概率分布和真实的样本标签(one-hot编码)之间的分布差异,计算损失,训练模型。

        由于样本的真是标签通常采用one-hot编码,导致在模型训练时,强行将正类的预测结果zi 推向无穷大,这样导致模型的学习结果过于极端(过于自信),导致模型的泛化性能下降。

        为了缓解模型这种过于自信的表现,Label Smoothing对one-hot编码过程进行改进,Label Smoothing表示如下:

        ε 通常取值为0.1,这样在模型训练时,正样本的概率就不再是1.0了,而是0.9,负样本的概率也不再是0.0了,而是一个很小的但是不为0的值,以此来缓解模型训练过程中出现的过度自信问题。

MixUp

参考:数据增强之MixUp_胖胖大海的博客-CSDN博客_数据增强mixup代码

        MixUp用在输入端进行数据增强,Mixup的本意是将任意两个有标签的训练数据进行融合,得到一个新的数据,新数据对应的标签就是两个数据标签的融合,表示如下:

        这样,在模型训练阶段,因为融合是随机的,所以起到了数据增强的作用,同时由于融合将两个one-hot的标签融合之后得到的新标签不再是one-hot的形式,也起到了一定的LabelSmoothing的作用。

LabelSmoothingMixUp共用

        通过上面的介绍,我们知道了LabelSmoothing和MixUp的作用,以及实现原理,那如何将LabelSmoothing和MixUp联合使用呢?以下是个人理解:

        MixUp之后输出的结果不再是one-hot的形式,而LabelSmoothing的输入要求是one-hot形式,所以我们要保持MixUp之后的结果依然是one-hot的形式,在MixUp的pytorch官方实现版本中,同时返回了两个标签融合之前的one-hot编码,然后再损失函数阶段再进行融合,如下:

        这样,经过MixUp之后得到的还是one-hot编码的label,然后再这个label之上就可以使用LabelSmoothing了。

代码地址:mixup-cifar10/train.py at main · facebookresearch/mixup-cifar10 · GitHub

Cifar100训练对比

训练方式验证集准确率
CrossEntropy + StepLR0.8055
CrossEntropy + CosineLR0.8096
CrossEntropy + CosineLR + MixUp
CrossEntropy + CosineLR + LabelSmoothing
CrossEntropy + CosineLR + LabelSmoothing + MixUp0.8393

代码地址: https://github.com/xxcheng0708/Pytorch_Image_Classifier_Template/blob/master/train_cifar100_model.py

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值