【连续学习之LwM算法】2019年CVPR顶会论文:Learning without memorizing

1 介绍

年份:2019

期刊: 2019CVPR

引用量:611

Dhar P, Singh R V, Peng K C, et al. Learning without memorizing[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 5138-5146.

本文提出的“Learning without Memorizing (LwM)”算法原理是通过结合知识蒸馏损失(LD)和注意力蒸馏损失(LAD)来实现增量学习,关键技术步骤是在训练过程中,利用注意力机制(Grad-CAM)生成的注意力图来保持对基础类别的知识,同时学习新类别,而无需存储任何基础类别的数据。本文算法属于基于正则化的算法。

2 创新点

  1. 无需存储数据的增量学习(Learning without Memorizing)
    • 提出了一种新颖的增量学习方法,能够在不存储任何关于现有类别数据的情况下,保持对现有类别的知识,同时学习新类别。
  2. 注意力蒸馏损失(Attention Distillation Loss, LAD)
    • 引入了一种基于注意力图的信息保持惩罚项LAD,通过惩罚分类器注意力图的变化来保留基础类别的信息。
  3. 注意力图的利用
    • 使用Grad-CAM技术生成注意力图,这些图能够更精确地编码模型的表示,并用于约束学生模型和教师模型之间的表示差异。
  4. 信息保持的全面提升
    • 通过结合LAD和LD,不仅考虑了类别分数的分布,还考虑了模型梯度流信息,从而更全面地保持了对基础类别的知识。
  5. 增量学习中的类特异性解释
    • 通过类特异性的注意力图,强化了教师模型和学生模型之间类特异性解释的一致性,这对于没有基础类别数据的增量学习设置尤为重要。
  6. 实验验证
    • 在多个数据集上进行了实验验证,包括iILSVRC-small、iCIFAR-100、Caltech-101和CUBS-200-2011,证明了LwM方法在增量学习中的有效性和优越性能。

3 算法

3.1 算法原理

  1. 增量学习(Incremental Learning, IL)背景
    • 增量学习的目标是在不遗忘已学习类别(基础类别)的情况下,使模型能够识别新的类别。这是通过在模型上逐步添加新类别并更新模型来实现的。
  2. 信息保持惩罚(Information Preserving Penalty, IPP)
    • 在增量学习中,为了保持对基础类别的知识,需要一种机制来惩罚模型在新类别学习过程中对基础类别知识造成的遗忘。LwM通过IPP实现这一点。
  3. 注意力蒸馏损失(Attention Distillation Loss, LAD)
    • LwM提出了一种新的IPP,即注意力蒸馏损失(LAD),它通过比较教师模型(Mt-1)和学生模型(Mt)生成的注意力图来工作。注意力图是通过Grad-CAM技术从模型的卷积层特征图中生成的,它们能够显示模型在做出预测时哪些区域是重要的。
  4. 类特异性注意力图
    • LwM使用类特异性的注意力图来强制教师模型和学生模型之间的类特异性解释保持一致。这意味着模型需要对特定类别的视觉特征保持一致的关注。
  5. L1距离约束
    • LAD通过计算教师模型和学生模型生成的注意力图之间的L1距离来约束它们的差异,迫使学生模型在学习新类别时保持与教师模型对基础类别的相似响应。
  6. 损失函数组合
    • LwM的总损失函数是分类损失(LC)、知识蒸馏损失(LD)和注意力蒸馏损失(LAD)的组合,即LLwM = LC + βLD + γLAD,其中β和γ是用于平衡两种损失的权重。
  7. 增量学习过程
    • 在每个增量步骤中,学生模型Mt被初始化为前一个教师模型Mt-1,并在新类别的数据上进行训练。同时,通过LAD和LD来惩罚Mt与Mt-1之间的差异,以保持对基础类别的知识。
  8. 无需存储基础类别数据
    • LwM的一个关键特点是在学习新类别时不需要存储任何关于基础类别的数据,这使得该方法在内存受限的边缘设备上特别有用。

3.2 算法步骤

图中展示了应用三种损失函数来训练学生模型$ M_t < f o n t s t y l e = " c o l o r : r g b ( 6 , 6 , 7 ) ; " > ,而教师模型 < / f o n t > <font style="color:rgb(6, 6, 7);">,而教师模型</font> <fontstyle="color:rgb(6,6,7);">,而教师模型</font> M_{t-1} $保持冻结状态。

算法步骤总结:

  1. 初始化教师模型$ M_0 :使用分类损失 :使用分类损失 :使用分类损失 LC 训练 训练 训练 M_0 在 在 N $个基础类别上。
  2. 对于每个增量步骤$ t = 1 到 到 k : a . 使用 : a. 使用 a.使用 M_{t-1} 初始化学生模型 初始化学生模型 初始化学生模型 M_t 。 b . 将新类别的数据输入到 。 b. 将新类别的数据输入到 b.将新类别的数据输入到 M_{t-1} 和 和 M_t 中。 c . 计算 中。 c. 计算 中。c.计算 M_t 和 和 M_{t-1} 的输出,包括类特异性注意力图和分数。 d . 应用信息保持惩罚( I P P ),包括注意力蒸馏损失( L A D )和知识蒸馏损失( L D )。 e . 对 的输出,包括类特异性注意力图和分数。 d. 应用信息保持惩罚(IPP),包括注意力蒸馏损失(LAD)和知识蒸馏损失(LD)。 e. 对 的输出,包括类特异性注意力图和分数。d.应用信息保持惩罚(IPP),包括注意力蒸馏损失(LAD)和知识蒸馏损失(LD)。e. M_t 应用分类损失 应用分类损失 应用分类损失 LC ,基于其对新类别的输出。 f . 联合应用分类损失和 I P P ,训练 ,基于其对新类别的输出。 f. 联合应用分类损失和IPP,训练 ,基于其对新类别的输出。f.联合应用分类损失和IPP,训练 M_t 进行多个周期。 g . 将 进行多个周期。 g. 将 进行多个周期。g. M_t $作为下一个增量步骤的教师模型。
  3. 在每个增量步骤后评估$ M_t $的性能。

损失函数计算公式:
总损失函数$ LLwM 是分类损失 是分类损失 是分类损失 LC 、知识蒸馏损失 、知识蒸馏损失 、知识蒸馏损失 LD 和注意力蒸馏损失 和注意力蒸馏损失 和注意力蒸馏损失 LAD $的组合:

$ LLwM = LC + \beta \cdot LD + \gamma \cdot LAD $

其中:

  • $ LC 是分类损失,用于训练 是分类损失,用于训练 是分类损失,用于训练 M_t $学习新类别。
  • $ LD 是知识蒸馏损失,用于保持 是知识蒸馏损失,用于保持 是知识蒸馏损失,用于保持 M_t 和 和 M_{t-1} $对基础类别预测的一致性:

$ LD(y, \hat{y}) = -\sum_{i=1}^{N} y_{0i} \cdot \log(\hat{y}_{0i}) $

其中$ y 和 和 \hat{y} 分别是 分别是 分别是 M_{t-1} 和 和 M_t 对基础类别的预测向量, 对基础类别的预测向量, 对基础类别的预测向量, y_{0i} = \sigma(y_i) 和 和 \hat{y}_{0i} = \sigma(\hat{y}_i) ( ( \sigma(\cdot) $是sigmoid激活函数)。

  • $ LAD 是注意力蒸馏损失,用于保持 是注意力蒸馏损失,用于保持 是注意力蒸馏损失,用于保持 M_t 和 和 M_{t-1} $生成的注意力图的一致性:

$ LAD = \sum_{j=1}^{l} \left| \frac{Q_{In,b}{t-1,j}}{|Q_{In,b}{t-1}|2} - \frac{Q{In,b}{t,j}}{|Q_{In,b}{t}|_2} \right|_1 $

其中$ Q_{In,b}^{t-1} 和 和 Q_{In,b}^{t} 分别是 分别是 分别是 M_{t-1} 和 和 M_t 为输入图像 为输入图像 为输入图像 In 和基础类别 和基础类别 和基础类别 b 生成的向量化注意力图, 生成的向量化注意力图, 生成的向量化注意力图, l $是每个向量化注意力图的长度。

4 实验分析

展示了在不同的增量学习配置下,注意力图如何随着增量学习步骤的变化而变化。这些配置包括传统的分类训练(C)、LwF-MC方法,以及本文提出的LwM方法。

  • 基线比较
    • LwM与LwF-MC作为基线进行比较,LwM在所有测试场景中均优于LwF-MC。
  • 性能提升
    • 在iILSVRC-small数据集上,当类别数量达到40或更多时,LwM的性能比LwF-MC提高了30%以上。
    • 在100个类别时,LwM的性能比LwF-MC提高了50%以上。
  • 不同数据集上的表现
    • LwM在iILSVRC-small和iCIFAR-100数据集上的表现一致优于LwF-MC。
    • LwM甚至在iILSVRC-small数据集上超过了iCaRL,尽管iCaRL在训练学生模型时有访问基础类别数据的优势。
  • 增量批次大小的影响
    • 在iCIFAR-100数据集上,LwM在不同大小的增量批次(10、20、50类)中均优于LwF-MC。
  • Caltech-101和CUBS-200-2011数据集
    • 在这两个数据集上,LwM通过每次增加10个类别的批次与微调(Finetuning)进行比较,显示出LwM在增量学习中的优势。
  • LAD的有效性
    • 仅使用LC和LAD的组合在iILSVRC-small数据集上进行了测试,结果表明LAD有助于保持对基础类别的注意力,从而提高模型性能。
  • 遗忘和惯性的量化
    • 通过比较不同配置下生成的注意力图,实验结果支持LwM在减少遗忘和提高模型对新类别的适应性方面的有效性。
  • 定性结果
    • 通过图4展示的注意力图,LwM显示出在增量学习过程中更好地保持了对基础类别的注意力,与C和LwF-MC相比,LwM生成的注意力图更接近于初始教师模型M0的“理想”注意力图。

5 思考

(1)提出了一种基于注意力的损失函数应用到连续学习。

(2)只对比了一种算法,就发表了CVPR ,都没有对比多种的算法。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【微服务】3、配置管理

微服务配置管理 已掌握的微服务组件及配置管理问题引出 已掌握注册中心、Openfan、远程调用、负载均衡、网关等组件&#xff0c;具备微服务开发能力&#xff0c;但仍存在其他问题待解决。微服务和网关存在大量配置文件&#xff0c;其中包含很多重复配置&#xff0c;如数据库、日…

【论文+源码】基于Spring和Spring MVC的汉服文化宣传网站

为了实现一个基于Spring和Spring MVC的汉服文化宣传网站,我们需要创建一个简单的Web应用程序来展示汉服文化和相关信息。这个系统将包括以下几个部分: 数据库表设计:定义文章、用户和评论的相关表。实体类:表示数据库中的数据。DAO层接口及MyBatis映射文件:用于与数据库交…

Apache Celeborn 在B站的生产实践

背景介绍 Shuffle 演进 随着B站业务的飞速发展,数据规模呈指数级增长,计算集群也逐步从单机房扩展到多机房部署模式。多个业务线依托大数据平台驱动核心业务,大数据系统的高效性与稳定性成为公司业务发展的重要基石。如图1,目前在大数据基础架构下,我们主要采用 Spark、Fl…

计算机网络:网络层知识点及习题(一)

网课资源&#xff1a; 湖科大教书匠 1、概述 网络层实现主机到主机的传输&#xff0c;主要有分组转发和路由选择两大功能 路由选择处理机得出路由表&#xff0c;路由表再生成转发表&#xff0c;从而实现分组从不同的端口转发 网络层向上层提供的两种服务&#xff1a;面向连接…

深入刨析数据结构之排序(上)

目录 1.内部排序 1.1概述 1.2插入排序 1.2.1其他插入排序 1.2.1.1 折半插入排序 1.2.1.2 2-路插入排序 1.3希尔排序 1.4快速排序 1.4.1起泡排序 1.4.2快速排序 1.4.2.1hoare版本 1.4.2.2挖坑版本 1.4.2.3前后指针版本 1.4.2.4优化版本 1.4.2.4.1小区间插入排序优…

卸载wps后word图标没有变成白纸恢复

这几天下载了个wps教育版&#xff0c;后头用完了删了 用习惯的2019图标 给兄弟我干没了&#xff1f;&#xff1f;&#xff1f; 其他老哥说什么卸载关联重新下 &#xff0c;而且还要什么撤销保存原来的备份什么&#xff0c;兄弟也是不得不怂了 后头就发现了这个半宝藏博主&…

huggingface 下载方法 测试ok

目录 python下载方法&#xff1a; 设置环境变量 ~/.bashrc 缓存目录&#xff0c;默认模型下载目录 安装方法&#xff1a; python 下载无token&#xff1a; python 下载带token 常见报错 登录后创建Read token 2.3 创建token 使用token登录 python下载方法&#xff1…

【网络安全技术与应用】(选修)实验8 入侵检测

参考内容:【入侵检测】window下安装snort_windows安装snort-CSDN博客 一、实验目的 深入理解入侵检测系统的原理和工作方式,熟悉入侵检测工具Snort在Windows操作系统中的安装、配置及使用方法。二、实验内容 安装WinPcap及Snort;启动Snort;自编写简单的报警规则并进行测试;…

Linux驱动开发 gpio_get_value读取输出io的电平返回值一直为0的问题

当时gpio子系统进行读取时返回必定是0 因此&#xff0c;首先必须使用platform驱动来管理gpio和pinctrl子系统&#xff0c;然后如果按照正点原子所教的设备树引脚设置为0x10B0则会导致读取到的电平值为0。 解决方法&#xff1a; 将设备树中的引脚设置为 pinctrl_gpioled: gpio…

CDP集成Hudi实战-spark shell

[〇]关于本文 本文主要解释spark shell操作Hudi表的案例 软件版本Hudi1.0.0Hadoop Version3.1.1.7.3.1.0-197Hive Version3.1.3000.7.3.1.0-197Spark Version3.4.1.7.3.1.0-197CDP7.3.1 [一]使用Spark-shell 1-配置hudi Jar包 [rootcdp73-1 ~]# for i in $(seq 1 6); do s…

web实操9——session

概念 数据保存在服务器HttpSession对象里。 session也是域对象&#xff0c;有setAttribute和getAttribute方法 快速入门 代码 获取session和塞入数据&#xff1a; 获取session获取数据&#xff1a; 请求存储&#xff1a; 请求获取&#xff1a; 数据正常打印&#xff1a…

常用LabVIEW算法及应用

在LabVIEW项目中&#xff0c;算法的应用是提高系统性能、实现特定功能、完成复杂任务的核心。LabVIEW作为一种图形化编程语言&#xff0c;允许用户通过直观的图形编程来实现各种复杂的算法。这些算法广泛应用于控制系统、数据采集、信号处理、图像处理、机器学习等领域。了解常…

AI Agent 开发共学招募 | 来 Sui 上探索自治智能的边界

Agent 一词源自拉丁语 “Agere”&#xff0c;意为“行动&#xff08;to do&#xff09;”。在大语言模型&#xff08;LLM&#xff09;的语境下&#xff0c;Agent 指的是能够感知环境、进行决策并执行任务的智能实体。 与传统的 RPA 相比&#xff0c;后者只能在预设的条件下执行…

安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装

一、项目创建 创建NDK项目有两种方式&#xff0c;一种从新创建整个项目&#xff0c;一个在创建好的项目添加NDK接口。 1.创建NDK项目 创建 一个Native C项目&#xff1a; 选择包名、API版本与算法交互的语言&#xff1a; 选择C版本&#xff1a; 创建完之后&#xff0c;可…

计算机网络 —— 网络编程实操(1)(UDP)

计算机网络 —— 网络编程实操&#xff08;UDP&#xff09; 套接字端口套接字的定义为什么需要套接字&#xff1f; 套接字的分类1. 按照通信协议分类2. 按照地址族&#xff08;Address Family&#xff09;分类3. 按照通信模式分类 socket APIsockaddr结构 使用接口套接字初始化…

【HarmonyOS-ArkTS语言】面向对象【合集】

目录 &#x1f60b;环境配置&#xff1a;华为HarmonyOS开发者 &#x1f3af;学习小目标&#xff1a; &#x1f4d6;实验步骤及方法&#xff1a; 1.在entry/src/main/ets/utils下创建MyClass.ets和MyConfig.ets文件​编辑 2.在MyConfig.ets中创建Interface Config 和enum l…

Excel | 空格分隔的行怎么导入excel?

准备工作&#xff1a;windows&#xff0c;一个记事本程序和微软的Excel软件。 打开记事本&#xff0c;选中所有内容&#xff0c;按CtrlA全选&#xff0c;然后复制(CtrlC)。 在Excel中&#xff0c;定位到你想粘贴的单元格&#xff0c;按CtrlV进行粘贴。粘贴后&#xff0c;你会在…

HTML 显示器纯色亮点检测工具

HTML 显示器纯色亮点检测工具 相关资源文件已经打包成html等文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Html相关程序案例&#xff0c;秉着开源精神的想法&#xff0c;望大家喜欢&#…

idea项目导入gitee 码云

1、安装gitee插件 IDEA 码云插件已由 gitosc 更名为 gitee。 1 在码云平台帮助文档http://git.mydoc.io/?t153739上介绍的很清楚&#xff0c;推荐前两种方法&#xff0c; 搜索码云插件的时候记得名字是gitee&#xff0c;gitosc已经搜不到了。 2、使用码云托管项目 如果之…

python学习笔记—13—while和for循环

1. while循环 (1) 代码 1. 示例 i 0 while i < 100:print(f"第{i}次循环")i 1 2. 计算从1加到100的和 i 1 sum 0 while i < 100:sum ii 1 print(f"1加到100的和是{sum}") 3. 使用while循环无限次猜测随机产生的数字&#xff0c;直到猜对&am…