ICCV 2023

2023-11-19

点击蓝字

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

点击 阅读原文 查看回放!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ICCV 2023 的相关文章

  • Nacos、ZooKeeper和Dubbo的区别

    Nacos ZooKeeper和Dubbo是三个不同的分布式系统组件 它们之间有以下几点区别 功能定位 Nacos主要提供服务发现 配置管理和服务治理等功能 而ZooKeeper主要是分布式协调服务 提供了分布式锁 分布式队列等原语 Dub
  • 本地部署LLaMA-中文LoRA部署详细说明

    在Ubuntu18 04 部署中文LLaMA模型 环境准备 硬件环境 AMD 5950X 128GB RAM RTX 3090 24G VRAM 操作系统 Ubuntu 18 04 编译环境 可选 llama cpp 编译 cd llama
  • GoJS学习

    简介 GoJS是一个可视化JavaScript库 用于浏览器中创建交互图形 比如流程图 树图 关系图 力导图等等 GoJS不依赖于任何JS库或框架 例如bootstrap jquery等 可与任何HTML或JS框架配合工作 甚至可以不用框架
  • Cuda 代码中的 函数前缀 device global host 使用

    众所周知 CUDA并行可以使代码加速很多倍 其文件类型为 cu 结尾 在编写cu 文件时 常用的函数前缀关键字有 device global host host C或者C 中相同 是由CPU调用 由CPU执行的函数 global 表示一个内
  • 为啥国内互联网公司都用centos而不是ubuntu?

    一直以来都很好奇ubuntu和centos有啥区别 上学时接触的都是ubuntu 自己每次装virtual box的时候都会下个ubuntu 但是公司的服务器上装的都是centos 今天查了下知乎网友的精彩回答 呵呵 简单总结下主要有几个原
  • 解释执行与编译执行语言有什么区别?

    一 主体不同 1 编译执行 由编译程序将目标代码一次性编译成目标程序 再由机器运行目标程序 2 解释执行 将源语言直接作为源程序输入 解释执行 解释一句后就提交计算机执行一句 并不形成目标程序 二 优势不同 1 编译执行 相比解释执行编译执
  • 常用的偏微分方程

    偏微分方程通常包含两个以上的自变量 若自变量同时间相关 或者无关 称其为发展型 或者稳态 的 下面 我们罗列出一些典型的偏微分方程 如 热传导方程 一阶双曲守恒律方程 二阶波动方程 椭圆型偏微分方程等 抛物型偏微分方程通常刻画 个物理系统的
  • 前端学科面试题大全

    作用域和值类型引用类型的传递 变量作用域 作用域变量访问区域 变量值存在栈中 变量赋值相当于值赋值 值传递与引用传递有哪些区别 函数内部 变量会先声明 形式参数变量声明提升 整个函数体有var声明的变量 如果没有访问全局定义的num2 函数

随机推荐

  • 服务器环境初始化配置

    工程实践经验积累 服务器环境初始化配置 1 新建环境 新建环境 是为了使自己的程序在一个相对独立的环境中运行 不影响服务器上其他用户 并不受其他用户影响 新建环境的语句为 conda create n your env name pytho
  • 【Unity Shader】屏幕后处理1.0:调整亮度/饱和度/对比度

    1 Unity中实现屏幕特效的基本步骤 什么叫屏幕后处理 Screen post processing effects 渲染完整个场景得到屏幕图像后对图像进行一系列操作 实现各种屏幕特效 这一步我们可以添加很多例如景深 Depth of F
  • session销毁

    session invalidate session invalidate的销毁是把这个session所带的用户彻底的销毁 这个session跟用户已经紧密联合在一起 所以就一起销毁了 这样就算换了个session 也是登陆不了的 以前我的
  • 设计模式之享元模式

    享元模式 就是共享技术 对于系统中存在大量相同的对象 把他们抽取成一个对象放在缓存中进行使用 这样可以大大节省系统资源 例如 围棋棋盘上有两种棋子 一个是黑子 一个是白子 如果在下棋的时候每下一个棋子就要new一个棋子对象 那么就会有大量的
  • C#比较两个list集合,两集合同时存在或A集合存在B集合中无

    using System using System Collections Generic using System Linq using System Text using System Threading using System Th
  • iOS灵动岛【电商秒杀】开发实践

    一 基本概述 名词基础知识 苹果在 iPhone 14 Pro 系列中增加一个灵动岛 主要目的是隐藏挖孔造型的高端 感叹号屏 通过动画的视觉差异 用户找不到原来的挖孔屏 灵动岛是一种巧妙的设计 模糊了软件和硬件之间的界限 它可以在锁屏的情况
  • Python: 转换文本编码

    最近在做周报的时候 需要把csv文本中的数据提取出来制作表格后生产图表 在获取csv文本内容的时候 基本上都是用with open filename encoding UTF 8 as f 来打开csv文本 但是实际使用过程中发现有些csv
  • python网络爬虫实战——实时抓取西刺免费代理ip

    参考网上高手示例程序 利用了多线程技术 Python版本为2 7 coding utf8 import urllib2 import re import threading import time rawProxyList checkedP
  • Git切换分支报错:error: you need to resolve your current index first 以及needs merge

    当想从子分支切换到dev分支时git checkout dev 报错 error you need to resolve your current index first xxx java needs merge xxx xml needs
  • c#:ThreadPool实现并行分析,并实现线程同步结束

    背景 一般情况下 经常会遇到一个单线程程序时执行对CPU MEMORY IO利用率上不来 且速度慢下问题 那么 怎么解决这些问题呢 据我个人经验来说有以下两种方式 1 并行 多线程 Parallel Task ThreadPool 2 多进
  • phpstrom、laradock、xdebug 进行断点调试

    phpstrom laradock xdebug 进行断点调试 背景 laravel 框架封装太完善 经常搞不明白究竟用的是哪个类 复杂一点的算法 使用 dd方法调试时 需要疯狂dd 显得过于鸡肋 调试流程 发请求 跑调试代码 安装 xde
  • 决策树之用信息增益选择最优特征

    决策树之用信息增益选择最优特征 熵 熵的定义 熵 sh ng 热力学中表征物质状态的参量之一 用符号S表示 其物理意义是体系混乱程度的度量 在决策树中 信息增益是由熵构建而成 表示的是 随机变量的不确定性 不确定性越大 代表着熵越大 随机变
  • Mycat 学习小结

    Mycat 学习小结 Mycat 是什么 Mycat 是一个彻底开源的面向企业应用开发的大数据库集群 支持事务 ACID 是可以替代Mysql 的加强版数据库 Mycat被视为 Mysql 集群的企业级数据库 用来替代昂贵的 Oracle
  • LuCI界面开发之CBI模块

    在openWrt路由界面的开发中 我们使用的LuCI实际上已经不是简单的html了 它是嵌合于lua语言中的元素 或者按照英文翻译来说不是那些input而是变为如asp net中使用的那些控件 或者是 类 这些类包括一些常用的input输入
  • 编程每日一题_C程序设计_判断是否为素数

    描述 给定整型数据 判断其是否为素数 质数 又称素数 是指在大于1的自然数中 除了1和它本身外 不能被其他自然数整除 除0以外 的数称之为素数 质数 比1大但不是素数的数称为合数 1和0既非素数也非合数 素数 质数 与合数 定义存疑 解法一
  • 分支-11. 计算工资(15)

    某公司员工的工资计算方法如下 一周内工作时间不超过40小时 按正常工作时间计酬 超出40小时的工作时间部分 按正常工作时间报酬的1 5倍计酬 员工按进公司时间分为新职工和老职工 进公司不少于5年的员工为老职工 5年以下的为新职工 新职工的正
  • ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial UE5 Starter Course 教程大小解压后 4 96G 语言 英语 中英文字幕 机译 时长 4小时56分 1920X1080 mp4 虚
  • 使用 Docker 和 Alpaca LoRA 对 LLaMA 65B 大模型进行 Fine-Tune

    这篇文章中 我们来聊聊如何使用两张显卡来进行 LLaMA 65B 大模型的微调工作 以及如何在一张普通的 4090 家用显卡上 只花几个小时 就能够完成 7B 模型的微调 写在前面 在之前的几篇文章里 我们介绍过三种方式运行 Meta 开源
  • Shell脚本编写教程【七】——Shell test命令

    Shell脚本编写教程 七 Shell test命令 目录 https blog csdn net shn111 article details 131590488 参考教程 https www runoob com linux linux
  • ICCV 2023

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