本文将从开发者的角度出发,特别是针对开发者中为数众多的Linux系统和Mac系统用户,奉上一篇针对泛Linux生态的顶级人工智能开源工具盘点(当然,有些工具也并非只兼容Linux)。
Deeplearning4j(DeepLearningForJava)是Java和Scala环境下的一个开源分布式的深度学习项目,由总部位于美国旧金山的商业智能和企业软件公司Skymind牵头开发,并得到了腾讯的投资。正如它的命名,Deeplearning4j的运行需要Java虚拟机JVM的支持。
Deeplearning4j团队在官网表示,他们希望通过一些深度学习算法的开发,将商业带入智能化数据的时代。也正是为了实现这一理想,惠及更多的用户,因此选择了移植性更好的Java环境来实现这些算法。目前,Deeplearning4j的这些算法已经在谷歌、Facebook和微软等平台得到了广泛应用。
值得一提的是,为了便于开发者自由定制,Deeplearning4j已经开放了尽可能多的算法调节接口,并对接口参数做出了详尽解释。同时,Deeplearning4j团队还开发了针对矩阵运算的ND4J和ND4S库(N-DimensionalArraysforJava/Scala),同样需要JVM的支持。
Deeplearning4j遵循Apache2.0开源协议,提供了基于AWS云服务的GPU运算支持,以及微软服务器框架的支持。
Caffe的全称是“ConvolutionArchitectureForFeatureExtraction”,意为“用于特征提取的卷积架构”,主要开发者来自伯克利大学的视觉与学习中心(BerkeleyVisionandLearningCenter,BVLC),基于BSD2-Clause开源许可协议发布。
H2O(即水的化学式)是一个开源、快速、可扩展的分布式机器学习框架,同时提供了大量的算法实现。它支持深度学习、梯度推进(GradientBoosting)、随机森林(RandomForest)、广义线性模型(即逻辑回归,弹性网络)等各种机器学习算法。
H2O框架的核心代码由Java编写,数据和模型通过分布式的key/value存储在各个集群节点的内存中,算法使用Map/Reduce框架实现,并使用了Java中的Fork/Join机制来实现多线程。
根据H2O官方的数据,目前已经有超过7万名数据科学家和8万家组织机构成为了H2O平台的忠实拥趸。
按照官网的描述,MLlib的主要特点是易用(天生兼容Spark框架的API接口和Python、Java、Scala等多种语言)、高性能(依靠Spark的数据管理能力,运行迭代和逻辑回归算法时比Hadoop框架快100倍)和易于部署(可以直接在现有的Hadoop数据集群上运行)。
MLlib目前支持分类、回归、推荐、聚类、生存分析等多种机器学习算法。
ApacheMahout同样也是一个Apache开源项目,与MLlib相对应,Mahout是应用在Hadoop平台下的机器学习开源框架。
Mahout有如下三个主要特点:
1)提供简单、可扩展的编程环境和框架;
2)同时为Scala+ApacheSpark、H2O以及ApacheFlik平台提供打包好的算法实现;
3)支持R语言的语法规则进行矩阵计算。
OpenNN的全称为“OpenNeuralNetworksLibrary”,即开源神经网络库,其核心代码由C++编写,从名字就可以看出,其主要面向深度学习领域,助力于用户构建各种不同的神经网络模型。
据官方描述,OpenNN可用于实现监督学习场景中任何层次的非线性模型,同时还支持各种具有通用近似属性的神经网络设计。
除了模型的多层支持外,OpenNN最主要优势还在于强大的性能表现。具体来说就是,OpenNN能够通过C++语言实现的核心代码高效地调节内容使用,通过OpenMP库很好地平衡多线程CPU调用,以及通过CUDA工具对GPU进行加速。
Oryx2是Oryx项目的2.0版,前身名为Myrrix,后来被大数据公司Cloudera收购,才改名为Oryx。
2.0版相比之前实现了更多算法,包括ALS协同过滤、随机森林、以及K-means++等。
OpenCyc是Cycorp公司推出的一个基于Cyc的开源版本,而Cyc是目前全球最庞大、最完备的通用型知识库与常识推理引擎。
OpenCyc包含数十万个精心组织的Cyc词条。Cycorp公司不但免费提供OpenCyc,同时也鼓励开发者基于OpenCyc开发针对于特定应用领域的分支版本。
目前,OpenCyc已经被成功应用在大数据建模、语言数据整合、智能文本理解、特定领域的专家系统建模和人工智能游戏。
SystemML是一个利用机器学习算法进行大数据分析的开源AI平台,其主要特点是支持R语言和Python的语法,专注于大数据分析领域,以及专门为高阶数学计算设计。
按照官网的介绍,ApacheSystemML基于ApacheSpark框架运行,其最大的特点就是能够自动、逐行地评估数据,并根据评估结果确定用户的代码应该直接运行在驱动器上还是运行在ApacheSpark集群上。
除了ApacheSpark之外,SystemML还支持ApacheHadoop、Jupyter和ApacheZeppelin等多个平台。目前,SystemML技术已经成功应用在交通、航空和金融等多个领域。
NuPIC关键的功能特性包括:
1)持续的在线学习:NuPIC模型可以持续根据快速变化的数据流进行实时调整;
3)实时的数据流分析:智能化的数据分析不会随着数据量的增加而改变;
4)预测和建模:通过通用性的大脑皮层算法,对数据进行预测、建模和学习;
5)强大的异常检测能力:实时检测数据流的扰动,不依靠僵化的阈值设置和过时的算法;
6)层级实时存储算法:支持全新的HTM计算架构。
由于2016仅仅是人工智能走向主流的元年,未来随着技术的进一步发展和革新,势必会出现更多、更丰富的开发工具。这里值得注意的一点是:工具的意义不仅在于解决了日常研发中遇到的各种问题,更在于降低了开发的难度,引导了更多人投入到人工智能的研发之中。