【博士每天一篇文献-算法】iCaRL_ Incremental Classifier and Representation Learning

news2024/9/28 17:23:00

阅读时间:2023-10-27

1 介绍

年份:2017
作者:Sylvestre-Alvise Rebuffi; Alexander Kolesnikov; Georg Sperl; Christoph H. Lampert ,牛津大学
期刊:Proceedings of the IEEE conference on Computer Vision and Pattern Recognition
引用量:2892
提出了一种名为iCaRL(增量分类器和表示学习)的学习系统的开发,它可以从数据流中随着时间学习新的概念。论文讨论了现有增量学习方法的局限性,并提出了一种训练策略,可以实现类增量学习,只需要同时存在少量类的训练数据,并且可以逐步添加新的类别。iCaRL同时学习强大的分类器和数据表示,这与以前的工作不同,以前的工作只能使用固定的数据表示,并且与深度学习架构不兼容。论文解释了iCaRL的主要组成部分,包括基于最近均值示例规则的分类、基于牧羊的优先选择例子和使用知识蒸馏和原型重演进行表示学习。对CIFAR-100和ImageNet数据集的实验证明,iCaRL可以在很长一段时间内逐步学习许多类别,而其他策略很快失败。
iCaRL(增量分类器和表示学习)是一种学习系统,通过处理数据流,可以随着时间的推移学习新的概念。iCaRL的主要组成部分包括分类器学习、样本管理和表示学习。分类器学习使用最接近均值的例子规则进行分类,样本管理使用基于聚集的方法选择重要的样本,表示学习使用知识蒸馏和原型演奏来提高性能。

2 创新点

(1)提出了一种名为iCaRL的学习系统,可以从数据流中逐步学习新概念。这种系统可以在只有少数几个类别的训练数据同时存在的情况下进行增量学习,并能够逐步添加新的类别。
(2)iCaRL同时学习强大的分类器和数据表示,这与之前的方法不同。之前的方法只能使用固定的数据表示,并且不适用于深度学习架构。
(3)iCaRL的主要组成部分包括使用最近样本均值规则进行分类、基于套牛算法的优先选择样本、使用知识蒸馏和原型回放进行表示学习等。
(4)在CIFAR-100和ImageNet数据集上的实验证明,iCaRL可以在很长时间内逐步学习许多类别,而其他策略很快失败。

3 算法

(1)使用特征提取器 φ ( ⋅ ) \varphi (\cdot) φ()对新旧数据(旧数据只取一部分)提取特征向量,并计算出各自的平均特征向量
把某一类的图像的特征向量都计算出来,然后求均值,注意本文对于旧数据,只需要计算一部分的数据的特征向量。
截屏2023-10-27 下午4.42.11.png
(2)通过最近均值分类算法(Nearest-Mean-of-Examplars) 计算出新旧数据的预测值

截屏2023-10-27 下午4.42.45.png
(3)在上面得到的预测值代入如下loss函数进行优化,最终得到模型。
image.png

4 实验结果分析

iCaRL的实现,对于iCIFAR-100,我们依赖于theano包,并训练了一个具有32层的ResNet 。
对于iILSVRC,最大样本数为K = 20000,我们使用tensorflow框架训练一个具有18层的ResNet 。
iCIFAR-100基准:使用CIFAR-100[16]数据,并以每次2、5、10、20或50个类的批次进行训练。评估指标是测试集上的标准多类准确率。由于数据集规模适中,我们使用不同的类别顺序运行了该基准测试十次,并报告结果的平均值和标准差。
iILSVRC基准:使用ImageNet ILSVRC 2012[34]数据集的两个设置:只使用100个类的子集,按照每次10个类的批次进行训练(iILSVRC-small)或使用全部1000个类,按照每次100个类的批次进行训练(iILSVRC-full)。评估指标是数据集的val部分的top-5准确率。
(1)准确率评价
截屏2023-10-27 下午3.49.27.png
iCaRL明显优于其他方法。在训练完第一批数据后固定数据表示(fixed repr.)的结果比基于蒸馏的LwF.MC差,除了iILSVRC-full。在没有防止灾难性遗忘的情况下对网络进行微调(finetuning)获得最差的结果。作为对比,使用所有可用数据训练的相同网络的多类准确率为68.6%。
(2)混淆矩阵评价
截屏2023-10-27 下午3.54.53.png
iCaRL的预测在所有类别上分布均匀,而LwF.MC倾向于更频繁地预测最近批次的类别。具有固定表示的分类器对于来自第一批次的类别有偏向性,而通过微调训练的网络仅预测来自最后一批次的类别标签。
(3)消融实验,差异性分析
从三个角度:用基于示例均值的分类规则、使用示例进行表示学习、使用蒸馏损失

  • hybrid1:以与iCaRL相同的方式学习表示,但直接使用网络的输出进行分类,而不是使用基于示例均值的分类器。
  • hybrid2:使用示例进行分类,但在训练过程中不使用蒸馏损失。
  • hybrid3:在分类和表示学习过程中都不使用蒸馏损失和示例,但在表示学习过程中使用示例。

截屏2023-10-27 下午4.07.34.png
混合设置主要在iCaRL和LwF.MC之间取得了结果,表明确实iCaRL的所有新组成部分都对其性能有所贡献。特别是与hybrid 1相比,iCaRL的比较显示基于示例均值的分类器在较小批量大小(即执行更多表示更新时)特别有优势。比较iCaRL和hybrid 2可以看出,在非常小的类别批量大小情况下,与仅使用原型相比,蒸馏甚至可能降低分类准确率。对于更大的批量大小和较少的更新次数,使用蒸馏损失显然是有优势的。最后,将hybrid 3的结果与LwF.MC进行比较清楚地显示了示例在防止灾难性遗忘方面的有效性。

5 思考

(1)蒸馏思想来源于论文【. Distilling the knowledge in a neural network】,最初提出了蒸馏方法来在不同的神经网络之间传递信息,在iCaRL中将其用于单个网络在不同时间点之间的信息传递 。
(2)本文启发于Lwf论文【. Learning without forgetting】
(3)“iCaRL会为每个类别使用m = K/t个样例(向上取整)。通过这样做,可以确保可用的K个样例的内存限额始终被充分利用,但不会超过”。这个算法思想,在GEM算法中所沿用。但具体是如何实现的,还不清楚。
(4)算法2、4、5具体的用处,还不清楚,需要结合代码理解
截屏2023-10-27 下午5.02.17.png
截屏2023-10-27 下午5.02.55.png

6 代码

https://github.com/srebuffi/iCaRL

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛选题 深度学习图像修复算法 - opencv python 机器视觉

文章目录 0 前言2 什么是图像内容填充修复3 原理分析3.1 第一步:将图像理解为一个概率分布的样本3.2 补全图像 3.3 快速生成假图像3.4 生成对抗网络(Generative Adversarial Net, GAN) 的架构3.5 使用G(z)生成伪图像 4 在Tensorflow上构建DCGANs最后 0 前言 &#…

评比无代码低代码平台时,可以考虑以下几个方面

无代码低代码平台是近年来兴起的一种软件开发工具,它们旨在帮助非技术人员快速创建应用程序,而无需编写大量的代码。这些平台通过提供可视化的界面和预先构建的组件,使用户能够通过拖放和配置的方式来构建应用程序。选择无代码低代码平台时&a…

微信公众号点击打开地图导航

<h3 id"menu-location">地理位置接口</h3><span class"desc">使用微信内置地图查看位置接口</span><button class"btn btn_primary" id"openLocation">openLocation</button> <span class&quo…

发展高质量存储力,中国高科技力量聚浪成潮

中国信息通信研究院指出&#xff0c;在全球数字化转型与产业变革的浪潮下&#xff0c;算力正在成为改变全球竞争格局的关键力量。而根据最新的《算力基础设施高质量发展行动计划》&#xff0c;算力是集信息计算力、数据存储力和网络运载力于一体的新型生产力。当前&#xff0c;…

ORACLE-递归查询、树操作

1. 数据准备 -- 测试数据准备 DROP TABLE untifa_test;CREATE TABLE untifa_test(child_id NUMBER(10) NOT NULL, --子idtitle VARCHAR2(50), --标题relation_type VARCHAR(10) --关系,parent_id NUMBER(10) --父id );insert into untifa_test (CHILD_ID, TITLE, RELATION_TYP…

vite vue3 ts 使用sass 设置样式变量 和重置默认样式

1.安装scss 样式支持依赖 yarn add -D sass 2.使用sass <div><!-- 测试使用sass --><h1>测试使用sass</h1> </div><style scope lang"scss"> div {h1 {color: red;} } </style> 效果&#xff1a; 3.通过npm下载并复制…

MarkDown教程记录

什么是 Markdown? Markdown 是一款轻量级标记语言&#xff0c;不同于HTML (Hypertext Markup Language)&#xff0c;Markdown 的语法非常简单&#xff0c;且容易上手Markdown 以 纯文本格式 编写文档&#xff0c;依赖键盘而非鼠标&#xff0c;专注于写作本身&#xff0c;感受…

为什么把k8s比做操作系统:kubernetes与os的架构对比

你还在背八大件吗&#xff1f;不如把k8s的架构和os一起看&#xff0c;你会发现一些超有趣的事情&#xff01;本文旨在将k8s的架构和os做个对比&#xff0c;帮助读者理解为什么k8s要这么设计。 kubernetes架构 kubernetes架构中由master节点和minion节点组成&#xff0c;maste…

c++ deque 的使用

目录 1. deque 的介绍 2. deque 底层原理 3. deque 的迭代器 4. deque 的接口使用 5. deque 和 vector&#xff0c;list 的比较 1. deque 的介绍 下面是 deque 的介绍&#xff0c;来自于&#xff1a;deque - C Reference (cplusplus.com) 的翻译&#xff0c;您可以不用…

MobPush数智化推送,精准定位万圣节狂欢年轻一族

随着中秋十一黄金周的结束&#xff0c;2023年最后一个法定节假日也一去不复返&#xff0c;但是别急&#xff0c;今年还有另一场不放假的狂欢节日——万圣节&#xff0c;万圣节作为西方国家第四季度最为重要的营销节日之一&#xff0c;在国内年轻人群体中同样具有较大的影响力和…

字节流和处理流的对象反序列化问题

细节&#xff1a; 读写要保持一致 序列对象时&#xff0c;默认将里面的所有属性都进行序列化&#xff0c;但除了static或transient修饰的成员 要求序列化或反序列化对象&#xff0c;需要实现Serializable 序列化对象时&#xff0c;要求里面的属性也要实现序列化接口 序列化…

java-- 静态数组

1.静态初始化数组 定义数组的时候直接给数组赋值。 2.静态初始化数组的格式&#xff1a; 注意&#xff1a; 1."数据类型[] 数组名"也可以写成"数据类型 数组名[]"。 2.什么类型的数组只能存放什么类型的数据 3.数组在计算机中的基本原理 当计算机遇到…

【优选算法精品】前缀和

文章目录 一、前缀和前缀和问题一维前缀和模板二维前缀和模板 细节处理题目1思路细节处理&#xff1a; 题目2思路 题目3题目4题目5题目6总结 一、前缀和 前缀和问题 前缀和用来快速解决某一段连续区间的和。 时间复杂度O(1) 注意&#xff1a;不要背模板&#xff0c;不要背模…

死锁Deadlock

定义 死锁是指两个或多个线程互相持有对方所需的资源&#xff0c;从而导致它们无法继续执行的情况。如下图所示&#xff0c;现有两个线程&#xff0c;分别是线程A及线程B&#xff0c;线程A持有锁A&#xff0c;线程B持有锁B。此时线程A想获取锁B&#xff0c;但锁B需等到线程B的结…

计算机网络之数据链路层(全)

[复习提示] 王道&#xff1a;本章是历年考试中考查的重点。要求在了解数据链路层基本概念和功能的基础上&#xff0c;重点掌握滑动窗口机制、三种可靠传输协议、各种MAC协议、HDLC协议和PPP协议&#xff0c;特别是CSMA/CD协议和以太网帧格式&#xff0c;以及局域网的争用期和最…

C++学习笔记之三(标准库、标准模板库、vector类)

C 1、C标准库2、C标准模板库2.1、vector2.1.1、vector与array2.1.2、vector与函数对象2.1.3、vector与迭代器 1、C标准库 C C C标准库指的是标准程序库( S t a n d a r d Standard Standard L i b a r a y Libaray Libaray)&#xff0c;它定义了十个大类&#xff0c;其中包括…

只有向内生长,才能向外绽放——中国人民大学与加拿大女王大学金融硕士

这个时代&#xff0c;产业迭代、竞争愈发激烈、世界局势变幻等这些都是我们无法控制的事。我们能做到的是不断地努力提升自己&#xff0c;成为所在领域的佼佼者。人的成长之路&#xff0c;就像是一场循序渐进的蜕变。不断努力是让自己逐步增值的过程。只有向内生长&#xff0c;…

世界经济论坛:ChatGPT等生成式AI,对全球23%岗位产生巨大影响

世界经济论坛与全球最大上市咨询公司之一埃森哲合作&#xff0c;联合发布了《未来工作&#xff1a;大语言模型与就业》白皮书。 世界经济论坛表示&#xff0c;随着ChatGPT、Midjourney、Github Copilot等生成式AI的飞速发展&#xff0c;对全球经济和劳动市场产生巨大影响。未来…

手写Vue渲染器render函数

使用js对象来描述UI更加的灵活。“这种对象”在vue框架中被称为虚拟DOM&#xff0c;渲染函数内部可以创建虚拟DOM&#xff0c;然后vue.js可以将其内容进行渲染。 1.渲染器的介绍 渲染器的作用就是把虚拟DOM渲染为真实DOM 思考下&#xff0c;我们有一个虚拟 DOM&#xff0c;如…

js数组的常用方法

目录 1. 添加/删除元素 2. 查找和遍历 3. 转换 4. 排序 5. 其他 JavaScript中的数组是一种用于存储多个值的对象。数组提供了一系列的方法来进行操作&#xff0c;包括添加、删除、遍历和搜索等。下面列举了一些JavaScript数组的常用方法&#xff1a; 1. 添加/删除元素 pu…