知名的Apache Flink大数据分析系统研究者在2014年VLDB会议主题报告和论文中,从数据分析的复杂程度和数据规模的维度,考察了现有的相关研究工作和系统,如图4-4所示。现有的系统要么主要用于小规模复杂分析,要么主要用于大规模的简单统计分析,缺少既具有复杂数据分析能力又具有强大的大数据处理能力的大数据分析系统;文章作者甚至认为,对于行业大数据分析人员而言,现有的工具还处于“石器时代”。
图4-4 研究者Apache Flink提出的分析维度和研究现状
与此同时,著名的UC Berkeley AMPLab在研究基于Spark的机器学习库MLBase时,从计算性能和系统易用性两个重要维度,考察了现有的大数据机器学习研究工作和系统,如图4-5所示。面向机器学习和数据分析时,目前已有的工作和系统,绝大多数都未能同时具备大规模分析处理能力和良好的系统易用性。
因此,大数据机器学习除了需要继续关注和研究传统意义上的学习方法和算法问题,以不断提高学习精度外,还需要重点关注和研究解决大数据场景下所特有的两大技术问题:
一是大数据复杂分析时的计算性能问题;
二是大数据机器学习系统的可编程性和易用性问题。
图4-5 Spark系统研究者提出的分析维度和研究现状
(1)大数据复杂分析时的计算性能问题(www.xing528.com)
在计算性能方面,大规模数据集给很多传统串行的机器学习和数据分析挖掘算法带来很大的挑战,需要研究解决面向大数据机器学习和数据分析的高效计算方法和系统。在数据集较小时,很多复杂度在O(n log n)、O(n2)甚至O(n3)的传统串行化机器学习算法都可以有效工作;但当数据规模增长到极大尺度时,现有的串行化算法将花费难以接受的时间开销,使得算法在实际应用场景中失效,这给业界大量实际的大数据复杂分析应用带来很多新的挑战和问题。正如微软全球副总裁陆奇博士在2012年指出的,“大数据使得现有的大多数机器学习算法失效,面向大数据处理时这些算法都需要重写”。
在大型互联网企业,大规模机器学习算法经常用于处理十亿至千亿级别的样本以及一亿至数十亿数据特征的大规模数据集。例如,Google著名的Seti太空搜索项目需要进行高达千亿样本、十亿特征数据的大规模机器学习,腾讯Peacock主题模型分析系统需要进行高达十亿文档、百万词汇、百万主题的主题模型训练,而仅一个百万词汇乘以百万主题的矩阵,其数据存储量即高达3TB,如果再考虑十亿文档乘以百万主题的矩阵,其数据量更是高达3 PB。如此大量的训练样本,加上机器学习算法本身的复杂性,导致难以在传统的串行化计算平台上、在可接受的时间内完成如此巨大的复杂分析计算任务,因而带来了十分突出的计算性能问题。因此,大数据机器学习算法和系统需要研究解决大规模场景下高效的分布式和并行化算法设计以及计算问题,以保证算法和系统可以在可接受的时间内完成大规模数据的学习和训练。
(2)大数据机器学习系统的可编程性和易用性问题
为了满足急剧增长的大数据处理需求,过去几年来,全球推出了Hadoop和Spark等多种主流大数据处理技术和系统平台。这些主流技术和平台的出现为大数据的处理提供了良好的技术手段和方法。Hadoop的出现使得大数据处理技术和平台从无到有,而基于内存计算的Spark系统的出现使得大数据分析计算从慢到快。然而,现有的大数据处理技术和系统平台都存在很大的易用性问题,难以为普通的程序员掌握和使用,尤其是面向复杂的大规模机器学习和数据分析时,这个问题更为突出。
大数据机器学习和数据分析的并行化程序设计,比传统的串行化算法设计复杂很多、对程序员的技术要求更高。对于普通的数据分析程序员或机器学习研究者来说,在特定的大数据编程模型和平台下进行并行化机器学习和数据分析算法设计,需要掌握很多分布式系统背景知识和并行程序设计技巧,这对他们来说难度较大,经常要把实际工作的大部分时间花费在底层复杂的并行化和分布式编程和调试上,给上层数据分析和算法设计工作带来很大的不便和困难,导致普通程序员与现有的各种大数据处理平台之间存在一个难以逾越的鸿沟。
另一方面,即使对于诸如Google、百度等具有强大技术力量的互联网企业程序员来说,随着多种大数据处理与编程平台的出现以及各种分析应用问题需求的不同,他们也常常需要针对不同平台,重复编写和测试各种并行化机器学习和数据分析算法,这种在多个大数据平台上重复编写和尝试数以百计的机器学习算法的工作负担也很重。正如阿里巴巴集团副总裁、高级研究员章文嵩博士在中国计算机学会第一届大数据学术会议上所指出的,“淘宝内部需要使用的并行化机器学习算法很多,随着新型的并行化计算框架的逐步出现,需要将其逐个实现到MPI、MapReduce、Spark等并行计算框架上;如果后面出现更先进的框架,又面临着将这些算法重新实现一遍的负担”。
针对大数据的机器学习和数据分析,现有的大数据处理技术和平台存在很大的可编程性和易用性问题,导致普通程序员和常规的程序设计方法与现有的大数据分析处理编程技术之间存在着一个很大的鸿沟。正如CCF大数据专家委员会《2015年大数据发展趋势预测报告》指出的那样,“由于现有的大数据平台易用性差,而垂直应用行业的数据分析又涉及领域专家知识和领域建模,目前在大数据行业分析应用与通用的大数据技术之间存在很大的鸿沟,缺少相互的交叉融合。”
因此,大数据机器学习系统要解决的一个重要问题是,让不易使用的大数据处理技术和平台变得易于使用,要填平普通程序员和常规程序设计方法与现有的大数据处理技术之间的鸿沟,尽可能让普通程序员用常规程序设计方法便能有效完成大数据的复杂分析处理。
根据Google Seti项目研究人员在开发实际的大型机器学习系统上的经验,在面向大数据时,考虑到用户开发效率问题,系统易用性与提高机器学习精度几乎同等重要,有时甚至比精度问题更为重要,“也许过去学术界很少关心设计一个精度稍差、但有更好易用性和系统可靠性的学习算法,但在实际应用中,这会体现出非常重要的价值”。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。