增量学习
增量学习是指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分已经学习到的知识。其非常类似于人类自身的学习模式,设想一下,当我们学会了 0-9 识别与书写,再学习 A-Z 字母表的识别与书写后我们仍然记得 0-9 数字的识别与书写,而目前传统分类任务是一个网络学习了 0-9 数字分类,再用这个网络学习 A-Z 字母分类后,就会难以对数字有一个很好的分类,如果想兼顾 0-9 和 A-Z 则需要将所有种类的样本都输入到神经网络进行训练,这无疑是很耗时耗力的。
所以增量学习主要关注的是灾难性遗忘(Catastrophic forgetting),平衡新知识与旧知识之间的关系,即如何在学习新知识的情况下不忘记旧知识。引用Robipolikar对增量学习算法的定义,即一个增量学习算法应同时具有以下特点:
1) 可以从新数据中学习新知识
2) 以前已经处理过的数据不需要重复处理
3) 每次只有一个训练观测样本被看到和学习
4) 学习新知识的同时能保持以前学习到的大部分知识
5) 一旦学习完成后训练观测样本被丢弃
6) 学习系统没有关于整个训练样本的先验知识
增量学习与迁移学习
在概念上,增量学习与迁移学习最大的区别就是对待旧知识的处理,增量学习在学习新知识的同时需要尽可能保持旧知识,不管它们类别相关还是不相关的,而迁移学习则只是借助旧知识来学习新知识,学习完成后只关注在新知识上的性能,不再考虑在旧知识上的性能。
几种增量学习方法
feature extraction: 完全不会改变共享的layer和最开始用旧数据训练好的分类器,然后用旧任务训练好的的模型中的某个layer来提取特征,然后仅仅训练新任务分类器
fine tuning:新的类别的数据进来后,完全不会改变旧任务的分类器,会用非常小的学习率去调整共享参数,尽量让改变的共享模型不会影响到旧任务,又可以适当帮助新任务。还有可能冻住共享模型的某些conv层,仅仅finetune后面的fully connected layers, 这种介于feature extract和fine tune之间
joint training:所有的参数都需要重新学习,要把旧的数据新的数据都储存下来,这个方法内存消耗训练时间都是最多的,但是效果是最好的,可算作增量学习的upper bound