利用多专家模型解决长尾识别任务

news/2025/2/11 14:11:58/

来源:投稿 作者:TransforMe
编辑:学姐

贡献

提出了RoutIng Diverse Experts(RIDE),不仅可以减少所有类别的variance,并且还可以减少尾部类的bias。同时提升了头部和尾部的性能。

思路

目前存在的方法都会导致分类器的variance增大,以牺牲头部性能为代价来提升尾部性能。观察到尾部性能低表现为类间混淆度高和分类器variance高。因此提出RIDE可以同时减少分类器的bias和variance

首先使用了偏差-方差分解得到bias和var,下图为4种方法的对比,相对于baseline(CE)而言,红色代表性能下降,绿色代表性能提升。

  • 对于acc指标,之前的三种长尾方法相对于baseline来说都牺牲了Many-shot的性能,增加了Med和Few性能,但是RIDE方法同时提升了所有性能。

  • 对于bias来说,所有方法几乎没有改变Many-shot的值。对于Med和Few shot,RIDE的方法相对于其他方法减少的比例更大。

  • 对于variance,只有RIDE方法减少了,也证明了RIDE方法的稳定性和确定性。

图b展示了最容易混淆类的softmax值,也就是softmax概率中第二大的数(默认分类正确)。可见尾部类的混淆度较高,而且RIDE可以很好的降低各个shot的混淆度,从而增大acc。

方法

提出了一个多专家的方法RIDE:采用多个专家来减少模型方差,并采用额外的分布多样性损失来减少模型偏差

采用两阶段的优化过程,第一阶段使用分布多样性损失联合优化多个专家。第二阶段训练一个专家分配模块,为不确定的样本分配更多的专家

多专家框架

前几层网络作为多个专家的共享层,之后的网络层作为独立的专家。为了降低模型的复杂度,我们把每个专家过滤器的个数缩减为 1/4。在训练过程中,使用分布多样性损失。

分布多样性损失用来惩罚专家之间的相关性,引入了KL散度来实现分布的多样性,并结合对比损失中温度的概念。温度与类样本数有关,因此给予尾类较低的温度,从而在应用KL散度的分布中产生较高的尾类概率,鼓励尾类具有更多的多样性。

所以总体的损失为分类损失加上分布多样性损失

专家分配模块

该模块用来决定是否为测试样本分配新的专家共同决策。

具体方法为:重新构建了一个二分类模型,将当前专家识别错误并且下一个专家识别正确的样本视为正样本,其他视为负样本。

具体流程为:将原始输入正则化并经过几层全连接层,得到的结果和取Top zLogits做拼接,再经过几层全连接得到最终输出,其中z为预先设定的超参数。在测试阶段,我们就可以通过训练好的模型判断是否需要下一个专家参与决策。当多个专家参与时,使用多个专家的几何平均值做最终决策。

实验

在CIFAR-100-LT数据集上,两个专家就可以得到超越前人的效果并且模型复杂度也低于之前的模型,专家越多模型精度越高,并且是全部shot同时提升。

同样在iNaturalist上也获得了同样的效果。

消融实验

分别验证了专家数,分布多样性损失,专家分配模块,蒸馏的作用。结合自蒸馏步骤可以提升0.4%~0.8%的准确率。不知道专家数为4,不使用专家分配模块的效果是否会更好。

测试了专家数为34时,不同shot需要的专家数量。可见样本量越少的shot需要的专家数越多。

总结

对于之前长尾方法以头部性能为代价的看法,有没有可能是因为RIDE的方法总体ACC提升较大,导致了头部也比baseline提升了。并不能说明RIDE没有牺牲头部性能,而且RIDEMedFew shot提升的性能相对于头部要大很多。 多专家分配模块可以有效地减少计算复杂度,但是没有明确说明减少复杂度的同时是否会牺牲性能,从专家数为2的实验中大概能证实这点。

关注下方《学姐带你玩AI》🚀🚀🚀

回复“500”获取300+AI必读高分论文&讲解视频

码字不易,欢迎大家点赞评论收藏!


http://www.ppmy.cn/news/40553.html

相关文章

linux0.12-3-4

71–3.4-C与汇编程序的相互调用 71–3.4.1-C函数调用机制 76–3.4.2-在汇编程序中调用C函数 78–3.4.3-在C程序中调用汇编函数 3-4 C语言和汇编相互调用的 原因:为了效率,C语言和汇编之间会相互调用。 3-4-1 C函数调用 head.s如何跳转到main.c? 我们先…

RMAN-06023: no backup or copy of datafile 1 found to restore

参考文档: RMAN-06026 RMAN-20003 - During Restore From A Disk Backup to an Identically Cloned Host (Doc ID 763703.1) RMAN RESTORE FAILS WITH RMAN-06023 ALTHOUGH BACKUPS ARE AVAILABLE (Doc ID 965122.1) RDBMS 11.2.0.4 问题: 在异机还原数…

ansible自动运维——明白ansible的资产清单inventory

大家好,这里是天亮之前ict,本人网络工程大三在读小学生,拥有锐捷的ie和红帽的ce认证,这里我会定期跟新自动话运维的博客,希望能提高自己的技术的同时,也可以帮助到大家,另外大家可以关注我的其它…

文献管理软件Endnote、Mendeley、Zotero比较及选择,Zotero基础使用技巧

引言 大家好,我是比特桃。日常开发的项目分为两种,一种是成熟化的工程项目,只需要与具体的业务紧密结合及应用,难点也比较偏向于软件工程或者互联网高并发的方向。这种项目我们通常不会选择去查文献去寻找问题的解决办法&#xf…

前端实用js dom合集

1. 整个网页变为灰色主题,最外层加css样式:filter:grayscale(1) 黑色主题:filter:invert(1) 2.js剪辑视频片段制作gif动图: 效果:点击开始就开始录制,点击结束右边显示生成的gif动图 生成g…

尚硅谷大数据技术Hadoop教程-笔记06【Hadoop-生产调优手册】

视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】尚硅谷大数据技术Ha…

LOTO示波器电源环路增益分析客户实测

我们在之前有文章介绍过LOTO示波器信号源扫频测电源环路增益稳定性的方法和过程,可以参考演示视频如下: https://www.ixigua.com/7135738415382790663?logTaga843d537a27090d5117b 或者阅读对应的文章:《LOTO示波器 实测 开环增益频响曲线/电…

Pytorch构建ResNet-50V2

🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍦 参考文章地址: 365天深度学习训练营-第J2周:ResNet-50V2算法实战与解析 🍖 作者:K同学啊 一、ResNetV2与ResNet结构对比 改进点 (a)origi…