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

来源:投稿 作者: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必读高分论文&讲解视频

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/9623.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nuxt.js 在IE浏览器||其他浏览不识别document/window 情况处理

1 第一步注册到nuxt.config.js文件 2 第二步建立js 文件 import Vue from vue (function(){ if(process.client){ console.log(process.client) }else{ console.log(process.client) } if (!!window.ActiveXObject || "ActiveXObject" i…

Stable Diffusion:一种新型的深度学习AIGC模型

潜在扩散模型 | AIGC| Diffusion Model 图片感知压缩 | GAN | Stable Diffusion 随着生成型AI技术的能力提升,越来越多的注意力放在了通过AI模型提升研发效率上。业内比较火的AI模型有很多,比如画图神器Midjourney、用途多样的Stable Diffusion&#…

国货之光!打工人必装的8个软件,你都用过没?|办公|效率|创作

给大家分享8款非常强大,但知名度不高的国产软件,每一个都堪称精品,喜欢的话记得点赞和关注哦~ 第一款是 火绒安全软件 火绒安全软件没有任何,具有推广性质的弹窗、没有捆绑打扰用户的行为;占用资源极少,&a…

腾讯空降测试工程师,绩效次次拿S,真是砂纸擦屁股,给我露了一手啊

​上周我们公司的绩效面谈全部结束了,每年到这个时间点就是打绩效的时候了,对于职场打工人来说绩效绝对是最重要的事情之一,原因也很简单:奖金、晋升、涨薪都和它有关系。 比如下面这个美团员工在脉脉上的自曝就很凄凉&#xff1…

Python 操作 MongoDB 详解

嗨害大家好鸭!我是芝士❤ 一、前言 MongoDB属于 NoSQL(非关系型数据库), 是一个基于分布式文件存储的开源数据库系统。 二、操作 MongoDB 1. 安装 pymongo python 使用第三方库来连接操作 MongoDB, 所以我们首先安…

Redis的SDS、intSet、Dict、ZipList、QuickList、RedisObject及五种数据结构详解

动态字符串 我们都知道Redis中保存的key是字符串,value 往往是字符串或者字符串的集合。可见字符串是Redis中最常用的一种数据结构 不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题: 1.获取字符串长度需要进行计算 2.…

网络安全之入侵检测

目录 网络安全之入侵检测 入侵检测经典理论 经典检测模型 入侵检测作用与原理 意义 异常检测模型(Anomaly Detection) 误用检测模型(Misuse Detection) 经典特征案例 ​编辑自定义签名 ​编辑 签名检查过程 检测生命周期…

http请求类RestTemplate

RestTemplate类1.1 初识RestTemplate1.2 注入方式1.3 常用方法1.1 初识RestTemplate RestTemplate类是一个用于发送HTTP请求并获取HTTP响应的模板类。它可以被用于执行GET,POST,PUT,DELETE等各种HTTP方法,同时还支持处理请求参数…

微信小程序python+vue今日菜谱美食点赞收藏评价系统

谈到外出就餐,我们除了怕排队,也怕这家餐厅的服务员不够用,没人为我们点餐,那么一餐饭排队一小时,点餐恐怕也要花个半小时,这样不仅给消费者的用餐体验大打折扣同时也给商家的口碑造成了严重负面的影响&…

KD-2125地下电缆测试仪

一、产品概述 管线探测仪是一套高性能地下金属管线探测系统,由信号发射机和接收机组成,可用于金属管线、地下电缆的路径探测、管线普查和深度测量,配合多种选配附件,可以进行唯一性鉴别,以及管道绝缘破损和部分类型电缆…

在Win10安装pytorch3d

Pytorch3d 这是一个为使用Pytorch的3D计算机视觉研究提供的高效可重用的组件 主要特点包括: 用于储存和操作三角形网格的数据结构三角形网格的高效操作(投影变换、图形卷积、采样、损失函数)可区分的网格渲染器可以通过隐式函数进行新试图…

Object.defineProperty()和 Proxy的区别

众所周知,Object.defineProperty()和 Proxy的区别也是Vue2和Vue3响应式的区别,现在就聊一下为什么Proxy会替代Object.defineProperty() Object.defineProperty(): Object.defineProperty() 方法会直接在一个对象上定义一个新属性&#xff0…

字节8年测试经验,送给想要学习自动化测试的同学6条建议

我的职业生涯开始和大多数测试人一样,开始接触都是纯功能界面测试。那时候在一家电商公司做测试,做了有一段时间,熟悉产品的业务流程以及熟练测试工作流程规范之后,效率提高了,工作比较轻松,也得到了更好的…

MyBatisPlus-DQL编程控制

MyBatisPlus-DQL编程控制3,DQL编程控制3.1 条件查询3.1.1 条件查询的类3.1.2 环境构建3.1.3 构建条件查询3.1.4 多条件构建3.1.5 null判定3.2 查询投影3.2.1 查询指定字段3.2.2 聚合查询3.2.3 分组查询3.3 查询条件3.3.1 等值查询3.3.2 范围查询3.3.3 模糊查询3.3.4…

堆来咯!!!

堆是什么? 是土堆吗? 那当然不是啦~ 堆是一种被看作完全二叉树的数组。 那么什么是完全二叉树呢? 如果二叉树中除去最后一层节点为满二叉树,且最后一层的结点依次从左到右分布,则此二叉树被称为完全二叉树。 堆的特…

中国版的ChatGPT,你最看好谁?

一、百度:文心一言升级中,未来支持开源 3月16日,百度正式推出国内首款生成式AI产品“文心一言”,可支持文学创作、文案创作、数理推算、多模态生成等功能。 “文心一言”基于全栈自研的AI基础设施进行学习和训练: ①…

selenium自动化测试面试题【含答案】

目录 1、selenium中如何判断元素是否存在? 2、selenium中hidden或者是display = none的元素是否可以定位到? 3、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的? 4、如何提高s…

redis持久化方式区别

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序…

springboot实现修改用户信息功能

目录 1、UserEntity层 2、UserMapper层 3、UserService层 4、UserController类 5、Postman测试 要实现修改用户信息的功能,需要编写对应的代码: 如: 在UserEntity中定义用户实体类的属性。 在UserMapper中编写修改用户的SQL语句&#…

极光笔记 | 如何在Shopify中使用EngageLab (下)

Sendgird发布的《2022 Global Messaging Engagement Report》中揭示了世界各地的用户更喜欢用哪种方式与品牌互动,结论是:“电子邮件仍然是第一名(短信紧随其后)”。4800多名受访者中,有18%的人将电子邮件列为他们最常…