【学习资源】终身机器学习之增量学习

news2024/9/22 11:42:27

从机器学习存在的问题谈起,介绍增量学习可以解决怎样的问题,增量学习的类别,实现增量学习的方法,增量学习的评价指标和常用数据集,类别增量学习典型方法和代码库以及参考资源,希望能帮助大家用增量学习提高图像分类、对象检测、语义分割、行为识别、对象重识别、三维点云处理等工作的质量。

1目前机器学习存在什么问题?

图片来源:https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/life_v2.pdf

目前机器学习存在以下问题:

已有的领域信息如果包含有噪声和没有噪声信息的内容,如何让模型在两种情况上都能有较好的表现?

包含参数的神经网络模型能较好地完成任务一,但不能完成任务二。和人类比,也就是只能完成一种任务。或者说,参数不能适应新的任务。如何获得能够同时较好地完成任务一和任务二的模型?

在图像分类的任务中,初次训练分类器时很难收集全所有可能类别的训练样本,应用中遇到新类别时需要进行类别增量训练,如何训练?

对象检测和语义分割模型如何利用背景信息挖掘有利于后续类别增量学习的特征表示?

2 增量学习解决了什么问题?

既能不断更新学习新类别或者任务,又能较好地保持在已学习类别或任务的性能。

持续学习(Continual Learning)或者增量学习(Incremental Learning)试图帮助神经网络实现像人们一样学习大量不同的任务,不出现任何负面的相互干扰, 并解决灾难性的遗忘问题。增量学习算法的重点不是如何利用在以前任务中学到的知识来帮助更好地学习新任务,而是解决灾难性遗忘的问题。

 

图片来源:Incremental Learning in Deep Convolutional Neural Networks Using Partial Network Sharing – arXiv Vanity

3增量学习有哪些类别?

下表中的分类层指深度神经网络的最后一层,特征提取器指深度神经网络除去分类层的前面层次。

种类

原理

类别集特征

遗忘现象发生的结构

测试阶段要求

数据增量

类别集不变,数据以在线形式动态增加。

不变

NA

NA

任务增量

不同的任务共享相同的特征提取器,每学习一个任务,模型需要增加一个输出分类层。

变化,在各自任务内部分类。

在特征提取器,因为不同任务的分类层之间互不影响。

模型需要事先已知当前测试样本所属的任务编号,在该任务所对应的分类层内部分类。

类别增量

所有类别共享一个分类层,该分类层的类别节点会随着学习类别的增加而增加。在现实中有很多实际需求 。

变化在所有已学习类别上分类。

特征提取器和分类层都存在遗忘现象。因为不同类别之间会相互影响。

不需要预先指定测试样本所属类别就可以对所有已知类别进行分类。

4实现增量学习的方法有哪些?

介绍两种不同的分类方法。

图片来源:

https://github.com/virginiakm1988/ML2022-Spring/blob/main/HW14/HW14.pdf

李宏毅教授在https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/life_v2.pdf介绍了以下三种类型。

  • Selective Synaptic Plasticity  
  • Additional Neural Resource Allocation 
  • Memory Reply

Selective Synaptic Plasticity   用梯度方法可以找到哪些参数对某一个任务重要。通过改变那些对第一个任务影响不大或者不重要的参数,让模型可以同时完成第一个任务和第二个任务。这个方法主要是改变模型的参数,称为参数正则化。如EWC、SI、MAS以及LwF-MC等方法。参数正则化方法适用于解决任务增量学习。

Additional Neural Resource Allocation  介绍了Progressive Neural Network,PackNet和CPG。Progressive Neural Network渐进式神经网络保留大量的预训练模型,也即保留旧任务的模型参数,当有新任务时,使用旧任务之间的横向链接来适应。当然其缺点是随着任务数量的增加,参数的数量会爆炸式增长。PackNet则是先设置一个很大的网络,当有新的任务时,只使用大网络中的一部分。这样参数量不会随着任务的增加而增加。Progressive Neural Network和PackNet相结合,可以既增加新的参数,也可以保留完成每一次任务的 参数。

Memory Reply是指使用先前任务的生成模型生成伪数据。

图片来源:朱飞,张煦尧,刘成林.类别增量学习研究进展和性能评价[J].自动化学报,2023,49(03):635-660.DOI:10.16383/j.aas.c220588.

在《类别增量学习研究进展和性能评价》这篇文章里,朱飞等介绍了基于克服遗忘的技术思路的五种方法:基于参数正则化、基于知识蒸馏、基于数据回放、基于特征回放和基于网络结构,总结了每种方法的优缺点。作者们在常用数据集上用实验评估代表性方法, 并根据实验结果比较分析了现有算法的性能,也展望了类别增量学习的研究趋势,是一个非常好的参考资料。我就不赘述了。

基于知识蒸馏的方法是在学习新任务的同时,保持新旧模型对给定数据的输出一致性,也即“输入-输出”不变形,避免遗忘旧知识。可以通过保持重要特征、样本关系和辅助数据来实现。如TPCIL、PODnet、DDE以及GeoDL等方法。

数据回放是指模型在学习新任务的时候,可以将旧任务的类别数据和新任务的类别数据一起更新模型,可以通过回放真实数据、回放生成数据以及校准新旧偏差实现。如等方法。

大部分基于数据回放的方法会使用知识蒸馏策略,从而可以更好地利用保存的旧类别样本。如iCaRL,BiC,UCIR,WA等方法。

特征回放是指模型在学习新任务的时候,可以将旧任务的样本特征和新任务的样本特征一起更新模型,可以通过回放真实特征、类别原型和生成特征实现。如PASS、SSRE、Fusion方法。

基于网络结构的方法是在增量学习的过程中动态扩展网络结构。如AANets、DER、ReduNet方法。

5增量学习的评价指标和常用数据集

图片来源:朱飞,张煦尧,刘成林.类别增量学习研究进展和性能评价[J].自动化学报,2023,49(03):635-660.DOI:10.16383/j.aas.c220588.

图片来源:朱飞,张煦尧,刘成林.类别增量学习研究进展和性能评价[J].自动化学报,2023,49(03):635-660.DOI:10.16383/j.aas.c220588.

6类别增量学习典型方法和代码库

类别增量学习的目标是模型在动态、开放的环境下, 能够在较好地保持已有知识的基础上, 持续地学习新类别知识。

iCaRL(Incremental Classifer and Representation Learning)是一种非常基础的方法,其用于在类增量设定下同时学习分类器和特征表示。在高层次上,iCaRL为每个观察的类维护一个范例样本集。对于每个类,范例集是该类所有样本的一个子集,目的是包含该类的最具代表性的信息。新样本的分类是通过选择一个与之最相似的范例集所在的类来完成的。当一个新类出现时,iCaRL为此新类创建一个范例集,同时修剪现有/以前类的范例集。这个方法包括增量训练、更新特征表示和为新类构建范例集。

PyCIL: A Python Toolbox for Class-Incremental Learning GitHub - G-U-N/PyCIL: PyCIL: A Python Toolbox for Class-Incremental Learning

,这个工具箱几乎实现了所有的类别增量学习方法。包括EWCiCaRL经典算法以及SSRECoilFOSTERFeTRIL等最新的增量学习方法。其他库可参考Incremental Learning | Papers With Code

下图是增量学习的过程

图片来源:Knowledge Distillation and Incremental Learning - Deepan Das

7参考资源

以下资源供参考。

  • 台湾大学李宏毅终身学习课程

第十四节 2021 - 机器终身学习 (一) - 为什么今日的人工智能无法成为天网?灾难性遗忘(Catastrophic Forgetting)_哔哩哔哩_bilibili

2021 - 机器終身学习 (二) - 灾难性遗忘(Catastrophic Forgetting)_哔哩哔哩_bilibili  

课件https://speech.ee.ntu.edu.tw/~hylee/ml/ml2021-course-data/life_v2.pdf

  • 最新综述 | 类别增量学习研究进展和性能评价 全文链接类别增量学习研究进展和性能评价 朱飞,张煦尧,刘成林.类别增量学习研究进展和性能评价[J].自动化学报,2023,49(03):635-660.DOI:10.16383/j.aas.c220588.
  • 让模型实现“终生学习”,佐治亚理工学院提出Data-Free的增量学习
  • 万文长字总结「类别增量学习」的前世今生、开源工具包 
  • 增量学习论文和代码汇总: Incremental Learning | Papers With Code
  • 陈志源,刘兵. 终身机器学习(原书第2版) (智能科学与技术丛书) (Chinese Edition) (Kindle Locations 1381-1385). Kindle Edition.
  • https://deepandas11.github.io/deep-learning,/computer-vision,/detection,/incremental-learning/Incremental-Learning/

总之,类别增量学习可以助力于图像分类、对象检测、语义分割、行为识别、对象重识别、三维点云处理等工作。欢迎大家留言,我们一起讨论交流。

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

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

相关文章

产品结构优化叠加渠道红利释放,劲仔食品是下一个食品大牛股吗?

A股有着独特的“四条鱼”标的,其中三家都是做大鱼:鳗鱼、三文鱼、罗非鱼。但在消费者这一侧听得最多的,往往是那个“劲仔小鱼”,和它背后的劲仔食品。 这只是一个诙谐的说法,但劲仔食品的业绩质量好,却是不…

Flutter 状态管理框架 Provider 和 Get 原理分析

为什么需要状态管理? 首先,为什么需要状态管理,这是因为 Flutter 基于 声明式 构建 UI ,使用状态管理的目的之一就是解决「声明式」开发带来的问题。 「声明式」开发是一种区别于传原生的方式,所以我们没有在原生开发…

Java8特性之Lambda表达式

1.概念 lambda表达式是Java8的一个新特性,从本质上来讲是一个匿名函数,可以使用这个匿名函数实现接口中的方法,并且非常简洁。 通常来讲,使用 lambda表达式 是为了简化接口实现的。关于接口实现,可以有很多种方式来实…

MongoDB多字段重复数据的查询与删除

MongoDB的语法平时接触的不错,更多的是使用关系型数据库。最近遇到一个问题,在MongoDB中,需要找出三个字段重复的数据,有点类似于SQL数据中的三个字段组成的唯一键。并且需要将重复的数据保留一条,其余删除。但是在Mon…

跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测)

跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测) 目录 跌倒检测和识别3:Android实现跌倒检测(含源码,可实时跌倒检测) 1. 前言 2. 跌倒检测数据集说明 3. 基于YOLOv5的跌倒检测模型训练 4.跌倒检测模型Android…

Kubernetes----Pod,资源对象文件

kubectl容器管理 kubectl用于控制Kubernetes集群的命令行工具 语法格式 kubectl [command] [type] [name] [flages] command: 子命令,如create,get,describe,delete type: 资源类型,可以表示为单数,复数形式或缩写形式 name: 资…

2023年4月份上新的图像领域分割模型设计系列论文(一)

来源:投稿 作者:王老师 编辑:学姐 论文1 论文标题: Learning Semantic-Aware Knowledge Guidance for Low-Light Image Enhancement 论文链接: https://arxiv.org/pdf/2304.07039v1.pdf代码链接: https://…

Java性能优化之序列化优化

1、Java 序列化及其缺陷 Java 提供了一种序列化机制,这种机制能够将一个对象序列化为二进制形式(字节数组),用于写入磁盘或输出到网络,同时也能从网络或磁盘中读取字节数组,反序列化成对象,在程…

无法启动此程序,因为计算机中丢失VCRUNTIME140.dll”错误的解决办法

vcruntime140.dll是什么什么文件呢?为什么电脑在运行一些游戏或许软件的时候会出现丢失vcruntime140.dll,然后游戏或许软件运行失败?这个dll文件是电脑重要的运行库文件。丢失了会导致很多程序无法运行。 首先打开电脑浏览器以后在顶部网页栏目输入&am…

MATLAB实现图像滤波及噪声消除

图像增强是指根据特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法。其主要目的是使处理后的图像对某种特定的应用来说,比原始图像更适用。因此,这类处理是为了某种应用目的而去改善图像质量的。处理的结果使图…

ROS学习第三十六节——Gazebo仿真环境搭建

https://download.csdn.net/download/qq_45685327/87719408 1.直接添加现成模型 1.1加入环境模型 在工程文件中创建worlds文件夹&#xff0c;并把之前下载的box_house.world文件放入 1.2编写launch文件 deamo03_car_world.launch <launch><!-- 将 Urdf 文件的内容…

CCGNet用于发现共晶材料中的coformer

共晶工程&#xff08;cocrystal engineering&#xff09;在制药&#xff0c;化学和材料领域有广泛应用。然而&#xff0c;如何有效选择coformer一直是一个挑战性课题。因此&#xff0c;作者开发了一个基于GNN的深度学习框架用于快速预测共晶的形成。为了从现有报告的6819个正样…

超详细Redis入门教程——Redis命令(下)

前言 本文小新为大家带来 超详细Redis入门教程——Redis命令 相关知识&#xff0c;具体内容包括简单动态字符串 SDS&#xff0c;集合的底层实现原理&#xff0c;BitMap 操作命令&#xff0c;HyperLogLog 操作命令&#xff0c;Geospatial 操作命令&#xff0c;发布/订阅命令&…

2023.04.23 学习周报

文章目录 摘要文献阅读1.题目2.摘要3.介绍4.模型4.1 研究区域4.2 自相关分析4.3 LSTM 5.实验与讨论5.1 高架道路不同位置空气污染物的变化5.2 高架道路不同位置空气污染物的相关性5.3 高架道路不同位置空气污染物预测 6.结论7.展望 度规张量1.曲率2.度量张量3.代码实现4.平行四…

基于遗传算法的梯级水电站群优化调度研究(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

王道计组(23版)7_I/O系统

I/O控制方式 数据传输率低的外设&#xff1a; 程序查询方式 程序中断方式&#xff1a;外设准备就绪则主动向CPU发送中断请求 数据传输率高的外设&#xff1a; DMA方式&#xff1a;主存和I/O设备有一条直接数据通路&#xff0c;无需调用中断 通道方式&#xff1a;每个通道挂接若…

CTFSHOW web入门——web30

代码审计 把flag、system、php都给过滤了 passthru()函数同system()函数类似&#xff0c;都可以用来执行外部命令的&#xff0c;因此可以用passthru来代替system。 因此构造payload&#xff1a;?cpassthru(cat f*); 查看页面源代码即可获得flag

ROS学习第三十四节——URDF与Gazebo基本集成流程

https://download.csdn.net/download/qq_45685327/87718593 1.创建功能包 创建新功能包&#xff0c;导入依赖包: urdf xacro gazebo_ros gazebo_ros_control gazebo_plugins 2.编写URDF文件 demo01_helloworld.urdf <robot name"mycar"><link name"…

Android 一个获取网址时间的Demo

Android 一个获取网址时间的Demo 文章目录 Android 一个获取网址时间的Demo通过一个网址获取时间的代码关于Android NTP 时间Android 同步时间代码 前段时间有个客户想用局域网同步Android 设备的时间&#xff0c;开发后把这个demo分享一下。 效果&#xff1a; 这里也获取了阿…

Xshell中的基本命令

whoami 当我们刚登录上Xshell的时候&#xff0c;我们应该做什么呢&#xff1f;&#xff1f; 我们上次说了如何增加使用者&#xff0c;和删除使用者&#xff0c;今天我们说一下其他的基本命令。 我们刚开始登录的时候可以用root登录 那么我们怎么看自己事谁呢&#xff1f; …