分布式机器学习
使用分布式机器学习,大体有三种情况:一是计算量太大,二是训练数据太多, 三是模型规模太大。当机器学习和实际应用相结合时,无法避免海量训练数据、问题复杂程度高等诸多挑战,因此我们需要使用更复杂的机器学习模型来解决问题,并且还需要动用计算机集群来完成数据处理、模型训练等任务。分布式机器学习研究的就是如何使用计算机集群来训练大规模机器学习模型。分布式机器学习涉及如何分配训练任务,调配计算资源,协调各个功能模块,以达到训练速度与精度的平衡。
组成
一个分布式机器学习系统通常包含以下几个模块:
- 数据和模型划分模块:将数据或模型进行相应的划分,并将划分后不同的部分下发给不同的工作节点。
- 单机优化模块:每个工作节点根据分配给自己的局部训练数据和子模型进行训练
- 通信模块:单机优化模块利用局部数据求得本地模型的更新以后,就会涉及多机、多线程协作的问题,因为只有信息共享,才能把各个工作节点有机地组合在一起
- 模型和数据聚合模块等
分布式机器学习系统的框架如下:
目的
1.机器学习的目的是从数据中学习出规律或模型,其对数据细节的细小差别具有很强的鲁棒性。因此,分布式机器学习不需要像其他分布式计算任务那样要求计算过程在单机和集群上的执行是严格一致的,而是要求所学习到的规律和模型在统计上具有一致性。
2.机器学习的终极目的是利用所学的模型来完成分类,回归等任务,而这些任务完成的好坏是依据模型的测试精度来判定的。且机器学习关心的是在测试集上的期望精度而不是在训练集上的经验精度,所以在分布式实现中引入一些微小噪声,很可能反而会增加学习过程的泛化能力,带来更好的预测结果。
综合上述两点,在分布式机器学习过程中,我们需要考虑它对数据的鲁棒性,对算法精度的特别要求,以及机器学习的泛化过程等。