【连续学习之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的目标是使当前模型的输出接近于每个任务自己的软目标,这样可以减少不同任务间的知识干扰,特别是在新任务学习时不会受到旧任务预测偏差的影响。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3.BMS系统原理图解读

一、BMS电池板 (1)电池的连接关系:串联 (2)采样控制点:CELL0 - CELL5 (3)端子P1和P3:BAT和BAT- (4)开关S1:控制充放电回路的机械开关 二、BMS控制板 (1)主控MCU 电源 复位 晶振 (2)LED指示灯:4电量指示 1调试指…

洛谷P5250 【深基17.例5】木材仓库(c嘎嘎)

题目链接:P5250 【深基17.例5】木材仓库 - 洛谷 | 计算机科学教育新生态 题目难度:普及/提高 解题心得:本题借鉴了大佬的做法(因为没想多好的处理方法~~),本题可以用map,对于操作1,存的话直接另…

pyqt和pycharm环境搭建

安装 python安装: https://www.python.org/downloads/release/python-3913/ python3.9.13 64位(记得勾选Path环境变量) pycharm安装: https://www.jetbrains.com/pycharm/download/?sectionwindows community免费版 换源: pip config se…

ArcGIS Pro地形图四至角图经纬度标注与格网标注

今天来看看ArcGIS Pro 如何在地形图上设置四至角点的经纬度。方里网标注。如下图的地形图左下角经纬度标注。 如下图方里网的标注 如下为本期要介绍的例图,如下: 图片可点击放大 接下来我们来介绍一下 推荐学习:GIS入门模型构建器Arcpy批量…

深度学习与图像处理(国产深度学习框架——飞桨官方指定教材)

计算机视觉从小白到大师之路 《深度学习与图像处理(PaddlePaddle版)》这一本就够了 1.引言 随着人工智能技术的飞速发展,各行各业对深度学习、图像处理相关领域的人才需求日益迫切。本书旨在通过系统的理论讲解与丰富的实战案例&#xff0…

Bluetooth Spec【0】蓝牙核心架构

蓝牙核心系统由一个主机、一个主控制器和零个或多个辅助控制器组成蓝牙BR/ EDR核心系统的最小实现包括了由蓝牙规范定义的四个最低层和相关协议,以及一个公共服务层协议;服务发现协议(SDP)和总体配置文件要求在通用访问配置文件&a…

代码随想录Day51 99. 岛屿数量,99. 岛屿数量,100. 岛屿的最大面积。

1.岛屿数量深搜 卡码网题目链接(ACM模式)(opens new window) 题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接…

【机器学习与数据挖掘实战】案例06:基于Apriori算法的餐饮企业菜品关联分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数据集中发现模式、关联…

突破传统,探索单页网站的强大潜力!

单页网站简单、直接,而且设计通常令人惊叹,非常适合展示关键信息而不会让访问者不知所措。 然而,构建单页网站有其自身的挑战,尤其是在 SEO 方面。由于内容数量有限且针对特定关键字的页面较少,可能很难在 SERP 中进行…

攻防世界web新手第四题easyphp

<?php highlight_file(__FILE__); $key1 0; $key2 0;$a $_GET[a]; $b $_GET[b];if(isset($a) && intval($a) > 6000000 && strlen($a) < 3){if(isset($b) && 8b184b substr(md5($b),-6,6)){$key1 1;}else{die("Emmm...再想想&quo…

Python大数据可视化:基于Python的王者荣耀战队的数据分析系统设计与实现_flask+hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 比赛信息管理 看板展示 系统管理 摘要 本文使用Python与…

【已解决】pyinstaller打包ico图片报错:OSError: [WinError 225] 无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。

起因&#xff1a; pyinstaller加上 --icon 参数打包时报错。 命令如下&#xff1a; 解决&#xff1a; 关闭 Windows 的病毒防护即可&#xff0c;步骤如下。 点屏幕右下角通知栏&#xff0c;进入“病毒和威胁防护”&#xff1a; 打开&#xff1a; 关闭实时保护&#xff08…

Cloudflare 边缘网络架构:无处不在的 BPF-2019

大家觉得有意义和帮助记得及时关注和点赞!!! 译者序边缘网络DDos Mitigation负载均衡TCP/UDP Socket DispatchSOCKMAPPrometheus - ebpf_exporter无处不在的 eBPF 边缘网络 Cloudflare 的服务器运行 Linux 系统。 我们的数据中心分为两类&#xff1a; 大的“核心”数据中心&a…

智慧园区小程序开发制作功能介绍

智慧园区小程序开发制作功能介绍 智慧园区小程序系统作为一款面向园区企业的一站式线上服务平台&#xff0c;可为企业提供数智化的园区办公服务。智慧园区小程序功能介绍 1、园区公告、政策信息查看足不出户掌握最新动态&#xff0c;“园区公告、政策信息”等信息。首页点击对应…

基于 Python Django 的农产品销售系统的研究与实现

大家好&#xff0c;我是stormjun&#xff0c;今天为大家带来的是基于 Python Django 的农产品销售系统的研究与实现。该系统采用 Python 语言 开发&#xff0c;MySql 作为数据库&#xff0c;系统功能完善 &#xff0c;实用性强 &#xff0c;可供大学生实战项目参考使用。 博主介…

WEB开发 - Flask 入门:Jinja2 模板语法进阶 Python

在上一阶段&#xff0c;我们一起学习了基于Python地 web框架Flask&#xff0c;并且初步了解了这个框架有一种渲染方式叫做 模板语法&#xff0c;今天&#xff0c;我们一起再来深入地了解和学习这个叫做Jinja2地模板语法。 WEB开发 - Flask 入门&#xff1a;由浅入深地带你学习…

基于SpringBoot在线音乐系统平台功能实现十八

一、前言介绍&#xff1a; 1.1 项目摘要 随着互联网技术的迅猛发展和普及&#xff0c;人们对音乐的获取和欣赏方式发生了巨大改变。传统的音乐播放方式&#xff0c;如CD、磁带或本地下载的音乐文件&#xff0c;已经不能满足用户日益增长的需求。用户更希望通过网络直接获取各…

【YOLOv3】源码(train.py)

概述 主要模块分析 参数解析与初始化 功能&#xff1a;解析命令行参数&#xff0c;设置训练配置项目经理制定详细的施工计划和资源分配日志记录与监控 功能&#xff1a;初始化日志记录器&#xff0c;配置监控系统项目经理使用监控和记录工具&#xff0c;实时跟踪施工进度和质量…

[原创](Modern C++)现代C++的第三方库的导入方式: 例如Visual Studio 2022导入GSL 4.1.0

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共23年] 职业生涯: 21年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、Delphi、XCode、Eclipse…

单片机与MQTT协议

MQTT 协议简述 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布 / 订阅&#xff08;publish/subscribe&#xff09;模式的 “轻量级” 通讯协议&#xff0c;该协议构建于 TCP/IP 协议上&#xf…