论文总结《A Closer Look at Few-shot Classification Again》

news/2024/11/19 22:43:26/

原文链接

A Closer Look at Few-shot Classification Again

摘要

这篇文章主要探讨了在少样本图像分类问题中,training algorithm 和 adaptation algorithm的相关性问题。给出了training algorithm和adaptation algorithm是完全不想关的,这意味着我们在设计少样本学习算法时,可以分别设计模型的training阶段和adaptation阶段。同时文章也在训练集规模、监督学习和自监督学习在少样本学习中的性能、以及标准finetune在少样本图像分类adaptation阶段对模型影响的问题。

Training 和 Adaptation 算法完全不相关

在这里插入图片描述

如图,行为training算法,列为adaptation算法。对于行,表示的是不论采用什么样的training算法,adaptation算法对应的性能偏序关系都是一样的;对于列,表示的是不论采用什么样的adaptation算法,training算法对于的性能偏序关系都一样。实验说明两个算法是完全不想关的,因此对于未来更优模型的研究,我们可以分别设计training和adaptation阶段的算法。

training阶段让模型“看到”更多的类使得模型更能适应新类别

在这里插入图片描述

如图,在训练算法和适应算法不变的情况下,对十种不同的训练集进行adaptation。如Figure1,2所示,training阶段增加训练的class数量对性能的提升比增加sample的数量更加高效。

自监督学习在少样本图像分类中表现优于监督学习

在这里插入图片描述

Figure3每一个点表示的是监督学习模型,Figure4每一个点表示自监督学习模型。Figure3所示,监督学习在性能更好的模型下,通过少样本的调整后,性能反而效果不佳,这说明性能更优的监督模型一定程度上在训练集上过拟合了。

反观自监督学习,自监督学习模型本身的性能和通过少样本微调过后的性能基本呈现线性关系,因此可以说在少样本图像分类问题中,将自监督学习作为backbone网络优于将监督学习作为backbone网络。

training阶段增加sample数量对性能的提升优于增加class数量

在这里插入图片描述
可以看到,如果固定Support set size,不同的class数量对性能的影响较小。而增加support set size对于性能的影响较大。

vanilla Finetune效果最好

与之前的一些研究得出的在少样本上Finetune会导致模型的过拟合不同,本文通过实验反而表明,Vanilla Finetune反而带来最佳性能,并且backbone和linear head采用不同的learning rate效果更优。

讨论

文章分析得出,一味的增加训练数据规模并不是一劳永逸的解决方法,我们可以多关注训练知识和调整所需的知识的对齐。如何不像finetune那样暴力的自适应算法,用一种更加精准的对模型进行微调的方法是我们未来可以研究的一点。


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

相关文章

系统架构设计高级技能 · 构件与中间件技术

点击进入系列文章目录 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 系统架构设计高级技能 构件与中间件技术 一、构件的定义二、构件系统架构特性三…

前端面试话术集锦第 14 篇:高频考点(React常考基础知识点)

这是记录前端面试的话术集锦第十四篇博文——高频考点(React常考基础知识点),我会不断更新该博文。❗❗❗ 1. 生命周期 在V16版本中引入了Fiber机制。这个机制一定程度上的影响了部分生命周期的调用,并且也引入了新的2个API来解决问题。 在之前的版本中,如果你拥有一个很…

[k8s] kubectl port-forward 和kubectl expose的区别

kubectl port-forward 和 kubectl expose 是 Kubernetes 命令行工具 kubectl 提供的两种不同方式来公开服务。 kubectl port-forward kubectl port-forward 命令用于在本地主机和集群内部的 Pod 之间建立一个临时的端口转发通道。 该命令将本地机器上的一个端口绑定到集群内部…

Android开源 日志框架 LogDog V2.3.1

目录 一、简介 二、下载使用 添加jitpack 仓库 添加依赖: 三、更改 1、 LogDogV2.3.1初始化: 2、通过上面的初始化 ,已经知道IJsonEngine 优化了泛型参数,采用 Object/Any 3、优化空异常的判断,哪怕打印变量是NULL LogDog会打印“nul…

go Gorm连接数据库,并实现增删改查操作

Gorm 1. 准备工作 首先进入终端下载我们需要的包(确保go和mysql安装完成,并设置了环境变量) go get -u gorm.io/driver/mysql go get -u gorm.io/gorm有两份官方文档有对 GORM 更详细的讲解。 创建 | GORM - The fantastic ORM library f…

怎么给网络加速

首先,按winr,调出运行窗口。 输入cmd,回车,再输入gpedit.msc,调出本地组策略编辑器。 点击计算机配置下的管理模版。 再点击网络。 再点击Qos数据包计划程序。 再点击限制可保留宽带。 选择已启用,再把带宽…

def和class的区别

fed浅谈Python内 def 与 class 的区别--知识点整理(B站 - BV11g411w73x)_pythonclass和def的区别_奋进的小咸鱼的博客-CSDN博客def 是用于函数的封装代码如下:def jianfa(a,b): print(a-b) jianfa(100,9)输出结果:91class可用于多…

浅谈C++|构造.析构函数篇

一对象的初始化和处理 1.1构造函数和析构函数 C拥有构造函数和析构函数,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构,编译器提供…