导言

传统的神经网络都是基于固定的数据集进行训练学习的,一旦有新的,不同分布的数据进来,一般而言需要重新训练整个网络,这样费时费力,而且在实际应用场景中也不适用,所以增量学习应运而生。

增量学习主要旨在解决灾难性遗忘(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的示意图)。

选取数据算法示意图

MARSGGBO♥原创







2019-1-25

论文笔记系列-iCaRL: Incremental Classifier and Representation Learning的更多相关文章

  1. 论文笔记系列-Neural Architecture Search With Reinforcement Learning

    摘要 神经网络在多个领域都取得了不错的成绩,但是神经网络的合理设计却是比较困难的.在本篇论文中,作者使用 递归网络去省城神经网络的模型描述,并且使用 增强学习训练RNN,以使得生成得到的模型在验证集上 ...

  2. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

  3. 论文笔记系列-Auto-DeepLab:Hierarchical Neural Architecture Search for Semantic Image Segmentation

    Pytorch实现代码:https://github.com/MenghaoGuo/AutoDeeplab 创新点 cell-level and network-level search 以往的NAS ...

  4. 【论文笔记系列】AutoML:A Survey of State-of-the-art (下)

    [论文笔记系列]AutoML:A Survey of State-of-the-art (上) 上一篇文章介绍了Data preparation,Feature Engineering,Model S ...

  5. 论文解读( 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 ...

  6. 论文解读(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 ...

  7. 论文解读(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 ...

  8. 论文解读(MVGRL)Contrastive Multi-View Representation Learning on Graphs

    Paper Information 论文标题:Contrastive Multi-View Representation Learning on Graphs论文作者:Kaveh Hassani .A ...

  9. 论文解读(GRCCA)《 Graph Representation Learning via Contrasting Cluster Assignments》

    论文信息 论文标题:Graph Representation Learning via Contrasting Cluster Assignments论文作者:Chun-Yang Zhang, Hon ...

随机推荐

  1. 阿里面试:MYSQL的引擎区别

    MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一个缺点 ...

  2. springboot学习笔记-5 springboot整合shiro

    shiro是一个权限框架,具体的使用可以查看其官网 http://shiro.apache.org/  它提供了很方便的权限认证和登录的功能. 而springboot作为一个开源框架,必然提供了和sh ...

  3. 信用评分卡 (part 3of 7)

    python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ...

  4. Python中集合的操作

    Python集合的基本详情 集合是无序的 集合是可变数据类型 集合属于不可哈希范围 集合自动去重 集合的操作 set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} ...

  5. Python list 初始化技巧

    1.一维列表 1.1 递增列表 # 初始化递增的list,与L = [i for i in range(10)] 效果相同 L = range(10) # 版本变化L = i for i in ran ...

  6. Spring+Mybatis+SpringMVC+Atomikos多数据源共存+不同数据库事物一致性处理

    网上找了一大堆的例子,没一个跑通的,都是copy转发,哎,整理得好辛苦..做个笔记,方便正遇到此问题的猿们能够得到帮助....废话不多说,贴代码..... 项目结构说明: 1.dao层的admin.w ...

  7. CentOS7用Mono和MonoDevelop写C#程序

    MonoDevelop 是个Linux平台上的开放源代码集成开发环境,主要用来开发Mono与.NET Framework软件. MonoDevelop 整合了很多Eclipse与Microsoft V ...

  8. Android开发入门经典实例

    开发实例概述 今天带大家做一个简单的Android App,这个App会显示创新工程实践老师们的照片和信息,不妨先看一看效果: 虽然这个App非常简单,但是涉及到了Android开发中的一些关键知识, ...

  9. Web项目发布步骤总结

    1.在开发好项目,打包成war格式 2.购买云服务器,建议去阿里云购买(ecs),教程如下 http://jingyan.baidu.com/article/4e5b3e195ae68a91901e2 ...

  10. Linux 下装逼技巧

    ``` 1.下载cmatrix-1.2a.tar.gz文件 [root@localhost ~]# wget https://jaist.dl.sourceforge.net/project/cmat ...