最近在看周老师的机器学习看到关于增量学习的概念,之前没有接触过就在网上查了查,现在总结一下
增量学习(Incremental Learning)是指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分以前已经学习到的知识。增量学习非常类似于人类自身的学习模式。
因为人在成长过程中,每天学习和接收新的事物,学习是逐步进行的,而且,对已经学习到的知识,人类一般是不会遗忘的。
增量学习主要表现在两个方面:一方面由于其无需保存历史数据,从而减少存储空间的占用;另一方面增量学习在当前的样本训练中充分利用了历史的训练结果,从而显著地减少了后续训练的时间。
增量学习主要有两方面的应用:一是用于数据库非常大的情形,例如Web日志记录;二是用于流数据,因为这些数据随着时间在不断的变化,例如股票交易数据.另外在增量学习中,现有的增量学习算法大多采用决策树和神经网络算法实现的,它们在不同程度上具有以下两方面的缺点:一方面由于缺乏对整个样本集期望风险的控制,算法易于对训练数据产生过量匹配;另一方面,由于缺乏对训练数据有选择的遗忘淘汰机制,在很大程度上影响了分类精度。
最简单的方法之一是增量学习存储的所有数据允许重新训练。在另一个极端是数据的训练、一个实例接一个实例,一个流行的在线学习。采用在线学习算法的方法已经实现增量学习但没有考虑所有的学习问题,特别是学习的新类。
随着人工智能和机器学习的发展,人们开发了很多机器学习算法。这些算法大部分都是批量学习(Batch Learning)模式,即假设在训练之前所有训练样本一次都可以得到,学习这些样本之后,学习过程就终止了,不再学习新的知识。然而在实际应用中,训练样本通常不可能一次全部得到,而是随着时间逐步得到的,并且样本反映的信息也可能随着时间产生了变化。如果新样本到达后要重新学习全部数据,需要消耗大量时间和空间,因此批量学习的算法不能满足这种需求。只有增量学习算法可以渐进的进行知识更新,且能修正和加强以前的知识,使得更新后的知识能适应新到达的数据,而不必重新对全部数据进行学习。增量学习降低了对时间和空间的需求,更能满足实际要求。虽然增量学习的研究已经有一定的历史,但由于不同的作者对其理解不同,至今增量学习也没有统一的定义。许多作者甚至将增量学习等同于在线学习(Online Learning)。这里,引用Robipolikar对增量学习算法的定义,即一个增量学习算法应同时具有以下特点:
1)可以从新数据中学习新知识;
2)以前已经处理过的数据不需要重复处理;
3)每次只有一个训练观测样本被看到和学习;
4)学习新知识的同时能保存以前学习到的大部分知识;
5)—旦学习完成后训练观测样本被丢弃;
6)学习系统没有关于整个训练样本的先验知识;
开展增量学习的研究具有以下两方面非常重要的意义:
1)随着数据库以及互联网技术的快速发展和广泛应用,社会各部门积累了海量数据,而且这些数据量每天都在快速增加。如何从这些数据中获取有用信息以及对数据进行分析和处理是一项艰苦的工作。而传统的批量学习方式是不能适应这种需求的,只有通过增量学习的方式才能有效解决这种需求。
2)通过对增量学习模型的研究,能够使我们从系统层面上更好地理解和模仿人脑的学习方式和生物神经网络的构成机制,为开发新计算模型和有效学习算法提供技术基础。