国外的IBM、谷歌、微软、因特尔、Facebook、亚马逊,国内的百度和360等公司正投入巨资进行研发,并纷纷收购在机器学习、神经网络、神经语言和图像处理等领域取得进展的初创公司。
这些开源人工智能应用软件处在人工智能研究领域的最前沿。
人工智能是技术研究领域最炙手可热的领域之一。IBM、谷歌、微软、Facebook和亚马逊等公司正投入巨资进行研发,并纷纷收购在机器学习、神经网络、神经语言和图像处理等领域取得进展的初创公司。考虑到人工智能如此受关注,斯坦福大学的专家最近撰写的一份智能研究报告得出结论:“现在到2030年人工智能可能会出现越来越有用的应用,有可能给我们的社会和经济带来深远的积极影响,”也就不足为奇了。
本文专注于开源人工智能工具,着重介绍18个知名度最大的开源人工智能项目。
1.Caffe
Caffe是加州大学伯克利分校攻读博士学位者的杰作,C++编程语言,这是一种深度学习框架,基于表达式架构和可扩展代码。速度快是它赖以成名的特点,因而在研究人员和企业用户当中都备受欢迎。据官方网站声称,仅仅使用一个英伟达K40 GPU,它在短短一天内就能够处理6000多万个图像。它由伯克利视觉和学习中心(BVLC)管理,英伟达和亚马逊等公司提供了拨款,支持它的发展。
官网链接:http://caffe.berkeleyvision.org
2.CNTK
CNTK的全称是计算网络工具包,它是微软的开源人工智能工具之一。它声称拥有出众的性能,无论在只有CPU的系统上运行,在只有一个CPU的系统上运行,在拥有多个GPU的系统上运行,还是在拥有多个GPU的多台机器上运行,都是如此。微软主要用它来研究语音识别,但是它同样适用于其他应用领域,比如机器翻译、图像识别、图像字幕、文本处理、语言理解和语言建模。
官网链接:https://www.cntk.ai 或 https://github.com/Microsoft/CNTK
3.Deeplearning4j
Deeplearning4j是一种面向Java虚拟机(JVM)的开源深度学习库。它在分布式环境中运行,可与Hadoop和Apache Spark整合起来。它让用户可以配置深度神经网络,与Java、Scala及其他JVM语言兼容。
该项目由一家名为Skymind的商业公司管理,该公司提供收费的支持、培训和Deeplearning4j的企业发行版。
官网链接:http://deeplearning4j.org
4.DMTK--分布式机器学习工具包
与CNTK一样,分布式机器学习工具包(DMTK)是微软的开源人工智能工具之一。它是为大数据应用领域设计,旨在更快地训练人工智能系统。它包括三大部分:DMTK框架、LightLDA主题模型算法以及分布式(Multisense)单词嵌入算法。微软声称,在8个集群机器上,它能够“针对拥有1000多亿个权标的文档集合,训练拥有100万个主题和1000万个单词词汇表(共有10万亿个参数)的主题模型,”这个成绩是其他工具无法比拟的,这也证明了DMTK的速度有多快。
官网链接:http://www.dmtk.io
5.H2O
H2O更加专注于人工智能在企业领域的应用,而不是在研究领域的应用,它的用户包括诸多大公司:第一资本、思科、尼尔森Catalina、贝宝及Transamerica。它声称让任何人都可以使用机器学习和预测分析的强大功能,解决业务问题。它可用于预测建模、风险及欺诈分析、保险分析、广告技术、医疗保健和客户情报。
它有两种开源版本:标准的H2O和Sparkling Water,后者与Apache Spark集成起来。它还提供收费的企业支持。
官网链接:http://www.h2o.ai
6.Mahout
Mahout是Apache基金会下面的一个项目,是一种开源机器学习框架。据官方网站声称,它提供三种主要的特性:用于构建可扩展算法的编程环境、面向Spark和H2O等工具的预制算法,以及名为Samsara的向量数学试验环境。使用Mahout的公司包括:Adobe、埃森哲、Foursquare、英特尔、领英、推特、雅虎及其他许多公司。可通过官方网站上所列的第三方获得专业支持。
7.MLlib
Apache Spark以速度快著称,它已成为最流行的大数据处理工具之一。MLlib是Spark的可扩展机器学习库。它与Hadoop整合起来,可与NumPy和R协同操作。它包括一大批机器学习算法,可用于分类、回归、决策树、推荐、聚类、主题建模、特性转换、模型评估、机器学习管道构建、机器学习持久性、生存分析、频繁项集、顺序模式挖掘、分布式线性代数和统计。
官网链接:https://spark.apache.org/mllib/
8.NuPIC
NuPIC由一家名为Numenta的公司管理,这是一种开源人工智能项目,基于一种名为分层式即时记忆(即HTM)的理论。实际上,HTM试图建立一种模仿人类大脑新皮层而建的计算机系统。目的在于制造“处理许多认知任务时接近或胜过人类表现”的机器。
除了开源许可证外,Numenta还提供采用商业许可证的NuPic,它还提供作为它技术底层的专利方面的许可证。
官网链接:http://numenta.org
9.OpenNN
OpenNN为深入了解人工智能的研究人员和开发人员而设计,这是一种用于实现神经网络的C++编程库。主要特性包括:深度架构和卓越性能。官方网站上有全面的说明文档,包括解释神经网络基础知识的入门教程。可通过Artelnics获得OpenNN的收费支持,总部位于西班牙的这家公司主攻预测分析。
10.OpenCyc
OpenCyc由一家名为Cycorp的公司开发,它让用户可以访问Cyc知识库和常识推理引擎。它包括239000多个术语、约2093000个三元组以及大约69000个owl:sameAs链接(指向外部语义数据命名空间)。它用于丰富域名建模、语义数据整合、文本理解、特定领域专家系统和游戏人工智能。这家公司还提供Cyc的另外两个版本:一个是非开源免费版本,面向研究人员;另一个面向企业用户,需要收费。
官网链接:http://www.cyc.com/platform/opencyc/
11.Oryx 2
Oryx 2建立在Apache Spark和Kafka上,这是一种专门的应用开发框架,面向大规模的机器学习。它使用了一种独特的lambda架构,有三个层次。开发人员可使用Oryx 2来构建新的应用程序,它还包括一些预制应用程序,处理常见的大数据任务,比如协作过滤、分类、回归和聚类。大数据工具厂商Cloudera建立了最初的Oryx 1项目,一直大力参与持续开发工作。
官网链接:http://oryx.io
12.PredictionIO
2017年2月份,Salesforce收购了PredictionIO,后来在7月份,它把该平台连同商标一起捐献给了Apache基金会,该基金会将它列为孵化器项目。所以,虽然Salesforce使用PredictionIO技术来完善自己的机器学习功能,但是开源版本方面的工作也会继续下去。它可帮助用户构建拥有机器学习功能的预测引擎,这些功能可用来部署实时响应动态查询的Web服务。
13.SystemML
SystemML最初由IBM开发,现在它是Apache旗下的一个大数据项目。它提供了一种高度可扩展的平台,可以实施用R或类似Python的语法编写的高级运算和算法。企业已经在用它来跟踪汽车维修方面的客户服务,引导机场客流量,或者将社交媒体数据与银行客户联系起来。它可以在Spark或Hadoop上运行。
官网链接:http://systemml.apache.org
14.TensorFlow
TensorFlow是谷歌的开源人工智能工具之一。它提供了用于数字计算的库,使用数据流图。它可以在众多不同的搭载单一或多个CPU和GPU的系统上运行,甚至可以在移动设备上运行。它拥有深度灵活性、真正的可移植性、自动差分功能,并支持Python和C++。官方网站上列有非常丰富的教程和实用文章,可供有兴趣使用或扩展其功能的开发人员或研究人员使用。
官网链接:https://www.tensorflow.org
15.Torch
Torch自称是“一种科学计算框架,广泛支持把GPU放在首位的机器学习算法。”这里的重点在于灵活性和速度。此外,很容易与众多方面的软件包结合使用:机器学习、计算机视觉、信号处理、并行处理、图像、视频、音频和网络。它依赖一种名为LuaJIT的脚本语言,这种语言基于Lua。
官网链接:http://torch.ch
16.BrainStorm
来自瑞士人工智能实验室IDSIA的一个非常发展前景很不错的深度学习软件包,Brainstorm能够处理上百层的超级深度神经网络——所谓的公路网络Highway Networks。
官网链接:http://neuroimage.usc.edu/brainstorm/
17.Marvin
Marvin是普林斯顿大学视觉工作组新推出的C++框架。该团队还提供了一个文件用于将Caffe模型转化成语Marvin兼容的模式。
官网链接:https://github.com/PrincetonVision/marvin
18.MxNet
MXNet,出自CXXNet、Minerva、Purine等项目的开发者之手,主要用C++编写。MXNet强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。
百度 DMLC(分布式机器学习社区) 简称"深盟",MXNet结合命令式和声明式编程的优点,既可以对系统做大量的优化,又可以方便调试。资源和计算的调度、内存分配资源管理、数据的表示、计算优化等都很值得学习的,原生支持分布式训练的。
官网链接:https://github.com/dmlc/mxnet
主流框架比较:
开源项目 | 主语言 | 从语言 | 硬件 | 分布式 | 命令式 | 声明式 |
Caffe | C++ | Python Matlab | CPU/GPU | x | x | v |
Torch | Lua | - | CPU/GPU/FPGA | x | v | x |
Theano | Python | - | CPU/GPU | x | v | x |
TensorFlow | C++ | Python | CPU/GPU/Mobile | v | x | v |
MXNet | C++ | Python/R Julia/Go | CPU/GPU/Mobile | v | v | v |