论文笔记系列-iCaRL: Incremental Classifier and Representation Learning
导言
传统的神经网络都是基于固定的数据集进行训练学习的,一旦有新的,不同分布的数据进来,一般而言需要重新训练整个网络,这样费时费力,而且在实际应用场景中也不适用,所以增量学习应运而生。
增量学习主要旨在解决灾难性遗忘(Catastrophic-forgetting) 问题,本文将要介绍的《iCaRL: Incremental Classifier and Representation Learning》一文中对增量学习算法提出了如下三个要求:
a) 当新的类别在不同时间出现,它都是可训练的
b) 任何时间都在已经学习过的所有类别中有很好的分类效果
c) 计算能力与内存应该随着类别数的增加固定或者缓慢增长
有条件的可以去油管听听原作者对这篇论文的讲座:Christoph Lampert: iCaRL- incremental Classifier and Representation Learning
简要概括
本文提出的方法只需使用一部分旧数据而非全部旧数据就能同时训练得到分类器和数据特征从而实现增量学习。
大致流程如下:
1.使用特征提取器\(φ(·)\)对新旧数据(旧数据只取一部分)提取特征向量,并计算出各自的平均特征向量
2.通过最近均值分类算法(Nearest-Mean-of-Examplars) 计算出新旧数据的预测值
3.在上面得到的预测值代入如下loss函数进行优化,最终得到模型。
本文的重点在上面三个步骤中用黑体标出,下面对这三个进行具体介绍
1.平均特征向量
这个其实很好理解,就是把某一类的图像的特征向量都计算出来,然后求均值,注意本文对于旧数据,只需要计算一部分的数据的特征向量。
什么意思呢?
假设我们现在已经训练了\(s-1\)个类别的数据了,记为\(X^1,...,X^{s-1}\),因为通常内存资源有限,所以假设从每个旧数据类中选出一定数量的数据组成examplar sets,记为\(P^1,...,P^{s-1}\)。
然后现在又得到了\(t-s\)个新数据,记为\(X^s,...,X^t\)。同理我们也需要提取出一部分数据,记为\(P^s,...,P^t\)
如何选取数据可参见文末算法示意图。
有了新旧数据后,我们可以先将它们合并,记为\(P=\{P^1,...,P^t\}\),然后就可以使用特征提取器\(φ(·)\)计算每个类别的平均特征向量了。
2.最近均值分类算法(Nearest-Mean-of-Examplars classification)
算法第七行在文首给出的讲座中,使用的是\(\|φ(x)-μ_y\|^2\)。 emm... anyway,这不是重点,pass。
3.优化loss函数
机器学习归根到底其实就是优化,那么loss函数如何设定才能解决灾难性遗忘的问题呢?
本文的损失函数定义如下,由新数据分类loss和旧数据蒸馏loss组成。下面公式中的\(g_y(x_i)\)表示分类器,即\(g_y(x)=\frac{1}{1+e^{-{w_y^Tφ(x)}}}\)。
其实该想法其实是基于LWF这篇论文,LWF的loss函数如下:
结果
本文最终结果如下图示,将iCaRL,fixed representation(feature extraction), fine-tuning和LWF进行了比较,可以看到iCaRL表现最好。
讨论
需要说明的是iCaRL和LWF最大的不同点有如下:
- iCaRL在训练新数据时仍然需要使用到旧数据,而LWF完全不用。所以这也就是为什么LWF表现没有iCaRL好的原因,因为随着新数据的不断加入,LWF逐渐忘记了之前的数据特征。
- iCaRL提取特征的部分是固定的,只需要修改最后分类器的权重矩阵。而LWF是训练整个网络(下图给出了LWF和fine-tuning以及feature extraction的示意图)。
选取数据算法示意图
论文笔记系列-iCaRL: Incremental Classifier and Representation Learning的更多相关文章
- 论文笔记系列-Neural Architecture Search With Reinforcement Learning
摘要 神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的.在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RNN,以使得生成得到的模型在验证集上 ...
- 论文笔记系列-Neural Network Search :A Survey
论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...
- 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation
Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...
- 【论文笔记系列】AutoML:A Survey of State-of-the-art (下)
[论文笔记系列]AutoML:A Survey of State-of-the-art (上) 上一篇文章介绍了Data preparation,Feature Engineering,Model S ...
- 论文解读( N2N)《Node Representation Learning in Graph via Node-to-Neighbourhood Mutual Information Maximization》
论文信息 论文标题:Node Representation Learning in Graph via Node-to-Neighbourhood Mutual Information Maximiz ...
- 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》2
Paper Information 论文作者:Zhen Peng.Wenbing Huang.Minnan Luo.Q. Zheng.Yu Rong.Tingyang Xu.Junzhou Huang ...
- 论文解读(GMI)《Graph Representation Learning via Graphical Mutual Information Maximization》
Paper Information 论文作者:Zhen Peng.Wenbing Huang.Minnan Luo.Q. Zheng.Yu Rong.Tingyang Xu.Junzhou Huang ...
- 论文解读(MVGRL)Contrastive Multi-View Representation Learning on Graphs
Paper Information 论文标题:Contrastive Multi-View Representation Learning on Graphs论文作者:Kaveh Hassani .A ...
- 论文解读(GRCCA)《 Graph Representation Learning via Contrasting Cluster Assignments》
论文信息 论文标题:Graph Representation Learning via Contrasting Cluster Assignments论文作者:Chun-Yang Zhang, Hon ...
随机推荐
- Luogu P4248 [AHOI2013]差异
题目链接 \(Click\) \(Here\) 神仙题.或者可能我太菜了没见过后缀数组的骚操作,然后就被秀了一脸\(hhhhh\) \[\sum\limits_{1<=i < j < ...
- Js封装的动画函数实现轮播图
---恢复内容开始--- 效果图说明:当鼠标移到哪一个按钮上的时候会自动跳转到某一张图片上,并且按钮会以高亮显示 项目目录结构 用到的js封装的animate()动画 function ...
- Nginx 性能优化有这篇就够了!
目录: 1.Nginx运行工作进程数量 Nginx运行工作进程个数一般设置CPU的核心或者核心数x2.如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 g ...
- Vue之vue-cli安装与简单调试
一.安装nodejs https://nodejs.org/en/download/ nodejs简单使用 node -v 查看版本 npm -v 查看对应npm版本 如果npm版本太低小于 4.0 ...
- django_admin用法
Django内置的admin Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件,使用方式有: 依赖APP: django.contrib.auth django.con ...
- 《Apache Kafka 实战》读书笔记-认识Apache Kafka
<Apache Kafka 实战>读书笔记-认识Apache Kafka 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.kafka概要设计 kafka在设计初衷就是 ...
- JAVA核心技术I---JAVA基础知识(内部类)
一:内部类概述 (一)定义 内部类(Inner Class)是定义在其他类中或方法中的类,包含内部类的类通常称作Enclosing Class 内部类的功能通常与包含它的类的功能有紧密的关联 内部类的 ...
- IT术语
目录: 心跳检测 故障切换 主从配置 负载均衡 集群LVS 多集群横向扩容 纵向扩容 CDN DOS DDOS 会话跟踪 CSRF
- redis互斥锁简易设计原理【原】
redis互斥锁设计 方式一: 使用 set(arg1,arg2,arg3,arg4,arg5) 绿线部分代码 //如果不存在就设置,且设置成功60秒后key自动失效,成功会返回字符串"OK ...
- 【1】【leetcode-127】单词接龙word-ladder
(不会,经典广度优先搜索) 给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度.转换需遵循如下规则: 每次转换只能改 ...