增量学习的理解(迁移学习,fit_genrtor区别)

近日看到了有关增量学习的理解,一开始以为增量学习就是Keras中的fit_genetor,相当于分批次进行学习,防止数据量太大造成内存崩溃而无法学习,并且增量学习可以结合pandas中每次读取一定数目的数据的功能来进行传统机器学习(SVM,lightgbm等)和神经网络的学习。

后来了解到增量学习分为三种:增量学习可以分为3类:样本增量学习(SIL),类别增量学习(CIL),特征增量学习(FIL)
1、SIL
问题:由于新数据的各种原因,样本的特征值可能会改变,每个类别的比例也会改变。这些都会影响分类的准确率。
任务:因此,需要确保在现有知识的情况下,通过新样本的增量学习来提取新知识,融合新旧知识以提高分类的准确性。
2、 CIL
任务:识别新类,并将其加入现有类别的集合中,提升分类的准确性和智能。
3、FIL
一些新的属性特征能够将分类提升到一个很大的程度,并提升分类准确率。
任务:在现有特征空间的基础上,加入新的属性特征,构建新的特征空间,提升分类准确率。

说下对样本增量学习SIL的理解,大部分的博客都是在说sklearn中的机器学习模型或者xgboost\lightgbm模型的增量学习,他们所表达的意思就是模型无法一次加载所有的数据,只能每次输入一部分数据进行训练(分batch的话是一次读取全部的数据,然后再分batch),那么这样就可以继续训练而不会导致memoryout等错误了。而我的理解是增量学习确实可以解决大数据量的一个问题,就和Keras的fit_genetor一样的思想,但是参考上述 “SIL” 的概念,样本量学习不能简单的这么理解,因为参照上述的概念,说的是增量学习不会忘记旧知识,而如果单纯这样做的话,如果我最后一次输入的数据比较差的话(甚至可以认为里面包含很多错误的数据),那么我的模型就会努力去拟合这次的数据,换个角度也可以认为越往后输入的数据对模型的影响越大,那么一开始输入的数据怎么办呢?这个做法是不是增量学习的思想违背了,因为忘记了旧的知识,实际上来说这里说的样本增量学习不可能完全记住旧知识,我们使用sklearn中的增量学习方法是根据这个机器学习算法本身具有增量学习的特性实现的(一些分类算法的分类原则自然支持增量学习:朴素贝叶斯,支持向量机,决策树,随机森林,人工神经网络,K-最近邻,模糊粗糙集理论,学习++ NC等。在该博客翻译的论文中提到)。
这篇文章说的还有些道理:Xgboost之增量学习
增强学习、增量学习、迁移学习——概念性认知
增量学习-论文速读

接下来说一说CIL是什么?
其实类别增量学习特别容易和迁移学习混淆,因为CIL就是说学习新的类别,比如我现在可以识别A和B物体,现在想增加对C物体的识别,如果我直接利用原来训练好的网络直接微调来识别C物体,这就叫做迁移学习了,因为新的网络已经无法识别A、B了。那么怎么办?方法一:利用A B C三个物体的数据集在原有模型上修改全连接层,重新训练一个新的三类别识别模型,这个方法是挺好的,但是CIL有一个假设就是,原始数据不可得的假设,也就是我们的A B 物体训练数据集以及训练使用的标注信息都没有,在此情况下如何进行?第二种方法:改进模型,还是在原有的基础上进行改进,这里有一种方法就是进行loss的改进,我将原始模型做一个拷贝,一份不动为旧模型,另一份改动微调重新训练为新模型,同时考虑网络在新的类别C上的预测性能以及原始类别在新模型和旧模型上的响应差异,LOSS=新类别检测LOSS1+数据在旧模型和新模型上的输出差异LOSS2(loss2主要是想让旧模型和新模型上的输出相似,以达到新模型不会改变旧模型的预测效果这一想法)。
Incremental Learning of Object Detectors without Catastrophic Forgetting详解-讲解了该理论
另外一篇增量学习的论文,2017 cvpr Visual Decathlon Challenge 竞赛冠军,wyk值得一看wyk

简单介绍完了增量学习,那么先说一下他和迁移学习以及keras的fit_genetor的区别:

1、和迁移学习的区别:
迁移学习是从一个学习任务迁移到另一个学习任务,根据源数据的相似程度和训练数据量的大小,来决定是微调还是调整全部的层的权重。而增量学习主要思想在于学习新知识,它相当于一个好学生,学习新知识的同时不会忘记旧知识,比如原模型可以识别圆形,经过增量学习,学习如何识别三角形,那么改模型现在就可以学习圆形和三角形两种形状了,而迁移学习则把学习三角形当成一个新任务,之前的旧知识旧忘掉了。
2、和Keras fit_genetor 的区别:
严格来讲两者是没有任何联系的,但是可能会混淆概念,增量学习的样本增量学习(SIL)可以理解为fit_genetor的训练,因为数据量太大,无法一次加载到内存,但是又不想进行抽样,抽样数据可能无法代表整体数据的分布(特别当数据是偏斜的),这时候增量学习就相当于每次取其中的一部分数据进行训练,这样持续多次就可以把全部的数据学习完成,前提是该机器学习模型具有增量学习的特性,否则严格意义上只能算是一个训练的小trick,并非增量学习。而fit_genetor也是这个原理,只不过Keras一般只用于神经网络,对于传统的机器学习方法就无计可施了,而增量学习就是解决的这个问题,Keras应该也是从增量学习学到的技巧。

由于我的方向及项目未涉及到增量学习,有理解错误的地方还请指出

持更。。。。(看个论文:A Survey on Incremental Learning

参考:https://blog.csdn.net/Chris_zhangrx/article/details/84786399
https://blog.csdn.net/cp_oldy/article/details/81669682#41_Sample_Incremental_Learning_69

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值