当前位置: 首页 > news >正文

【连续学习之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 创新点

  1. 分离Softmax(SS)层
    • 提出了一种新的分离Softmax输出层,该层能够独立处理新旧类别的输出分数,避免了在梯度更新过程中对旧类别的过度惩罚。
  2. 任务级知识蒸馏(TKD)
    • 展示了任务级知识蒸馏(TKD)与分离Softmax层相结合可以有效解决增量学习中的类别不平衡问题,TKD通过为每个任务独立计算软目标,减少了旧模型中的预测偏差。
  3. 系统性分析
    • 对导致类别分数偏差的根本原因进行了系统性分析,指出了传统softmax概率计算是导致偏差的主要原因,并提出了相应的解决方案。
  4. 实验验证
    • 在多个大规模增量学习基准数据集上进行了广泛的实验验证,证明了SS-IL在不同增量学习场景下都能取得强于现有技术的准确性,且无需额外的后处理步骤。
  5. 鲁棒性
    • 证明了SS-IL在不同的实验条件下(如不同的增量任务数量和记忆库大小)都表现出了很好的鲁棒性,尤其是在记忆库大小减小时,模型的准确性下降幅度较小。
  6. 经验回放(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层使得模型在处理新旧类别时更加平衡,提高了模型对旧类别的保持能力。
  1. 初始化模型参数
    • 初始化深度神经网络(DNN)模型的参数$ \theta $。
  2. 增量任务学习
    • 对于每个增量任务$ 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上的输出分数 中抽取minibatch,确保新旧类别的比例。b.前向传播:计算模型在当前minibatch上的输出分数 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 $。
  3. 测试与评估
    • 在所有增量任务学习完成后,使用最终模型参数$ \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&#xff08…...

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…...

微信小程序开发示例

微信小程序开发涉及多个方面&#xff0c;包括页面布局、交互逻辑、数据处理等。以下是一个简单的微信小程序开发示例&#xff0c;包括页面布局、样式定义、交互逻辑等方面的内容。 一、页面布局&#xff08;WXML&#xff09; <!-- index.wxml --> <view class"…...

【机器学习】概述

文章目录 1. 机器学习三步骤2. 机器学习图谱2.1 任务类型 (Task)2.2 模型选择 (Methods)2.3 学习场景 (Scenario) 1. 机器学习三步骤 定义一个模型 (Define a set of function) 选择一组合适的函数来表示模型。 评估模型好坏 (Goodness of function) 找到一个损失函数&#xf…...

音视频采集推流时间戳记录方案

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

【Linux】:线程安全 + 死锁问题

&#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;Linux—登神长阶 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 1. 线程安全和重入问题&…...

【深度学习】时间序列表示方法

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

1.微服务灰度发布落地实践(方案设计)

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

【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&#xff1a;>3.8 ❤️.9 (最好不要3.9已经试过失败 node &#xff1a;node14 (不能是18 已经测试过包打不上去使用14的换源即可 JDK&#xff1a;JDK8 node 需要换源 npm c…...

【一款超好用的开源笔记Logseq本地Docker部署与远程使用指南】

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

浅谈torch.utils.data.TensorDataset和torch.utils.data.DataLoader

1.torch.utils.data.TensorDataset 功能定位 torch.utils.data.TensorDataset 是一个将多个张量&#xff08;Tensor&#xff09;数据进行简单包装整合的数据集类&#xff0c;它主要的作用是将相关联的数据&#xff08;比如特征数据和对应的标签数据等&#xff09;组合在一起&…...

gesp(C++二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵

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

FFmpeg:详细安装教程与环境配置指南

FFmpeg 部署完整教程 在本篇博客中&#xff0c;我们将详细介绍如何下载并安装 FFmpeg&#xff0c;并将其添加到系统的环境变量中&#xff0c;以便在终端或命令行工具中直接调用。无论你是新手还是有一定基础的用户&#xff0c;这篇教程都能帮助你轻松完成 FFmpeg 的部署。 一、…...

《特征工程:自动化浪潮下的坚守与变革》

在机器学习的广阔天地中&#xff0c;特征工程一直占据着举足轻重的地位。它宛如一位幕后的工匠&#xff0c;精心雕琢着原始数据&#xff0c;将其转化为能够被机器学习模型高效利用的特征&#xff0c;从而推动模型性能迈向新的高度。然而&#xff0c;随着技术的飞速发展&#xf…...

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)是如何在深度学习网络中提取多尺度特征的?附代码

【深度学习基础之多尺度特征提取】特征金字塔&#xff08;Feature Pyramid&#xff09;是如何在深度学习网络中提取多尺度特征的&#xff1f;附代码 【深度学习基础之多尺度特征提取】特征金字塔&#xff08;Feature Pyramid&#xff09;是如何在深度学习网络中提取多尺度特征…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...

【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制

目录 节点的功能承载层&#xff08;GATT/Adv&#xff09;局限性&#xff1a; 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能&#xff0c;如 Configuration …...