满足不同下游任务特征需求!Sea AI Lab 提出多粒度自监督学习框架Mugs,刷新多项SOTA(1)

简介: 满足不同下游任务特征需求!Sea AI Lab 提出多粒度自监督学习框架Mugs,刷新多项SOTA

由颜水成老师带领的 Sea AI Lab 提出了一种多粒度自监督学习框架 Mugs[1],用以学习不同粒度的非监督特征,从而满足不同下游任务对不同粒度甚至多粒度特征的需求。在相同的实验设置下(相同数据集和模型等),该方法大幅超越了目前最好的自监督学习方法。在没有使用额外数据的情况下,该方法在 ImageNet 数据集上取得了目前最高的线性评估准确率(linear probing accuracy)82.1% 以及最高的 KNN 分类准确率 80.3%。

详细结果请参看 paperswithcode 的Leaderboard:https://paperswithcode.com/sota/self-supervised-image-classification-on?p=mugs-a-multi-granular-self-supervised
一:背景和动机
通过精心设计上游任务(pretext task),自监督学习从这些上游任务上直接拿到无监督数据的伪标签,并且利用这些伪标签训练深度学习模型。实验结果表明通过自监督学习到的特征在很多下游任务上展现出比常规监督学习更强的迁移性能和泛化性能。目前大量的无标签数据可以在互联网上获得,自监督学习已经展示出比常规监督学习更大的潜能。

在自监督学习中,许多下游任务其实需要不同粒度的特征,例如粗粒的特征或者细粒度的特征。举例来说,常规的分类问题一般会用更多的粗粒度特征,而细粒度的分类问题则需要更多的细粒度特征。更重要的是,在实际应用中,许多下游任务需要多粒度的特征来处理数据中的复杂结构。一个典型的例子是 ImageNet 上的分类问题。首先,注意到 ImageNet 数据非常贴近实际数据,拥有类别上的层级结构,也就是很多小类拥有相似的属性从属于一个大类(例如犬科类里面包含很多不同品种的狗和狼)。这样一来,为了区分不同的大类别,例如犬科类和鸟类,我们就需要粗粒度的特征。为了进一步区分更细的类别,譬如狗和狼,我们则需要稍微细粒度一点的特征。最后为了细分不同品种的狗,我们需要更加细粒度的特征。许多其他应用,例如物体检测与识别,也面临着类似的多粒度特征需求。

然而,现在的自监督学习方法一般都只侧重于单粒度特征的学习。譬如,最经典的对比学习 MoCo[2] 构建实例识别任务来区分单个实例。这样一来,MoCo 侧重学习更多实例级的细粒度特征,但是它不考虑数据中粗粒度的类别结构(cluster structure)。另外一类具有代表性的自监督学习是基于聚类的自监督学习,包含 DINO[3],DeepCluster[4]等。这类方法将类似的实例聚到同一个虚拟类别中,从而学习聚类级别的粗粒度特性。然而,它不能很好地处理对细粒度特性有所需求的下游任务。因此,在下游任务的特征偏好未知的情况下,我们应该构建一个学习多粒度特征的自监督学习框架,以便尽可能多地处理不同下游任务。

为了解决上述问题,该研究提出了一种多粒度自监督学习 (Mugs) 框架来显示地学习视觉数据的多粒度特征。具体来说,Mugs 主要学习三种不同粒度特征:

  • 第一是 instance-level(实例级别的)细粒度特征,用于将不同的实例区分开;
  • 第二是稍微粗粒度的 local-group 数据特征。这类特征主要是为了保证非常相似的样本能够聚集成小簇,从而形成一个 local-group 上的整体语义(例如对应到非常相似的狗)。这样一来,local-group 特征则会将第一类过于分散的实例特征进行高阶语义的重新聚集,也就让相似的样本享有相似的特征;
  • 第三类是数据中更加粗粒度的 group 特征(例如犬科特征)。这类特征是保证相似的 local-groups 能够靠的更近,从而保证数据整体语义的一致性。通过这样的层级数据语义学习,该方法能够学到更贴合实际应用的特征,从而更加满足于不同下游任务对不同粒度特征的需求。



二:方法
如前面所述,该方法主要通过三种不同粒度的监督来学习三种不同粒度的特征, 包含 1) instance-level 细粒度特征,2)稍微粗粒度的 local-group 特征, 3)粗粒度的 group 特征。下面将介绍这三种特征的具体学习方法。

图一:Mugs 自监督学习整体框架。(a)展示了总体框架。对于每幅图像,Mugs 将两次随机增强的样本输入学生和教师骨干网络。然后, Mugs 采用三种不同粒度的监督 / 损失: 1)instance discrimination loss, 2)local-group discrimination loss,3) group discrimination loss。(b)展示了学生和老师中都有的 local-group discrimination 模块。这个模块首先平均所有 patch tokens 得到 average token,并从一个 buffer 里面找到当前 average token 的 top-k 邻居。然后,它使用一个小的 transformer 来聚合 average token 和它的 k 个邻居,从而获得一个 local group feature(即新的 class token)。

A). instance-level 细粒度特征学习
和对比学习 MoCo 一样,Mugs 通过 instance discrimination supervision(实例判别监督)来分散不同的实例特征,从而监督实例级别的细粒度特征学习。

具体来说,给定样本, Mugs 进行两次数据增强得到, 然后分别送进老师和学生 backbone 得到接着 Mugs 把里面的 class token 分别送入对应的投影网络最后,Mugs 将学生网络对应的输出进一步输入到一个预测网络用来预测老师的输出。为了达到让老师和学生输出一致的目的,Mugs 使用 infoNCE 损失函数来实现:


其中,分别对应老师和学生分支最后的输出。代表的是一个缓存 buffer,用于存贮过往的这样一来,正如图一中的效果图所示,Mugs 把同一个图片对应的特征拉进,把不同图片的特征推远,从而分散开 instance-level 的特征。

B). 稍微粗粒度的 local-group 特征学习
如前所述,细粒度特征通常不足以满足不同的下游任务(例如分类),因为缺乏足够的高级数据语义。为了学习更高级别的细粒度(即稍微粗粒度)特征,这里也称为 local-group feature,Mugs 提出了一种新颖而有效的 local-group supervision。直观地讲,如图一中第三个球面所示,这种监督鼓励数据特征具有小但分散的 local-group 结构。目的是保证高度相似的样本能够在特征空间上聚集,避免前面所介绍的 instance discrimination supervision 将相似的样本推得过远,从而避免破坏一定的语义。这样一来,local-group supervision 有助于捕获数据中的更高级别语义。接下来将首先介绍其细节,然后更加详细地讨论它的好处。

给定两个数据增广后的样本, 假设老师和学生骨干网络得到如图一中的子图(b)所示,Mugs 把里面的 patch tokens 分别进行平均池化得到在另一方面,Mugs 使用一个 buffer  以先进先出的方式来保存过往的接着,Mugs 分别为当前的里面找到它们对应的 top-k 邻居然后,Mugs 借助一个小的 transformer 将融合成一个 local-group feature:


其中,代表的是一个两层的 transformer:它的 input class token 是,input patch tokens 是,输出 class token有着同样的功能。因为和它的 top-k 邻居很相似,它们一起组成一个 local-group。因此,它们的融合也被称为的 local-group feature。最后 Mugs 拉进同一张图片的两个数据增强的 local-group feature  ,并且推远不同图片的 local-group feature:


其中,分别对应老师和学生的投影网络。代表学生网络的预测网络,代表一个缓存 buffer,用于存贮过往的这样一来,正如图一中的第三个球面特征效果图所示,Mugs 将分散的特征聚集为小的聚类中心,从而学习到稍微粗粒度的 local-group 特征。

这种 local-group discrimination supervision 给 Mugs 带来两方面的好处。

  1. 它是上述 instance discrimination supervision 的有效补充。针对同一张图片的两个数据增强后的样本,这种监督要求这两个样本的 local-group 相同。这意味着除了样本本身对齐之外,它们对应的邻居也应该很好地对齐。这种邻居对齐一个更具挑战性的对齐问题,也增强了更高级别的 local-group 语义对齐。
  2. 这种监督鼓励高度相似的样本形成 local-group,并将不同的 local-groups 分散开来,从而提高了特征的语义判别能力。这是因为 a)这种监督所寻求的邻居数目 k 非常小(大约 10),这样在同一 local-group 的样本高度相似,有助于形成非常紧凑的 local-group; b)这种监督进一步将不同的 local-groups 分开。通过这两个方面,这种 local-group 通过考虑数据中的 local-group 结构,促进了更高级别的细粒度特征学习,有效地补充了 instance discrimination supervision。



相关文章
|
1天前
|
人工智能 安全 决策智能
OpenAI推出实验性“Swarm”框架,引发关于AI驱动自动化的争论
OpenAI推出实验性“Swarm”框架,引发关于AI驱动自动化的争论
|
4天前
|
人工智能 开发框架 Java
总计 30 万奖金,Spring AI Alibaba 应用框架挑战赛开赛
Spring AI Alibaba 应用框架挑战赛邀请广大开发者参与开源项目的共建,助力项目快速发展,掌握 AI 应用开发模式。大赛分为《支持 Spring AI Alibaba 应用可视化调试与追踪本地工具》和《基于 Flow 的 AI 编排机制设计与实现》两个赛道,总计 30 万奖金。
|
5天前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
近期,阿里云重磅发布了首款面向 Java 开发者的开源 AI 应用开发框架:Spring AI Alibaba(项目 Github 仓库地址:alibaba/spring-ai-alibaba),Spring AI Alibaba 项目基于 Spring AI 构建,是阿里云通义系列模型及服务在 Java AI 应用开发领域的最佳实践,提供高层次的 AI API 抽象与云原生基础设施集成方案,帮助开发者快速构建 AI 应用。本文将详细介绍 Spring AI Alibaba 的核心特性,并通过「智能机票助手」的示例直观的展示 Spring AI Alibaba 开发 AI 应用的便利性。示例源
|
27天前
|
存储 人工智能 测试技术
Minstrel自动生成结构化提示,让AI为AI写提示词的多代理提示生成框架
在人工智能迅速发展的背景下,有效利用大型语言模型(LLMs)成为重要议题。9月发布的这篇论文提出了LangGPT结构化提示框架和Minstrel多代理提示生成系统,旨在帮助非AI专家更好地使用LLMs。LangGPT通过模块化设计提高提示的泛化能力和可重用性,Minstrel则通过多代理协作自动生成高质量提示。实验结果显示,这两种方法显著提升了LLMs的性能,特别是在大规模模型上效果显著。
60 2
Minstrel自动生成结构化提示,让AI为AI写提示词的多代理提示生成框架
|
12天前
|
数据采集 人工智能 自然语言处理
Python实时查询股票API的FinanceAgent框架构建股票(美股/A股/港股)AI Agent
金融领域Finance AI Agents方面的工作,发现很多行业需求和用户输入的 query都是和查询股价/行情/指数/财报汇总/金融理财建议相关。如果需要准确的 金融实时数据就不能只依赖LLM 来生成了。常规的方案包括 RAG (包括调用API )再把对应数据和prompt 一起拼接送给大模型来做文本生成。稳定的一些商业机构的金融数据API基本都是收费的,如果是以科研和demo性质有一些开放爬虫API可以使用。这里主要介绍一下 FinanceAgent,github地址 https://github.com/AI-Hub-Admin/FinanceAgent
|
10天前
|
人工智能 Java API
阿里云开源 AI 应用开发框架:Spring AI Alibaba
阿里云开源 Spring AI Alibaba,旨在帮助 Java 开发者快速构建 AI 应用,共同构建物理新世界。
|
14天前
|
人工智能 缓存 Java
深入解析Spring AI框架:在Java应用中实现智能化交互的关键
【10月更文挑战第12天】Spring AI 是 Spring 框架家族的新成员,旨在满足 Java 应用程序对人工智能集成的需求。它支持自然语言处理、图像识别等多种 AI 技术,并提供与云服务(如 OpenAI、Azure Cognitive Services)及本地模型的无缝集成。通过简单的配置和编码,开发者可轻松实现 AI 功能,同时应对模型切换、数据安全及性能优化等挑战。
|
1月前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
1321 11
|
1月前
|
存储 人工智能 算法
AI伦理学:建立可信的智能系统框架
【9月更文挑战第26天】随着AI技术的迅猛发展,其在各领域的应用日益广泛,但也带来了算法偏见、数据隐私泄露、就业替代等伦理和法律挑战。本文探讨AI伦理学的核心议题,包括数据隐私保护、算法公平性与透明度、机器决策责任归属及对就业市场的影响,并提出建立可信智能系统框架的建议,如强化法律法规、技术创新、建立监督机制、行业自律和公众教育,以确保AI技术的可持续发展和社会接受。
|
16天前
|
机器学习/深度学习 人工智能 算法
【AI系统】AI 框架与编译器的作用
AI框架如PyTorch和TensorFlow提供丰富的API,简化神经网络模型的实现与训练,抽象硬件操作并自动管理内存。AI编译器将高级语言编写的模型转换为硬件可执行代码,通过多层次优化提升性能。这使得算法工程师可以专注于模型设计与创新,而无需关注底层计算细节。AI框架和编译器不仅提高开发效率,还能充分利用硬件资源,是推动AI系统性能提升的关键技术。访问昇腾社区官网或下载APP,获取更多AI学习资源和参与各类活动。
32 0