来源:投稿 作者: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 z
的Logits
做拼接,再经过几层全连接得到最终输出,其中z
为预先设定的超参数。在测试阶段,我们就可以通过训练好的模型判断是否需要下一个专家参与决策。当多个专家参与时,使用多个专家的几何平均值做最终决策。
实验
在CIFAR-100-LT数据集上,两个专家就可以得到超越前人的效果并且模型复杂度也低于之前的模型,专家越多模型精度越高,并且是全部shot同时提升。
同样在iNaturalist上也获得了同样的效果。
消融实验
分别验证了专家数,分布多样性损失,专家分配模块,蒸馏的作用。结合自蒸馏步骤可以提升0.4%~0.8%
的准确率。不知道专家数为4
,不使用专家分配模块的效果是否会更好。
测试了专家数为3
和4
时,不同shot需要的专家数量。可见样本量越少的shot
需要的专家数越多。
总结
对于之前长尾方法以头部性能为代价的看法,有没有可能是因为RIDE
的方法总体ACC
提升较大,导致了头部也比baseline
提升了。并不能说明RIDE
没有牺牲头部性能,而且RIDE
的Med
和Few shot
提升的性能相对于头部要大很多。 多专家分配模块可以有效地减少计算复杂度,但是没有明确说明减少复杂度的同时是否会牺牲性能,从专家数为2的实验中大概能证实这点。
关注下方《学姐带你玩AI》🚀🚀🚀
回复“500”获取300+AI必读高分论文&讲解视频
码字不易,欢迎大家点赞评论收藏!