导言

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

增量学习主要旨在解决灾难性遗忘(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. Failed to execute aapt:Process 'command '/build-tools/28.0.2/aapt'' finished with non-zero exit value 1

    Caused by: com.android.ide.common.process.ProcessException: Error while executing process /Users/hou ...

  2. Luogu P2463 [SDOI2008]Sandy的卡片

    题目链接 \(Click\) \(Here\) 真的好麻烦啊..事实证明,理解是理解,一定要认认真真把板子打牢,不然调锅的时候真的会很痛苦..(最好是八分钟能无脑把\(SA\)码对的程度\(QAQ\) ...

  3. pt-online-schema-change 测试使用-包含生成测试数据

    pt-online-schema-change 测试使用-包含生成测试数据 # 参考网址: https://www.2cto.com/database/201703/618280.html 一.简要描 ...

  4. 全局拦截各种http请求

    http请求无非就是ajax.src.href.表单 function hookAJAX() { XMLHttpRequest.prototype.nativeOpen = XMLHttpReques ...

  5. flask get和post请求使用

    直接看代码 #-*-coding:utf-8-*- from flask import Flask,url_for,redirect,render_template,request app = Fla ...

  6. layui(七)——rate组件常见用法总结

    layui中提供了rate组件,用法很简单,直接上代码. <div id="test1"></div> <script> layui.use(' ...

  7. 13个.Net开源的网络爬虫

    请点击此处输入图片描述 1:.Net开源的跨平台爬虫框架 DotnetSpider Star:430 DotnetSpider这是国人开源的一个跨平台.高性能.轻量级的爬虫软件,采用 C# 开发.目前 ...

  8. window.location.reload();页面实现跳转和刷新

    1 history.go(0)2 location.reload()3 location=location4 location.assign(location)5 document.execComma ...

  9. java深copy (伪深copy)【原】

    Teacher.java package test.clone; /** * 老师 * 深copy需要实现Cloneable接口 * @author King * */ public class Te ...

  10. POJ - 2057 The Lost House(树形DP+贪心)

    https://vjudge.net/problem/POJ-2057 题意 有一只蜗牛爬上某个树枝末睡着之后从树上掉下来,发现后面的"房子"却丢在了树上面,.现在这只蜗牛要求寻找 ...