机器学习中的集成、在线、批量、迁移……各种学习的区别
一、批量学习
在监督学习的批量方法中,多层感知器的突出权值的调整在训练样本集合的所有N个例子都出现后进行,这构成了训练的一个回合。换句话说,批量学习的代价函数是由平均误差能量定义的。多层感知器的突触权值的调整是以回合-回合为基础的。相应地,学习曲线的一种实现方式是通过描绘平均误差能量对回合数的图形而得到,对于训练的每一个回合,训练样本集合的样例是随机选取的。学习曲线通过对足够大量的这样实现的总体平均来计算,这里每次实现是在随机选取不同初始条件下完成的。这一特点符合交叉验证的规律,实验中的实验集、验证集、测试集一般都是批量处理的典例。
优点:
(1)消除样本顺序的影响
(2)对梯度向量的精确估计,因此,在简单条件下,保证了这一方法最速下降到局部极小点的收敛性。
(3)学习的并行性。
缺点:
(1)有着存储需求
二、在线学习
在监督学习的在线方法下,对于多层感知器突触权值的调整是以样例-样例为基础的,用来最小化的代价函数是全体瞬时误差能量。和批量学习一样,在线学习的学习曲线是通过足够大量的随机选取的初始条件上的总体平均来计算的。对于给定的网络结构,在线学习下获得的学习曲线和批量学习下获得的学习曲线有着很大的不同。
给定训练样本以随机的方式呈现给网络,在线学习的使用使得在多维权值空间中的搜索事实上是随机的;正是由于这个原因,在线学习方法有时被称为随机方法。
优点:
(1)容易执行
(2)对于大规模和困难模式分类问题它提供有效解。
(3)随机性使得不容易陷入局部极值点
(4)存储量少得多
三、强化学习
所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(强化信号)函数值最大,强化学习不同于连接主义学习中的监督学习,主要表现在教师信号上,强化学习中由环境提供的强化信号是对产生动作的好坏作一种评价(通常为标量信号),而不是告诉强化学习系统RLS(reinforcement learning system)如何去产生正确的动作。由于外部环境提供的信息很少,RLS必须靠自身的经历进行学习。通过这种方式,RLS在行动-评价的环境中获得知识,改进行动方案以适应环境。
在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈 到模型,模型必须对此立刻作出调整。设计一个回报函数(reward function),如果learning agent(如上面的四足机器人、象棋AI程序)在决定一步后,获得了较好的结果,那么我们给agent一些回报(比如回报函数结果为正),得到较差的结果,那么回报函数为负。比如,四足机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。
常见的应用场景包括动态系统以及机器人控制等。常见算法包括Q-Learning以及时间差学习(Temporal difference learning)
四、主动学习
主动学习(active learning),指的是这样一种学习方法:有的时候,有类标的数据比较稀少而没有类标的数据是相当丰富的,但是对数据进行人工标注又非常昂贵,这时候,学习算法可以主动地提出一些标注请求,将一些经过筛选的数据提交给专家进行标注。这个筛选过程也就是主动学习主要研究的地方了,怎么样筛选数据才能使得请求标注的次数尽量少而最终的结果又尽量好。主动学习的过程大致是这样的,有一个已经标好类标的数据集K(初始时可能为空),和还没有标记的数据集U,通过K集合的信息,找出一个U的子集C,提出标注请求,待专家将数据集C标注完成后加入到K集合中,进行下一次迭代。按wiki上所描述的看,主动学习也属于半监督学习的范畴了,但实际上是不一样的,半监督学习和直推学习(transductive learning)以及主动学习,都属于利用未标记数据的学习技术,但基本思想还是有区别的。如上所述,主动学习的“主动”,指的是主动提出标注请求,也就是说,还是需要一个外在的能够对其请求进行标注的实体(通常就是相关领域人员),即主动学习是交互进行的。而半监督学习,特指的是学习算法不需要人工的干预,基于自身对未标记数据加以利用。
五、直推学习
它与半监督学习一样不需要人工干预,不同的是,直推学习假设未标记的数据就是最终要用来测试的数据,学习的目的就是在这些数据上取得最佳泛化能力。相对应的,半监督学习在学习时并不知道最终的测试用例是什么。也就是说,直推学习其实类似于半监督学习的一个子问题,或者说是一个特殊化的半监督学习,所以也有人将其归为半监督学习。
六、增量学习与减量学习
online learning包括了incremental learning和decremental learningincremental learning增量学习,是指一个学习系统能不断地从新样本中学习新的知识,并能保存大部分以前已经学习到的知识。增量学习非常类似于人类自身的学习模式。因为人在成长过程中,每天学习和接收新的事物,学习是逐步进行的,而且,对已经学习到的知识,人类一般是不会遗忘的。
一个增量学习算法应同时具有以下特点:
1)可以从新数据中学习新知识;
2)以前已经处理过的数据不需要重复处理;
3)每次只有一个训练观测样本被看到和学习;
4)学习新知识的同时能保存以前学习到的大部分知识;
5)—旦学习完成后训练观测样本被丢弃;
6)学习系统没有关于整个训练样本的先验知识;增量式算法:就是每当新增数据时,并不需要重建所有的知识库,而是在原有知识库的基础上,仅做由于新增数据所引起的更新,这更加符合人的思维原理。
decremental learning递减学习,即抛弃“价值最低”的保留的训练样本。这两个概念在incremental and decremental svm这篇论文里面可以看到具体的操作过程。
七、在线学习与离线学习offline learning and online learning.
In offline learning, the whole training data must be available at the time of model training. Only when training is completed can the model be used for predicting. In contrast, online algorithms process data sequentially. They produce a model and put it in operation without having the complete training dataset available at the beginning. The model is continuously updated during operation as more training data arrives.
八、迁移学习(Transfer Learning)
在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型;然后利用这个学习到的模型来对测试文档进行分类与预测。然而,我们看到机器学习算法在当前的Web挖掘研究中存在着一个关键的问题:一些新出现的领域中的大量训练数据非常难得到。我们看到Web应用领域的发展非常快速。大量新的领域不断涌现,从传统的新闻,到网页,到图片,再到博客、播客等等。传统的机器学习需要对每个领域都标定大量训练数据,这将会耗费大量的人力与物力。而没有大量的标注数据,会使得很多与学习相关研究与应用无法开展。其次,传统的机器学习假设训练数据与测试数据服从相同的数据分布。然而,在许多情况下,这种同分布假设并不满足。通常可能发生的情况如训练数据过期。这往往需要我们去重新标注大量的训练数据以满足我们训练的需要,但标注新数据是非常昂贵的,需要大量的人力与物力。从另外一个角度上看,如果我们有了大量的、在不同分布下的训练数据,完全丢弃这些数据也是非常浪费的。如何合理的利用这些数据就是迁移学习主要解决的问题。迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。迁移学习(Transfer Learning)的目标就是将从一个环境中学到的知识用来帮助新环境中的学习任务。因此,迁移学习不会像传统机器学习那样作同分布假设。举一个通俗的例子,一个会下象棋的人可以更容易的学会下围棋;一个认识桌子的人可以更加容易的认识椅子;
在迁移学习方面的工作目前可以分为以下三个部分:同构空间下基于实例的迁移学习,同构空间下基于特征的迁移学习与异构空间下的迁移学习。基于实例的迁移学习有更强的知识迁移能力,基于特征的迁移学习具有更广泛的知识迁移能力,而异构空间的迁移具有广泛的学习与扩展能力。
迁移学习即一种学习对另一种学习的影响,它广泛地存在于知识、技能、态度和行为规范的学习中。任何一种学习都要受到学习者已有知识经验、技能、态度等的影响,只要有学习,就有迁移。迁移是学习的继续和巩固,又是提高和深化学习的条件,学习与迁移不可分割。对于人工智能的发展路径,很多人可能对基于大数据的人工智能很熟悉,但其实还有基于小样本的尝试和迁移,这也是人工智能的一种路径。
九、集成学习(Ensemble Learning)
在机器学习的有监督学习算法中,我们的目标是学习出一个稳定的且在各个方面表现都较好的模型,但实际情况往往不这么理想,有时我们只能得到多个有偏好的模型(弱监督模型,在某些方面表现的比较好)。集成学习就是组合这里的多个弱监督模型以期得到一个更好更全面的强监督模型,集成学习潜在的思想是即便某一个弱分类器得到了错误的预测,其他的弱分类器也可以将错误纠正回来。
集成学习在各个规模的数据集上都有很好的策略。
数据集大:划分成多个小数据集,学习多个模型进行组合
数据集小:利用Bootstrap方法进行抽样,得到多个数据集,分别训练多个模型再进行组合
这篇博客介绍一下集成学习的几类:Bagging,Boosting以及Stacking。
Bagging
Bagging是bootstrap aggregating的简写。先说一下bootstrap,bootstrap也称为自助法,它是一种有放回的抽样方法,目的为了得到统计量的分布以及置信区间。具体步骤如下
采用重抽样方法(有放回抽样)从原始样本中抽取一定数量的样本
根据抽出的样本计算想要得到的统计量T
重复上述N次(一般大于1000),得到N个统计量T
根据这N个统计量,即可计算出统计量的置信区间
在Bagging方法中,利用bootstrap方法从整体数据集中采取有放回抽样得到N个数据集,在每个数据集上学习出一个模型,最后的预测结果利用N个模型的输出得到,具体地:分类问题采用N个模型预测投票的方式,回归问题采用N个模型预测平均的方式。
例如随机森林(Random Forest)就属于Bagging。随机森林简单地来说就是用随机的方式建立一个森林,森林由很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。
在我们学习每一棵决策树的时候就需要用到Bootstrap方法。在随机森林中,有两个随机采样的过程:对输入数据的行(数据的数量)与列(数据的特征)都进行采样。对于行采样,采用有放回的方式,若有N个数据,则采样出N个数据(可能有重复),这样在训练的时候每一棵树都不是全部的样本,相对而言不容易出现overfitting;接着进行列采样从M个feature中选择出m个(m<<M)。最近进行决策树的学习。
预测的时候,随机森林中的每一棵树的都对输入进行预测,最后进行投票,哪个类别多,输入样本就属于哪个类别。这就相当于前面说的,每一个分类器(每一棵树)都比较弱,但组合到一起(投票)就比较强了。
Boosting
提升方法(Boosting)是一种可以用来减小监督学习中偏差的机器学习算法。主要也是学习一系列弱分类器,并将其组合为一个强分类器。Boosting中有代表性的是AdaBoost(Adaptive boosting)算法:刚开始训练时对每一个训练例赋相等的权重,然后用该算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在每次学习以后更注意学错的样本,从而得到多个预测函数。具体可以参考《统计学习方法》。
之前提到过的GBDT(Gradient Boost Decision Tree)也是一种Boosting的方法,与AdaBoost不同,GBDT每一次的计算是为了减少上一次的残差,GBDT在残差减少(负梯度)的方向上建立一个新的模型。可以参考Gradient Boosting - 知乎专栏。
Stacking
Stacking方法是指训练一个模型用于组合其他各个模型。首先我们先训练多个不同的模型,然后把之前训练的各个模型的输出为输入来训练一个模型,以得到一个最终的输出。理论上,Stacking可以表示上面提到的两种Ensemble方法,只要我们采用合适的模型组合策略即可。但在实际中,我们通常使用logistic回归作为组合策略。
如下图,先在整个训练数据集上通过bootstrap抽样得到各个训练集合,得到一系列分类模型,称之为Tier 1分类器(可以采用交叉验证的方式学习),然后将输出用于训练Tier 2 分类器。
Bagging与Boosting
Bagging和Boosting采用的都是采样-学习-组合的方式,但在细节上有一些不同,如
Bagging中每个训练集互不相关,也就是每个基分类器互不相关,而Boosting中训练集要在上一轮的结果上进行调整,也使得其不能并行计算
Bagging中预测函数是均匀平等的,但在Boosting中预测函数是加权的
在算法学习的时候,通常在bias和variance之间要有一个权衡。bias与variance的关系如下图,因而模型要想达到最优的效果,必须要兼顾bias和variance,也就是要采取策略使得两者比较平衡。
从算法来看,Bagging关注的是多个基模型的投票组合,保证了模型的稳定,因而每一个基模型就要相对复杂一些以降低偏差(比如每一棵决策树都很深);而Boosting采用的策略是在每一次学习中都减少上一轮的偏差,因而在保证了偏差的基础上就要将每一个基分类器简化使得方差更小。
十、总结
个人认为上面的有些学习概念是表达同样的意思,如离线学习和批量学习,可能是专家们专注的侧重面不同吧!具体这些学习方法的差别,大家仔细看一下概念,自己慢慢的思考一下!机器学习方面新词的不断出现证符合计算机整体行业的发展规律。