机器学习实战 | 六 | 批量学习和在线学习

批量学习和在线学习

这个分类标准是看系统是否可以从传入的数据流中进行增量学习。

批量学习

系统无法进行增量学习——必须使用所有可用的数据进行训练,一般需要耗费大量的时间和计算资源,通畅情况下,都是离线完成的。

离线学习就是先训练系统,然后将其投入生产环境,这时学习过程停止,机器只是将其所学到的应用出来。

如果希望批量学习算法学习新的数据,就必须重新对算法进行训练,训练集不光要包括旧训练集的内容,还要包括新数据,其实就是训练一个新系统取代旧系统,

机器学习算法的训练、评估和启动是很容易自动化的,这使得批量学习算法也能够很快的适应变化,只是需要不断地更新数据集,并根据需要频繁地训练新版本的系统。

批量学习的优势

  • 训练方法简单
  • 适合生产环境

批量学习的弊端

  • 每次都使用完整的数据集进行训练会消耗大量的时间,也就无法适应快速变化的数据(例如:股票预测系统)。
  • 每次都使用完整的数据集进行训练会消耗大量的计算资源,提高了运行成本,也就是说会花费大量的金钱。

如果计算资源、存储空间和训练时间有限,例如:在手机或者火星探测器上进行训练。批量学习算法将显得力不从心,此时,我们将选用能够进行增量学习的算法,我们称它为在线学习。

在线学习

在在线学习系统中,我们可以循序渐进的给系统提供训练数据,逐步积累训练成果。这种提供数据的方式,可以是单独的,也可以采用小批量的小组数据来进行训练,所以系统可以快速的写入最新的数据进行学习。

这种系统需要接受持续的数据流,并且能够对数据流的变化做出快速、自主的反应。

如果不需要对系统的状态进行回滚,那么新的数据经过系统学习之后就可以被丢弃,可以节省大量的存储空间。

对于超大的数据集——超出一台计算机的主存储器容量,在线学习也同样适用(这也被称为核外学习)。算法可以每次只加载一部分数据,并且使用这部分数据进行训练,然后不断重复这个过程,直到所有数据的训练全部完成。

  • 在线学习的整个过程也通常是离线完成的,其实我们称其为增量学习算法更合适。

在线学习系统的一个重要参数是其适应不断变化的数据的速度,即学习率。如果学习率很高,系统将会更快的适应新数据,但是同时会更快的忘记旧数据,反之,如果学习率很低,系统将会有更高的惰性,学习会变得更加缓慢,同时对新数据中的噪声或者非典型数据点的序列更加不敏感。

在线学习现在面临的重大挑战是,如果给系统输入不良数据,系统的性能将会逐渐下降,这些不良数据的来源可能是,例如:机器上的传感器故障,或者是通过认为的恶意刷屏来提高某个搜索结果的排名。为了降低这种风险,你需要密切监控你的系统,一旦检测到性能的下降,应及时中断学习并恢复到之前的学习状态,也可以监控输入数据,使用算法对异常数据进行检测。

原文地址:https://www.cnblogs.com/LYT-Dveloper/p/12834170.html