当前位置: 首页 > news >正文

ICCV 2023|通过慢学习和分类器对齐在预训练模型上进行持续学习

点击蓝字

cf3c18bfda6033beaa61634ece7e5f1c.jpeg

关注我们

AI TIME欢迎每一位AI爱好者的加入!

作者介绍

fcbd0a708ce7800360b81602045d70f1.png

张耕维

悉尼科技大学在读博士生,研究方向为持续学习

报告题目

通过慢学习和分类器对齐在预训练模型上进行持续学习

内容简介

持续学习研究的目标在于提高模型利用顺序到达的数据进行学习的能力。尽管大多数现有工作都是建立在从头开始学习的前提下的,越来越多的努力致力于融入预训练的好处。然而,如何让每个增量任务自适应地利用预训练知识,同时保持预训练提供的泛化性仍然是一个悬而未决的问题。在这项工作中,我们对预训练模型上的持续学习(CLPM)进行了广泛的分析,并将关键挑战归因于渐进式过拟合问题。观察到选择性地降低学习率几乎可以解决该问题对表示层的影响,我们提出了一种简单但极其有效的方法,称为带有分类器对齐的慢速学习器(SLCA),该方法通过对类分布进行建模并对齐来进一步改进分类层。在各种场景中,我们的方法为CLPM提供了实质性改进(例如,在Split CIFAR-100、Split ImageNet-R、Split CUB-200和Split Cars-196上分别提高了49.76%、50.05%、44.69%和40.16%),因此显著优于最先进的方法。基于这样一个强有力的基线,我们深入分析了关键因素和有希望的方向,以促进后续研究。

论文链接:https://arxiv.org/pdf/2303.05118.pdf

代码链接:https://github.com/GengDavid/SLCA

01

Background

持续学习表现为在顺序到来的数据上学习,增量式地更新模型。但是,神经网络自身的设计导致它进行持续学习时存在一个挑战,名为“灾难性遗忘问题”,这体现为模型在学习新的任务时,由于没有原来任务的数据,导致模型在旧任务上的性能显著下降。

当前主流的针对这个问题的解决方法有三类。Regularization,在网络参数更新的时候增加限制,使得网络在学习新任务的时候不影响之前的知识。Replay,在模型学习新任务的同时混合原来任务的少量数据,让模型能够学习新任务的同时兼顾旧任务。Network architecture,在模型训练的时候,独立网络中的参数,减少新知识更新对旧知识产生干扰的可能性。

另一方面,预训练模型对于下游任务的训练是非常重要的。目前最基本的方式是对训练模型进行微调(finetune)。也有参数高效调优的方式,诸如视觉提示调优、适配器调优、LoRA、SSF等,在部分单个下游任务上甚至优于微调。

02

Problem Formulation

相对于从头开始学习,当在预训练模型上进行持续学习时,θrps将在预训练模型的数据集上进行预训练,然后使用该模型在一系列新的数据集上进行更新。在引入预训练模型之后,“灾难性遗忘问题”可以延伸为“progressive overfitting”问题,它面临的挑战是如何保证从预训练数据Dpt中得到的泛化性在持续学习的过程中被很好地保留,同时还要兼顾持续学习过程中知识遗忘的问题。

03

Recent Works

近年来的工作如L2P [1]、DualPrompt [2]引入了prompt技术,解决了模型泛化能力损失的问题。但是实际上prompt也是被共享的,仍然存在遗忘问题。从之前工作的实验结果来看,基于prompt的方法优于基于微调的方法。然而,在本工作里,我们的发现结论并非如此。

e323d28401f867b30c24a297ce72e2a9.png

04

Continual Learning on a Pre-trained Model

Slow Learner is (Almost) All You Need?

在文章中,我们首先探讨了在持续学习的设置下,加入预训练之后基于微调的方法落后于基于提示方法的原因。我们发现关键在于学习率,传统基线的性能受到使用相对较大的学习率的严重限制。当对θrps使用小得多的学习率(0.0001,SGD优化器),而对θcls使用稍大的学习率(0.01)可以极大地提高传统基线的性能。

6b7cab9449ddaa57d0d695d27361544a.png

Effect of Pre-training Paradigm

另外,我们评估了预训练范式对下游持续学习的影响。如图所示,自监督预训练虽然在标签要求和上游持续学习方面更加现实,但通常会导致Seq FT与联合训练之间的性能差距比监督预训练更大。

4db3fc40293d6c0c92c53d1ede417d8a.png

Further Evaluation of Representation

接下来,我们进一步对表示层进行验证,发现在学习完所有增量任务后,使用持续学习的表示层联合训练所有类别的额外分类器几乎可以达到整个模型的联合训练性能,并且远远优于持续学习的表示层分类器。可见在利用慢学习的方式时,表示层的progressive overfitting问题已经近乎解决,而分类器还有很大提升空间。

2650f6977d8fb1989a8a3ba05b65d4b2.png

Slow Learner with Classifier Alignment

出现上述现象的原因在于,由于每一个任务的分类器是独立训练的,而测试时要求对所有类别给出唯一的分类结果,这就导致持续学习得到的分类器并不是最优的。所以我们进一步提出了分类器对齐模块。具体的做法是在训练过程中,每一个任务结束时计算并存储特征的mean与covariance。在测试之前,用特征的统计量构建高斯分布,根据此分布采样得到每个类别的特征,最后对分类器进行统一的进行微调,这就达到了对齐分类器的目的。

d7e5acb70815cd5608e71e9318946beb.png

此外,由于分类器在每个任务上是训练收敛的,那么进一步训练分类器会带来过拟合的问题。具体来讲,分类器的输出logits对应每一个类有预测值,我们将其写成模乘以单位向量的形式。当用cross-entropy loss进行优化时,会显著增加模长导致过拟合,于是我们借鉴了ICML’22上logit normalization [3]的工作,加入一个动态的temperature项,使得CE loss仅改变向量的方向,从而缓解过拟合的问题。

cee0397221cd716fcdacab3ef498d076.png

本文方法的整个算法流程如下图所示:

483d2bb83031328a019ce1b4046a4caf.png

05

Experiment Setups

我们在4个Benchmarks上进行了验证,包括Split CIFAR-100、Split ImageNet-R、Split CUB-200、Split Cars-196。每个benchmark考虑了不同的验证维度(见下表)。我们将每个数据集分成10个任务进行训练,评价指标包括Last-Acc (主要评价指标,模型学习完最后一个任务后在所有任务上的平均accuracy)以及 Inc-Acc。

7d8c9c380352abd3397c4e78556d3609.png

06

Overall Performance

本文方法与其他基线方法对比的实验结果如下图所示,可以看到,在Split CIFAR-100和Split ImageNet-R上,SL可以显著增强持续学习的性能,借助分类器对齐以及logit归一化,我们的方法明显优于L2P与DualPrompt。同样,在细粒度分类的Split CUB-200与Split Cars-196数据集上,本文所提方法表现也较好。

ee7e506e475516189edb9f2c3bcc4ddc.png

878d7aaaec843462f80770c7c9fdb965.png

07

Ablation Study

我们对提出的方法进行了广泛的消融实验,证明了更新representation层的必要性。另一方面,我们进一步证明了所提出的分类器对齐和逻辑归一化的有效性。

70272189aa7384e91c88eab413441e6a.png

08

Combine with other methods

我们进一步将Classifier Alignment加入现有的方法中,进一步证明了Classifier Alignment的有效性。

27fed484aa164f77892fcf46954a2ba7.png

09

Conclusion

首先,我们对这个研究方向进行了重新思考和基准测试,并且提供了一个简单但非常有效的基线,用于重新评估当前的进展和技术路线;其次,Slow Learner几乎可以解决表示层的渐进过拟合问题,分类器对齐进一步改进了分类层。最后,关于未来的方向,我们可以探索更多针对持续学习的预训练范式,更有效地结合参数高效的方法,以及结合上游的预训练和下游的持续学习。

10

Reference

[1] Learning to Prompt for Continual Learning, CVPR’22
[2]DualPrompt: Complementary Prompting for Rehearsal-free Continual Learning, ECCV’22
[3] Mitigating neural network overconfidence with logit normalization, ICML’22

整理:陈研

审核:张耕维

点击“阅读原文”跳转至00:22:07

可以查看回放哦!

往期精彩文章推荐

efa983b53214ca1e51660d5ea762f574.jpeg

记得关注我们呀!每天都有新知识!

 关于AI TIME 

AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。

迄今为止,AI TIME已经邀请了1300多位海内外讲者,举办了逾600场活动,超600万人次观看。

f525ff6b178810e4f1aa05a1093bfcc3.png

我知道你

在看

~

43944908ba072cc5c5ef79f9eaa6f144.gif

点击 阅读原文 查看回放!

相关文章:

ICCV 2023|通过慢学习和分类器对齐在预训练模型上进行持续学习

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 作者介绍 张耕维 悉尼科技大学在读博士生,研究方向为持续学习 报告题目 通过慢学习和分类器对齐在预训练模型上进行持续学习 内容简介 持续学习研究的目标在于提高模型利用顺序到达的数据进行学习的…...

蓝桥杯打卡Day5

文章目录 日志排序重复者 一、日志排序IO链接 本题思路:本题就是根据就是排序的知识点&#xff0c;在sort内部可以使用仿函数来改变此时排序规则。 #include <bits/stdc.h>const int N10010; int n; std::string logs[N];int main() {std::ios::sync_with_stdio(false)…...

QT for andriod

QT for andriod 开发 apk软件&#xff0c;因为一些特殊的原因&#xff0c;在这里简单的记录一哈自己开发apk的流程和心得。 首先说明我采用的环境有哪些&#xff1f; 1、QT的版本&#xff0c;个人建议5.15.2的版本及以上&#xff0c;我是用的5.15.2。 2、andriod studio 可以…...

【广州华锐互动】AR技术在配电系统运维中的应用

随着科技的不断发展&#xff0c;AR(增强现实)技术逐渐走进了我们的生活。在电力行业&#xff0c;AR技术的应用也为巡检工作带来了许多新突破&#xff0c;提高了巡检效率和安全性。本文将从以下几个方面探讨AR配电系统运维系统的新突破。 首先&#xff0c;AR技术可以实现虚拟巡检…...

TiDB 一栈式综合交易查询解决方案获“金鼎奖”优秀金融科技解决方案奖

日前&#xff0c;2023“金鼎奖”评选结果揭晓&#xff0c; 平凯星辰&#xff08;北京&#xff09;科技有限公司研发的 TiDB 一栈式综合交易查询解决方案获“金鼎奖”优秀金融科技解决方案奖 &#xff0c; 该方案已成功运用于 多家国有大行、城商行和头部保险企业 。 此次获奖再…...

《网络是怎样连接的》(六)

本文主要取材于 《网络是怎样连接的》 第六章。 目录 6.1 服务器概览 6.2 服务器的接收操作 6.3 Web服务器程序解释请求消息并作出响应 6.4 浏览器接收响应消息并显示内容 简述&#xff1a;本文主要内容是解释 网络包到达服务器之后&#xff0c;如何给客户端响应的。 服务…...

2023年高教社杯数学建模国赛 赛题浅析

2023年国赛如期而至&#xff0c;为了方便大家尽快确定选题&#xff0c;这里将对赛题进行浅析&#xff0c;以分析赛题的主要难点、出题思路以及选择之后可能遇到的难点进行说明&#xff0c;方便大家尽快确定选题。 难度排序 B>A>C 选题人数 C>A>B (预估结果&…...

使用QT操作Excel 表格的常用方法

VBA 简介 Microsoft Office软件通常使用VBA来扩展Windows的应用程序功能&#xff0c;Visual Basic for Applications&#xff08;VBA&#xff09;是一种Visual Basic的一种宏语言。 在VBA的参考手册中就可以看到具体函数、属性的用法&#xff0c;Qt操作Excel主要通过 QAxObj…...

vue前后端端口不一致解决方案

在config index.js文件中 引入如下代码即可 const path require(path) const devEnv require(./dev.env) module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: devEnv.OPEN_PROXY false ? {} : {/api: {target: http://localhos…...

springcloudSeata处理分布式事务之1.7.0

1.5.0之后版本发生了很大改变 1.seata安装 1.1官网地址 http://seata.io/zh-cn/ 1.2下载地址 https://github.com/seata/seata/releases 下载的是seata-server-1.7.0.zip 1.3seata相关配置的修改 seata-server-1.7.0\seata\conf下的application.yml进行修改 server:por…...

每日刷题|回溯法解决全排列问题

​ 食用指南&#xff1a;本文为作者刷题中认为有必要记录的题目 前置知识&#xff1a;回溯法经典问题之组合 ♈️今日夜电波&#xff1a;爱人错过—告五人 1:11 ━━━━━━️&#x1f49f;──────── 4:52 …...

10-JVM调优工具详解

上一篇&#xff1a;09-JVM垃圾收集底层算法实现 前置启动程序 事先启动一个web应用程序&#xff0c;用jps查看其进程id&#xff0c;接着用各种jdk自带命令优化应用 1.Jmap 此命令可以用来查看内存信息&#xff0c;实例个数以及占用内存大小 jmap -histo 14660 #查看历史…...

东方博易oj——3119 - 约瑟夫问题2(链表)

文章目录 题目题目描述输入输出样例输入 输出标签 AC代码 题目 题目描述 约瑟夫问题&#xff1a;有 &#xff4e; &#xff4e; &#xff4e;只猴子&#xff0c;按顺时针方向围成一圈选大王&#xff08;编号从 &#xff11; &#xff11; &#xff11;到 &#xff4e; &#…...

C++,day0907

#include <iostream>using namespace std; struct stu { private:int num; private:double score[32];public:void setNum(){cout <<"请输入学生人数:";cin >>num;}void input(){cout<<"请输入学生的成绩:"<<endl;for(int i…...

孤儿僵尸守护进程的简单理解

孤儿进程&#xff1a; 一个父进程退出&#xff0c;而它的一个或多个子进程还在运行&#xff0c;那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养&#xff0c;并由init进程对它们完成状态收集工作。 如何模仿一个孤儿进程&#xff1a; 答案是&#xff1a; kill 父…...

学习笔记——Java入门第一季

1.1 Java的介绍与前景 Java语言最早期的制作者&#xff1a;James Gosling&#xff08;詹姆斯高斯林&#xff09; 1995年5月23日&#xff0c;Sun Microsystems公司宣布Java语言诞生。 1.2 Java的特性与版本 跨平台 开源&#xff08;开放源代码&#xff09; Java代码&#xff…...

更改注册表exe值后的惨痛经历

装软件时由于执行性文件打不开&#xff0c;搜索教程更改了exefile的值&#xff0c;最后整个电脑崩了&#xff0c;所有EXE都打不开&#xff0c;折腾了5个小时&#xff0c;什么办法都试了&#xff0c;甚至重置电脑都不让&#xff0c;打算拿电脑城修电脑了&#xff0c;突然搜到了一…...

stable diffusion实践操作-LyCORIS

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、LyCORIS是什么&#xff1f;二、使用步骤1.下载2.安装3 使用 二、整理模型1.LoHa-v1.0-pynoise 总结 前言 LyCORIS&#xff0c;可以理解为lora的加强版本。 LyCORIS - Lora beYond Conventional methods,…...

无需公网IP教你如何外网远程访问管家婆ERP进销存

文章目录 前言 1.管家婆服务2. 内网穿透2.1 安装cpolar内网穿透2.2 设置远程访问 3. 固定访问地址4. 配置固定公网访问地址 前言 管家婆辉煌系列产品是中小企业进销存、财务管理一体化的典范软件&#xff0c;历经十余年市场的洗礼&#xff0c;深受广大中小企业的欢迎&#xff…...

Swift使用编解码库Codable

Codable 是 Swift 引入的全新的编解码库&#xff0c;使开发者更方便的解析JSON 或 plist 文件。支持枚举、结构体和类。 Codable协议定义 Codable代表一个同时符合 Decodable 和 Encodable 协议的类型&#xff0c;即可解码且可编码的类型。 typealias Codable Decodable &a…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

LRU 缓存机制详解与实现(Java版) + 力扣解决

&#x1f4cc; LRU 缓存机制详解与实现&#xff08;Java版&#xff09; 一、&#x1f4d6; 问题背景 在日常开发中&#xff0c;我们经常会使用 缓存&#xff08;Cache&#xff09; 来提升性能。但由于内存有限&#xff0c;缓存不可能无限增长&#xff0c;于是需要策略决定&am…...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;采用DevEco Studio实现&#xff0c;包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...