|
发展现状
数据密集型科学发现离不开软件系统的支撑,本文的研究对象聚焦于近 10 年来面向科学大数据智能分析的典型软件系统。从适用范围来看,科学大数据智能分析软件可以简单分为通用型和领域专用型两类。通用型智能分析软件是大数据、人工智能等领域的通用分析软件,并被科学家团队应用于特定领域的研究工作,如 Matlab。领域专用型智能分析软件是指针对特定科学领域的专有分析软件,如地学、资源环境科学领域流行的 Google Earth Engine。
通用型科学大数据智能分析软件
大数据和人工智能技术发展迅速,涌现了大量软件系统,本文选取科学家团队较为常用、具有代表性的智能分析软件,并依据软件系统的部署模式,将这些软件分为 3 类——单机环境、分布式环境和云计算环境,同时这也是智能分析软件发展的 3 个阶段。
单机环境智能分析软件。在商业数据分析软件方面,Matlab 提供了用于算法开发、数据可视化、数据分析以及数值计算的高级编程语言和交互式环境,在众多科学领域应用广泛。在众多开源免费数据分析软件中,R 语言、Scikit-Learn、Weka是典型代表。R 语言是一种用于统计分析和绘图的语言,提供了丰富的统计分析功能,用户还可以通过开发并安装扩展包增强 R 的功能。 Python 语言拥有大量科学数据分析的算法库,其中就包括被广泛应用于机器学习和数据挖掘的 Scikit-Learn。Weka 数据挖掘平台基于 Java 语言开发,提供了可视化、拖拽式的分析流程设计界面,并集成了大量数据预处理和机器学习算法。这些软件系统在设计之初是以单机模式运行,无法针对基于分布式存储的大数据进行处理,在大数据场景下存在先天不足。此外,这些软件系统还缺乏对深度学习技术的有效支持。
分布式环境智能分析软件。在分布式环境下,开源社区提供的大数据分析软件成为主流,Hadoop Mahout、Spark MLlib是其中的典型代表,研究人员借助于 Hadoop、Spark 框架,解决了分布式并行挖掘问题,并提供了典型的机器学习算法和模型。近年来,涌现出一批开源深度学习框架,例如 Tensor Flow、Caffe、CNTK、MXNet 等,用于深度神经网络模型的构建及训练,支持分布式计算和异构计算。尽管这些开源软件提供了丰富的算法库和高效的分布式计算平台,但仍需要专业的编程开发和系统配置技能,且学习曲线陡峭,不利于科学家团队使用。
云计算环境智能分析软件。通过云平台提供大数据智能分析服务已成为大型公有云平台的标配服务,“机器学习即服务”(machine learning as a service,MlaaS)也成为多家领先云平台厂商的发展趋势。Azure Machine Learning(Azure ML)是微软 Azure 云平台提供的机器学习分析服务,在提供大量通用机器学习分析算法基础上,Azure ML 还面向数据科学家用户提供了交互式的图形化开发界面。类似的 MLaaS 还包括 Aliyun PAI 等。这些系统通常仅支持某种特定开发语言和应用程序编程接口(API),用户无法自主扩充算法库,存在平台锁定(lock-in)问题。除了上述公有云厂商提供的大数据智能分析服务,一些科学家团队将具有“浏览器/服务器”架构模式的交互式分析软件部署在公有云或私有云,实现了“简化版”的 MLaaS。例如,Jupyter Notebook是支持“浏览器/服务器”架构的交互式分析软件,支持通过浏览器编辑运行多种编程语言,在服务器端进行数据处理、数值模拟、统计建模、机器学习以及可视化等。