【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning
1 介绍
年份:2021
期刊: 2021CPVR
Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853.
本文提出的SS-IL(Separated Softmax for Incremental Learning)算法,通过分离的softmax输出层和任务级知识蒸馏(TKD),解决了增量学习中的类别灾难性遗忘问题,其中关键步骤包括:1) 分离softmax(SS)层,它通过独立计算新旧类别的softmax概率,阻止了新旧类别间的梯度流动,从而减少了对旧类别输出概率的不平衡惩罚;2) 任务级知识蒸馏(TKD),它为每个任务独立计算软目标,避免了全局知识蒸馏(GKD)可能保留的预测偏差。本文算法属于基于知识蒸馏的算法,因为它特别强调了任务级知识蒸馏(TKD)在解决增量学习中的类别不平衡和灾难性遗忘问题中的作用。同时,它也涉及到基于架构的方法,因为提出了新的分离softmax输出层来调整模型架构。
2 创新点
- 分离Softmax(SS)层:
- 提出了一种新的分离Softmax输出层,该层能够独立处理新旧类别的输出分数,避免了在梯度更新过程中对旧类别的过度惩罚。
- 任务级知识蒸馏(TKD):
- 展示了任务级知识蒸馏(TKD)与分离Softmax层相结合可以有效解决增量学习中的类别不平衡问题,TKD通过为每个任务独立计算软目标,减少了旧模型中的预测偏差。
- 系统性分析:
- 对导致类别分数偏差的根本原因进行了系统性分析,指出了传统softmax概率计算是导致偏差的主要原因,并提出了相应的解决方案。
- 实验验证:
- 在多个大规模增量学习基准数据集上进行了广泛的实验验证,证明了SS-IL在不同增量学习场景下都能取得强于现有技术的准确性,且无需额外的后处理步骤。
- 鲁棒性:
- 证明了SS-IL在不同的实验条件下(如不同的增量任务数量和记忆库大小)都表现出了很好的鲁棒性,尤其是在记忆库大小减小时,模型的准确性下降幅度较小。
- 经验回放(ER)技术:
- 引入了经验回放(ER)技术来保持mini-batch中新旧类别的比例,进一步平衡了模型对新旧类别的更新,提高了模型的预测性能。
3 算法
3.1 算法原理
分离Softmax(SS)层
在增量学习中,我们考虑一个学习代理连续地从增量到达的训练数据批次中学习新类别,并旨在对所有已学习的类别进行良好预测。主要挑战是灾难性遗忘,对于基于示例记忆的CIL方法,通常认为遗忘是由于新旧类别之间的数据不平衡导致的分类分数偏差。为了分析这种偏差的根源,我们考虑了计算所有旧类和新类的输出分数的softmax概率可能是偏差的主要原因。因此,我们提出了分离Softmax(SS)输出层,它通过分别计算新旧类别的softmax概率,阻止了新旧类别间的梯度流动,从而减少了对旧类别输出概率的不平衡惩罚。
任务级知识蒸馏(TKD)
为了进一步解决偏差问题,我们使用了任务级知识蒸馏(TKD)。与全局知识蒸馏(GKD)不同,TKD为每个任务独立计算软目标,避免了GKD可能保留的预测偏差。TKD通过使用每个任务的单独softmax概率进行蒸馏,尝试保留任务级知识,而不保留可能存在于旧模型中的预测偏差。
经验回放(ER)技术
为了确保在mini-batch中保持新旧类别的比例,我们引入了经验回放(ER)技术。ER通过从旧类和新类中均匀地抽取样本,确保了在梯度下降步骤中对旧类别的更新不会被新类别的样本所主导。
损失函数
SS-IL的总体损失函数由两部分组成:分离Softmax交叉熵损失(LCE-SS)和任务级知识蒸馏损失(LTKD)。具体来说,对于增量任务t,损失函数为:
$ L_{SS-IL,t}((x, y), \theta) = L_{CE-SS,t}((x, y), \theta) + L_{TKD,t}(x, \theta) $
其中,$ L_{CE-SS,t} 是分离 S o f t m a x 交叉熵损失, 是分离Softmax交叉熵损失, 是分离Softmax交叉熵损失, L_{TKD,t} $是任务级知识蒸馏损失。
3.2 算法步骤
- 黄色区域:代表旧类别(Old Classes),即在之前任务中已经学习过的类别。
- 红色区域:代表新类别(New Classes),即当前任务中新出现的类别。
- 特征提取器(Feature Extractor):通常是深度卷积神经网络(CNN),用于从输入数据中提取特征。
- SS-Layer(分离Softmax层):这是SS-IL算法的核心部分,它包含两个独立的softmax输出层,一个用于旧类别,一个用于新类别。分离的softmax层使得模型在处理新旧类别时更加平衡,提高了模型对旧类别的保持能力。
- 初始化模型参数:
- 初始化深度神经网络(DNN)模型的参数$ \theta $。
- 增量任务学习:
- 对于每个增量任务$ t : a . ∗ ∗ 经验回放( E R ) ∗ ∗ :从 : a. **经验回放(ER)**:从 :a.∗∗经验回放(ER)∗∗:从 D_t 和 和 和 M 中抽取 m i n i − b a t c h ,确保新旧类别的比例。 b . ∗ ∗ 前向传播 ∗ ∗ :计算模型在当前 m i n i − b a t c h 上的输出分数 中抽取mini-batch,确保新旧类别的比例。 b. **前向传播**:计算模型在当前mini-batch上的输出分数 中抽取mini−batch,确保新旧类别的比例。b.∗∗前向传播∗∗:计算模型在当前mini−batch上的输出分数 z_t(x, \theta_t) $。
c. 计算损失:- 分离Softmax交叉熵损失:$ L_{CE-SS,t}((x, y), \theta_t) = L_{CE,t-1}((x, y), \theta_t) \cdot 1{y \in P_t} + DKL(y_t | p_t(x, \theta_t)) \cdot 1{y \in N_t} ,其中 ,其中 ,其中 P_t 表示旧类别, 表示旧类别, 表示旧类别, N_t $表示新类别。
- 任务级知识蒸馏损失:$ L_{TKD,t}(x, \theta_t) = \sum_{s=1}^{t-1} DKL(p_s(x, \theta_{t-1}) | p_s(x, \theta_t)) 。 d . ∗ ∗ 反向传播与参数更新 ∗ ∗ :计算总损失 。 d. **反向传播与参数更新**:计算总损失 。d.∗∗反向传播与参数更新∗∗:计算总损失 L_{SS-IL,t}((x, y), \theta_t) = L_{CE-SS,t}((x, y), \theta_t) + L_{TKD,t}(x, \theta_t) ,并通过随机梯度下降( S G D )更新模型参数 ,并通过随机梯度下降(SGD)更新模型参数 ,并通过随机梯度下降(SGD)更新模型参数 \theta_t $。
- 对于每个增量任务$ t : a . ∗ ∗ 经验回放( E R ) ∗ ∗ :从 : a. **经验回放(ER)**:从 :a.∗∗经验回放(ER)∗∗:从 D_t 和 和 和 M 中抽取 m i n i − b a t c h ,确保新旧类别的比例。 b . ∗ ∗ 前向传播 ∗ ∗ :计算模型在当前 m i n i − b a t c h 上的输出分数 中抽取mini-batch,确保新旧类别的比例。 b. **前向传播**:计算模型在当前mini-batch上的输出分数 中抽取mini−batch,确保新旧类别的比例。b.∗∗前向传播∗∗:计算模型在当前mini−batch上的输出分数 z_t(x, \theta_t) $。
- 测试与评估:
- 在所有增量任务学习完成后,使用最终模型参数$ \theta_T $对测试集进行预测和评估。
4 思考
(1)全局知识蒸馏和任务级知识蒸馏?
全局知识蒸馏(General Knowledge Distillation, GKD)和任务级知识蒸馏(Task-wise Knowledge Distillation, TKD)。LGKD将所有任务的知识合并在一起进行蒸馏,而LTKD则为每个任务独立进行蒸馏,这样做有助于减少不同任务间的干扰,特别是在处理增量学习中的类别不平衡和灾难性遗忘问题时。
LGKD (左图)
- 全局Softmax概率:LGKD使用全局的softmax概率$ p_{\tau}^{1:t-1}(x, \theta) 作为软目标( s o f t t a r g e t ),这个概率是结合了从任务 1 到任务 作为软目标(soft target),这个概率是结合了从任务1到任务 作为软目标(softtarget),这个概率是结合了从任务1到任务 t-1 $的所有类别输出分数计算得到的。
- KL散度:LGKD的损失函数基于Kullback-Leibler散度(KL散度),它衡量了模型当前参数$ \theta 下的概率分布 下的概率分布 下的概率分布 p_{\tau}^{1:t-1}(x, \theta) 和之前学习任务上的概率分布 和之前学习任务上的概率分布 和之前学习任务上的概率分布 p_{\tau}^{1:t-1}(x, \theta_{t-1}) $之间的差异。
- 目标:LGKD的目标是使当前模型的输出接近于之前所有任务学习到的全局概率分布,以此来保留之前任务的知识。
LTKD (右图)
- 任务级Softmax概率:与LGKD不同,LTKD为每个任务$ s 独立计算 s o f t m a x 概率 独立计算softmax概率 独立计算softmax概率 p_{\tau}^s(x, \theta) $,仅使用该任务自己的输出分数。
- KL散度:LTKD的损失函数也是基于KL散度,但是它分别计算当前模型参数$ \theta $下的概率分布和之前每个任务学习到的概率分布之间的差异。
- 目标:LTKD的目标是使当前模型的输出接近于每个任务自己的软目标,这样可以减少不同任务间的知识干扰,特别是在新任务学习时不会受到旧任务预测偏差的影响。
相关文章:

【连续学习之SS-IL算法】2021年CPVR会议论文Ss-il:Separated softmax for incremental learning
1 介绍 年份:2021 期刊: 2021CPVR Ahn H, Kwak J, Lim S, et al. Ss-il: Separated softmax for incremental learning[C]//Proceedings of the IEEE/CVF International conference on computer vision. 2021: 844-853. 本文提出的SS-IL(…...

Go+chromedp实现Web UI自动化测试
1.为什么使用go进行UI自动化测试? 速度:Go速度很快,这在运行包含数百个UI测试的测试套件时是一个巨大的优势 并发性:可以利用Go的内置并发性(goroutines)来并行化测试执行 简单:Go的简约语法允许您编写可读且可维护…...
【MySQL 高级特性与性能优化】
MySQL 高级特性与性能优化 一、MySQL 存储引擎 (一)InnoDB 存储引擎 1. 特点 支持事务:InnoDB 是 MySQL 中提供完整 ACID 事务支持的存储引擎,这意味着它能够保证数据库操作在复杂的并发环境下的一致性、隔离性、原子性和持久…...

Spring Boot教程之三十九: 使用 Maven 将 Spring Boot 应用程序 Docker 化
如何使用 Maven 将 Spring Boot 应用程序 Docker 化? Docker是一个开源容器化工具,用于在隔离环境中构建、运行和管理应用程序。它方便开发人员捆绑其软件、库和配置文件。Docker 有助于将一个容器与另一个容器隔离。在本文中,为了将Spring B…...
微信小程序开发示例
微信小程序开发涉及多个方面,包括页面布局、交互逻辑、数据处理等。以下是一个简单的微信小程序开发示例,包括页面布局、样式定义、交互逻辑等方面的内容。 一、页面布局(WXML) <!-- index.wxml --> <view class"…...
【机器学习】概述
文章目录 1. 机器学习三步骤2. 机器学习图谱2.1 任务类型 (Task)2.2 模型选择 (Methods)2.3 学习场景 (Scenario) 1. 机器学习三步骤 定义一个模型 (Define a set of function) 选择一组合适的函数来表示模型。 评估模型好坏 (Goodness of function) 找到一个损失函数…...

音视频采集推流时间戳记录方案
音视频同步更多文章 深入理解音视频pts,dts,time_base以及时间数学公式_视频pts计算-CSDN博客 ffplay音视频同步分析_ffplay 音视频同步-CSDN博客 音视频采集打时间戳设计 实时音视频数据的采集和处理场景。具体来说: 采集阶段: 在音视频数据采集过…...

【Linux】:线程安全 + 死锁问题
📃个人主页:island1314 🔥个人专栏:Linux—登神长阶 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1. 线程安全和重入问题&…...

【深度学习】时间序列表示方法
自然界除了2D的图片数据之外,还有语音、文字,这些数据都有时间的先后顺序的。对于2D的图像的数据,可以用RGB值来表示像素的色彩度。语音可以用信号幅度值来表示,而Pytorch没有自带String支持,在表示文字之前需要进行Em…...

1.微服务灰度发布落地实践(方案设计)
文章目录 前言灰度发布的优点设计概要系统架构图流量控制客户端服务端 路由路径应用客户端实现核心组件分析1.网关2. spring-cloud3. dubbo4. nocas5. thread6. message queue 前言 微服务架构中的灰度发布(也称为金丝雀发布或渐进式发布)是一种在不影响…...

【UE5 C++课程系列笔记】15——Assert的基本使用
目录 概念 一、Check 二、Verify 三、Ensure 对比 基本使用 一、check的基本使用 二、ensure的基本使用 三、verify的基本使用 概念 assert 可在开发期间帮助检测和诊断不正常或无效的运行时条件。这些条件通常检查是否指针为非空、除数为非零、函数并非递归运行&…...

kubernetes Gateway API-1-部署和基础配置
文章目录 1 部署2 最简单的 Gateway3 基于主机名和请求头4 重定向 Redirects4.1 HTTP-to-HTTPS 重定向4.2 路径重定向4.2.1 ReplaceFullPath 替换完整路径4.2.2 ReplacePrefixMatch 替换路径前缀5 重写 Rewrites5.1 重写 主机名5.2 重写 路径5.2.1 重新完整路径5.2.1 重新部分路…...

likeAdmin架构部署(踩坑后的部署流程
1、gitee下载 https://gitee.com/likeadmin/likeadmin_java.git 自己克隆 2、项目注意 Maven:>3.8 ❤️.9 (最好不要3.9已经试过失败 node :node14 (不能是18 已经测试过包打不上去使用14的换源即可 JDK:JDK8 node 需要换源 npm c…...

【一款超好用的开源笔记Logseq本地Docker部署与远程使用指南】
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
浅谈torch.utils.data.TensorDataset和torch.utils.data.DataLoader
1.torch.utils.data.TensorDataset 功能定位 torch.utils.data.TensorDataset 是一个将多个张量(Tensor)数据进行简单包装整合的数据集类,它主要的作用是将相关联的数据(比如特征数据和对应的标签数据等)组合在一起&…...

gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵 题目描述 小杨想要构造一个 m m m \times m m...

FFmpeg:详细安装教程与环境配置指南
FFmpeg 部署完整教程 在本篇博客中,我们将详细介绍如何下载并安装 FFmpeg,并将其添加到系统的环境变量中,以便在终端或命令行工具中直接调用。无论你是新手还是有一定基础的用户,这篇教程都能帮助你轻松完成 FFmpeg 的部署。 一、…...
《特征工程:自动化浪潮下的坚守与变革》
在机器学习的广阔天地中,特征工程一直占据着举足轻重的地位。它宛如一位幕后的工匠,精心雕琢着原始数据,将其转化为能够被机器学习模型高效利用的特征,从而推动模型性能迈向新的高度。然而,随着技术的飞速发展…...

webrtc 源码阅读 make_ref_counted模板函数用法
目录 1. 模板参数解析 1.1 typename T 1.2 typename... Args 1.3 typename std::enable_if::value, T>::type* nullptr 2. scoped_refptr 3. new RefCountedObject(std::forward(args)...); 4. 综合说明 5.在webrtc中的用法 5.1 peerConnectionFactory对象的构建过…...
【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码
【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码 【深度学习基础之多尺度特征提取】特征金字塔(Feature Pyramid)是如何在深度学习网络中提取多尺度特征…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

门静脉高压——表现
一、门静脉高压表现 00:01 1. 门静脉构成 00:13 组成结构:由肠系膜上静脉和脾静脉汇合构成,是肝脏血液供应的主要来源。淤血后果:门静脉淤血会同时导致脾静脉和肠系膜上静脉淤血,引发后续系列症状。 2. 脾大和脾功能亢进 00:46 …...

云原生安全实战:API网关Envoy的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关 作为微服务架构的统一入口,负责路由转发、安全控制、流量管理等核心功能。 2. Envoy 由Lyft开源的高性能云原生…...