灾难性遗忘/增量学习的研究现状

灾难性遗忘/增量学习的研究现状

  • 一. 灾难性遗忘(catastrophic forgetting)为什么会发生?
  • 二. 增量学习的概念
      • 2.1. 研究领域
      • 2.1. 增量学习的上下限
  • 三. 增量学习的方法
      • 3.1. 基于正则化的增量学习(基于Loss) --《Learning without Forgetting》 (ECCV 2016) LwF
      • 3.2. 基于正则化的增量学习(基于参数约束) --《Overcoming catastrophic forgetting in neural networks》 (PNAS 2017) EWC
      • 3.3. 基于回放的增量学习 --《iCaRL: Incremental Classifier and Representation Learning 》 (CVPR 2017)
      • 3.4. 基于参数隔离的增量学习 --《PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning》
      • 3.5. 基于生成数据的增量学习 --《PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning》
  • 三. 方法的对比

主要参考文献:《A continual learning survey: Defying forgetting in classification tasks》
知乎:增量学习(Incremental Learning)小综述

一. 灾难性遗忘(catastrophic forgetting)为什么会发生?

灾难性遗忘,是指在新的数据集上训练模型,会遗忘掉旧数据上学习到的知识,在旧数据上测试会发生很大的掉点

  • 场景:
    • 相同任务,数据集不同,新数据和旧数据相似度高:finetuning效果可以
    • 相同任务,数据集不同,新数据和旧数据相似度低:出现灾难性遗忘
    • 不同任务或者有新增任务:出现灾难性遗忘
  • 分析:
    • 同一个网络,学习完一个任务后的权重,在学习新的任务的时候可能完全变化掉,由于不同任务的最优化的目标往往不同,即使目标函数相同数据集也不同,旧的权重被毁坏是完全有可能的
    • 但理论上,两者是可以实现重用的,需要分清楚两个任务目标能否找到一个基础网络层,这种解决方案就是常见的多任务学习。
    • 但多任务学习的一个问题是随着任务的增多,新的任务目标越来越难训练,因为多个loss累加在一起,后加入的loss被优化的压力慢慢会变小,优化的压力会分摊到所有的loss上,而且这样也会带来训练上的成本,如果能在训练完一个任务后,再训练一个新任务,而老任务学到的东西不会遗忘就好了,这就产生了增量式学习的概念,也叫持续学习。

增量学习和持续学习(Continual Learning)、终身学习(Lifelong Learning)的概念大致是等价的

二. 增量学习的概念

2.1. 研究领域

在这里插入图片描述

  • 多任务学习(Multi Task Learning):k个训练数据集: D 1 D_1 D1 D k D_k Dk(k个任务),k个对应的测试数据集,旨在能够学到k个任务的知识
  • 迁移学习(Transfer Learning):在 D s D_s Ds数据集上训练模型,旨在利用学到的知识(参数),在 D T D_T DT数据集上继续训练,能够准确地识别 D T D_T DT数据集
  • 元学习(meta Learning):将数据集分 D 1 D_1 D1~ D k D_k Dkk份数据集,旨在学习到任务之间的共性,能够识别 D t D_t Dt数据集的物体(一般在运用于小样本学习(few shot learning)中)
  • 跨域学习(Domanin Adaptation):同时在 D s D_s Ds D T D_T DT数据集,相当于扩产了外部数据集 D s D_s Ds,帮助学习 D T D_T DT,旨在能够更好的识别 D T D_T DT
  • 在线学习(Online learning):每次只能学习当前数据集 D 1 D_1 D1的一部分,每个样本只能学一次,旨在越学,越能更好地识别 D 1 D_1 D1数据集
  • 持续学习(Continual Learning):每次学习一堆数据集,从 D 1 D_1 D1 D t D_t Dt,旨在还能识别上一次数据集

2.1. 增量学习的上下限

在这里插入图片描述

  • (a)Original Model:旧数据上训练的原模型
  • (b)Fine-tuning:不用旧数据,在新数据上继续训练,增量学习的上限
  • (c)Feature Extraction:特征提取,只更新新任务的参数
  • (d)Joint Training:联合训练,将旧数据全部加入新数据集中,一起训练模型,增量学习的上限
  • (e)Learning without Forgetting:增量学习,在新的数据集上,用部分旧数据或者不用,用策略,继续训练模型,尽量保持在旧的数据集上识别能力

增量学习和在线学习的区别:在线学习通常要求每个样本只能使用一次,且数据全都来自于同一个任务,而增量学习是多任务的,但它允许在进入下一个任务之前多次处理当前任务的数据

三. 增量学习的方法

在这里插入图片描述

3.1. 基于正则化的增量学习(基于Loss) --《Learning without Forgetting》 (ECCV 2016) LwF

  • 论文链接:https://arxiv.org/pdf/1606.09282v3.pdf
  • 代码链接:https://github.com/ContinualAI/avalanche

在这里插入图片描述

     核心操作LwF算法先得到旧模型CNN( θ s \theta_s θs, θ 0 \theta_0 θ0)在新任务 X n X_n Xn上的预测值 Y 0 Y_0 Y0,在损失函数中引入新模型输出的蒸馏损失 L o l d L_{old} Lold,然后用微调的方法(先冻结 θ s \theta_s θs θ 0 \theta_0 θ0,训练 X n X_n Xn,然后再联合训练)在新任务上训练模型,从而避免新任务的训练过分调整旧模型的参数而导致新模型在旧任务上性能的下降 .
     公式如下:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • l是类别label数量
  • 建议T >1,会鼓励更好的学习到类间的相似性
  • λ 0 \lambda_0 λ0是权重,大多数实验设置为1
  • R是正则化项

     方法缺点:高度依赖于新旧任务之间的相关性,当任务差异太大时会出现任务混淆的现象(inter-task confusion),并且一个任务的训练时间会随着学习任务的数量线性增长,同时引入的正则项常常不能有效地约束模型在新任务上的优化过程

3.2. 基于正则化的增量学习(基于参数约束) --《Overcoming catastrophic forgetting in neural networks》 (PNAS 2017) EWC

  • 论文链接:https://arxiv.org/pdf/1612.00796v2.pdf
  • 代码链接:https://github.com/ContinualAI/avalanche
    在这里插入图片描述
         目的:如上图,首先我想得到一个能够识别新任务task B,且能识别旧任务task A的模型,相当于能够模型学到task Atask B的公共解,这个解应该是存在的(我们将task Atask B合在一起训练,得到的解便是公共解),如果我们不加限制,就和蓝箭头一样,新训练的模型在task A上的准确率不足,如果我们对每个权重施加L2惩罚,会出现绿箭头的情况,因为所有权重都不能发生太大改变,模型无法充分学习task BEWC的目标即为红箭头,此类做法和knowledge distillation的本质基本一致,只是做法不同

     核心操作:利用贝叶斯求先验概率,希望求得数据集先验情况下的每个参数的概率:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为每个概率不好求,所以用拉普拉斯近似,在使用mini batch的前提下,则可其看成均值为 θ A , i ∗ θ ^*_{A,i} θA,i,方差为该参数对应的Fisher information matrix对角线上的倒数(记为 F i F_i Fi)的高斯分布:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
最后转化为求如下公式,即Loss
在这里插入图片描述

具体可以参考这篇文章:CSDN:深度学习论文笔记(增量学习)——Overcoming catastrophic forgetting in neural networks

3.3. 基于回放的增量学习 --《iCaRL: Incremental Classifier and Representation Learning 》 (CVPR 2017)

  • 论文链接:https://arxiv.org/pdf/1611.07725v2.pdf
  • 代码链接:https://github.com/ContinualAI/avalanche

     目的:在训练新任务时,一部分具有代表性的旧数据会被保留并用于模型复习曾经学到的旧知识,因此「要保留旧任务的哪部分数据,以及如何利用旧数据与新数据一起训练模型」,就是这类方法需要考虑的主要问题

  • iCaRL假设越靠近类别特征均值的样本越有代表性
  • iCaRL是最经典的基于回放的增量学习模型,iCaRL的思想实际上和LwF比较相似,它同样引入了蒸馏损失来更新模型参数,但又放松了完全不能使用旧数据的限制
    在这里插入图片描述
  • x是输入数据
  • P是代表性样本集合
  • t是样本种类的总数。
  • 求解当前exemplar中,每个样本种类的均值Uy。比较输入数据与哪个样本种类的均值Uy差值最小(最接近),即把输入数据分为该样本类型。

3.4. 基于参数隔离的增量学习 --《PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning》

  • 论文链接:https://arxiv.org/pdf/1711.05769v2.pdf
  • 代码链接:https://github.com/arunmallya/packnet
    在这里插入图片描述
  • 训练:整体训练,之后剪枝,为了弥补剪枝带来的损失会再针对剪枝后网络进少轮次训练,任务二训练时会利用任务一的参数,但不改变他们。
  • 剪枝:针对每个任务的子网络的权重进行排行,最低的百分之五十或者其他阈值被剪掉。
  • 测试:使用预先存储的对应每个任务的记录矩阵对 filter 参数执行 mask,即任务 1 使用 b 图去预测。

3.5. 基于生成数据的增量学习 --《PackNet: Adding Multiple Tasks to a Single Network by Iterative Pruning》

    也有一些工作将VAE和GAN的思想引入了增量学习,比如Variational Continual Learning (ICLR 2018)指出了增量学习的贝叶斯性质,将在线变分推理和蒙特卡洛采样引入了增量学习,Continual Learning with Deep Generative Replay (NIPS 2017)通过训练GAN来生成旧数据,从而避免了基于回放的方法潜在的数据隐私问题,这本质上相当于用额外的参数间接存储旧数据,但是生成模型本身还没达到很高的水平,这类方法的效果也不尽人意。

三. 方法的对比

在这里插入图片描述
数据集:ImageNet有200类,每类包含500个样本,分为培训(80%)和验证(20%)以及50个用于评估的样本。为了构建一个平衡数据集,在10个连续任务的序列中,每个任务分配20个随机选择的类。

  • 图说明:
    • 上面的图是基于正则化的方法LwF、、EBLL(data-focud)、EWCMASIMM(prior)和基于参数隔离的方法PackNet
    • SI:33.93(15.77)33.93代表10次实验的AP均值,15.77代表相对于联合训练遗忘的AP
    • 下面的图是基于回放的方法GEMiCaRLiCaRL 9kiCaRL 4.5k用的旧数据多一倍
    • T1~T10:连续的10个任务
  • 效果对比:
    • PackNet总体表现最好,只用了总模型的一部分参数
    • MASiCaRL次之
    • 与两种相关方法EWCSI相比,MAS对超参数值的选择更具鲁棒性
    • Tiny Imagenet上的EWC相比,SI表现不佳
    • IMM与其他持续学习策略相比似乎没有竞争力
      在这里插入图片描述
  • 图说明:
    • 33.93(15.77)33.93代表10次实验的AP均值,15.77代表相对于联合训练遗忘的AP,负数,代表策略效果比联合训练还好
  • 效果对比:
    • Small ModelSIfinetuning遗忘的AP大于20,效果很差,EWC(绿色下划线)得益于小模型,效果更好
    • WIDE modelSI明显好于EWCLwFEBLLPackNet在使用WideModel时达到最高性能
    • BaseModelSIPWideModelBase Model上的性能最稳定。IMM在使用BaseWideModel时也表现出了更高的性能。
    • DEEP Model(金黄色框):iCaRL在优于所有持续学习方法,MASiCaRL次之
    • 与两种相关方法EWCSI相比,MAS对超参数值的选择更具鲁棒性
    • Tiny Imagenet上的EWC相比,SI表现不佳
    • IMM与其他持续学习策略相比似乎没有竞争力
  • 总结
    • 基于正则化的方法,适合小模型
    • 基于参数隔离的方法,适合大模型
    • 基于回放的方法,适合深度模型

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

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

相关文章

遗忘因子递推最小二乘法估计

%遗忘因子递推最小二乘参数估计(FFRLS) clear all; close all; a[1 -1.5 0.7]’; b[1 0.5]’; d3; %对象参数 nalength(a)-1; nblength(b)-1; %na、nb为A、B阶次 L1000; %仿真长度 ukzeros(dnb,1); %输入初值:uk(i)表示u(k-i) ykzeros(na,1…

怎样利用遗忘曲线来进行有效复习?

遗忘曲线由德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述,人们可以从遗忘曲线中掌握遗忘规律并加以利用,从而提升自我记忆能力。该曲线对人类记忆认知研究产生了…

计算机修改人类记忆曲线,遗忘曲线

遗忘曲线由德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述,人们可以从遗忘曲线中掌握遗忘规律并加以利用,从而提升自我记忆能力。该曲线对人类记忆认知研究产生了…

【AndV】ant-design-vue中select使用mode=“combobox“无效:

文章目录 一、问题:二、解决: 一、问题: Warning: [antdv: Select] The combobox mode of Select is deprecated,it will be removed in next major version,please use AutoComplete instead 二、解决: 将mode"combobox"改为mode"SECRET_COMBOBOX_MODE_DO_NOT_…

编程语言的类型

解释型语言和编译型语言 解释型语言是把源代码的每一条语句在运行时通过解释器编译成机器语言(按语句编译,边说边翻译) 编译型语言是将整个源程序代码一次性编译成机器码,机器最直接读这个机器码文件(一次性编译&…

学生的第一门编程语言应该是什么?

“学生第一次开始学习计算机科学(computer science,CS)时,应该从哪种编程语言开始学习?”这一问题一直让教育工作者备受困扰。来自密歇根大学的计算机科学教授 Mark Guzdial 也对此进行了大量思考与研究,然而其近期发表在《ACM 通讯》上的一…

编程语言是怎么发展的?

说到编程语言,我们通常会想到JAVA、C#之类的。不知道你有没有好奇过,编程语言到底是怎么发展而来的。别急,听小编慢慢道来。 编程语言的定义为计算机和人都能识别的语言,通过编程语言,程序员将指令发给计算机&#xf…

什么是 Python 编程语言?

Python:是世界上最流行的解释型编程语言之一。Python 由 Guido van Rossum 设计,作为“ABC”编程语言的继承者,于 1991 年首次发布。它是一种高级通用语言,其设计理念是通过使用缩进来强调代码的可读性。Python 的语言结构旨在帮助…

Python 编程语言

💂 个人网站: 海拥 —— 一个乐于分享技术与快乐的博主🤟 版权: 本文由【海拥】原创、在CSDN首发、需要转载请联系博主💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦💅 想寻找共同摸鱼的小伙伴,…

编程语言应该如何选择?

我们到底该选择学习哪一门语言?(观点仅供参考) 关于编程语言的选择,我一直认为你选择了什么样的编程语言,就会在以后大概率走上什么样的道路。如果你一开始就把编程语言选错了,你将会走许多弯路,最后不得不回到“正确…

第一门编程语言选谁?

Are You Ready? Go! ——第一门编程语言选谁? 金旭亮 说明: 这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹&…

【雕爷学编程】Arduino动手做(09)---火焰传感器模块5

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

异常处理:从生活中的插曲到代码中的挑战

文章目录 1. 异常:生活中与代码中的无奈2. 异常的体系结构:错误与异常3. 异常处理:抓取异常,保障稳定3.1 throw 和 throws3.2 try...catch3.3 finally 4. 自定义异常:灵活应对特定问题结语 在人类的日常生活和编程世界…

刘涛入职阿里,年薪超过欧阳娜娜!揭秘阿里巴巴的明星员工和职级薪资!

【文末有送书福利!】 来 源:网络整合 继前段时间欧阳娜娜加入阿里之后,现又有刘涛入职阿里成为了聚划算官方优选官! 一时,阿里巴巴的职级薪资体系引起广泛关注,不少HR看到后纷纷表示:马云要HR吗…

移动硬盘在电脑上的设备和驱动器中没有读出来,另一台电脑上是好的

今天不知道怎么回事,移动硬盘插到台式机上,设备和驱动器突然就没有读出来,以前都能读出来的,但是右下角硬盘的设备标志显示出来了。 插到另一台电脑上又可以读出来。 不放弃的反复试了几次还是一样。 网上描述的也跟我的情况不一…

关于电脑雷电3、雷电4、USB3.1/3.2全功能Type-C接口能否直接连接Type-C耳机做出如下解释

关于电脑Type-C接口能否直接连接Type-C耳机做出如下解释 1、电脑Type-C接口大多数未配置音频解码器(物理设备),所以直接连接电脑无任何反应(这是硬件问题,不是安装一个驱动能解决的,不管是雷电3、雷电4、U…

计算机控制菜单在哪里,电脑菜单在哪里

电脑菜单根据系统会分布在不同位置,如果是Windows系统,位置在屏幕左下角,点击之后可查看最近使用的程序,以及文档、图片、音乐等等;如果是macos系统,电脑菜单在屏幕左上角,点击苹果图标后可查看系统信息、系…

lscpu的各个参数是什么意思?

$ lscpu Architecture: x86_64 #架构 CPU op-mode(s): 32-bit, 64-bit #运行方式 Byte Order: Little Endian #字节顺序 CPU(s): 96 #逻辑cpu数 On-line CPU(s) list: 0-95 #在线cpu Thread(s) per core: 2 #每个核包含线程…

腾讯高级音视频架构师郭亮:解密互动直播技术

https://www.oschina.net/news/77113/decryption-interactive-broadcast-technology 2016年9月10日,第52期【OSC源创会】在珠海圆满落幕,350余名OSCer齐聚报业大厦,聆听了一场诚意满满、干货多多的技术分享盛会。 本期源创会由5位讲师分别针…

一招让你快手抖音上热门拍摄拥有源源不断的素材军火库-阿甘电商

大家好今天我们来聊聊自己在原创抖音或者快手短视频的过程中会遇到哪些问题。 一、原创素材哪里找? 1、自己瞎琢磨:难度大、火起来的概率低、一旦火非常火 2、做搬运和微创新:各大视频网站找素材,去水印、合拍加工 3、原创改编思维: ①抄:平台什么视频火抄什么 ②重…