现代人工智能给企业带来了很多好处,同时也大大提升了机器的认知能力。作为计算机科学领域里的一项重要技术,人工智能正以***的速度迅速发展。一项研究成果从学术论文转化为实际的产品仅需几个月的时间。然而,过快的发展速度对于该领域中的新手来说则是一场灾难。除了熟悉人工智能技术之外,从业人员还必须正确选择技术平台。本文重点介绍了人工智能在深度学习方面一些重要的可选项,包括每个工具包的主要优缺点以及行业中各自的支持者。
机器学习和深度学习
当代人工智能技术可分为两类:机器学习和深度学习。目前绝大多数使用的都是前一种,即机器学习。这其中包含了一些数据科学家最常用的算法:线性模型、k均值聚类、决策树等等。虽然我们现在将它们作为人工智能的一部分,但这是数据科学家长期研究的成果。
在过去两年里,人工智能的第二种技术受到了更多的关注和炒作:它是机器学习技术的一种专业化表现,即神经网络,也被称为深度学习。深度学习正吸引着人们对人工智能或“认知”技术的关注,包括图像识别、语音识别、自动玩游戏、自动驾驶车辆以及其他自主车辆。通常,这些应用需要大量的数据来馈送和训练复杂的神经网络。
机器学习的可选项
处理机器学习的工具包在每个常用的统计数据包中都有。常见的商业产品有SAS、SPSS和MATLAB。常用的开源工具有R和Python。大数据平台Apache Spark和Hadoop也有自己的并行机器学习工具(Spark的MLLIB和Apache Mahout)。目前,由于存在类似于scikit-learn和Anaconda这样的项目,Python正在成为行业数据科学***的编程语言。
深度学习的可选项
深度学习工具包的发展非常迅速。学术界和数据巨头,如Google、百度、Facebook,已经在深度学习投入了很多年,他们拥有数套强大的可选方案。因此,新手们面对的选择有很多!每个选择都有着各自不同的优势和生态系统。
- TensorFlow:来自谷歌,用户最多。它是由早期的框架构建而成的“第二代”深度学习库。TensorFlow用的是Python语言,它还包含了TensorBoard,这个工具在调试和检查网络方面有很大的优势。 XLA编译工具提供了模型的***执行,而TensorFlow Mobile则为低功耗的移动设备提供了机器学习支持。
- MXNet:由Amazon Web Services牵头开发,使用用户很多,支持许多种编程语言。 MXNet已被纳入Apache Incubator,正式进入成为***Apache项目的快车道。
- Deeplearning4J:商业支持的深度学习框架,在Java环境中性能强大,对企业应用具有一定的吸引力。
- Torch:一个功能强大的框架,在Facebook和Twitter等公司中使用,但只能用Lua编写,对其他编程语言的支持较少。
- PyTorch:派生自Torch,PyTorch将Torch带入了热门的Python数据科学生态系统之中。 发布于2017年,它的支持者中包括Facebook和Twitter。 PyTorch支持动态计算图,这在TensorFlow中目前暂不不支持。
- CTNK:Microsoft在深度学习领域的产品,拥有Python和C++ API(Java API尚在实验中)。
- Caffe:重点在计算机视觉应用领域。核心编程语言是C++,有Python接口。
- Theano:用Python编写的最古老的深度学习框架之一。在学术界的使用很广泛,但不适合生产使用。(译者注,目前已停止更新)
这其中很多的深度学习框架的级别都比较低,开发人员使用起来并不方便,而高级库对用户更加友好,更受开发者的青睐。其中最重要的库是Keras,它是用Python开发的,可创建能在TensorFlow、Theano、CNTK或Deeplearning4j上运行的深度学习应用程序。
苹果公司在机器学习方面的贡献也值得一提。与上述工具包不同,苹果公司仅为模型提供了执行框架。开发人员必须使用Caffe、Keras或scikit-learn等工具来训练他们的模型,并进行转换,这样才能让应用程序通过苹果公司的CoreML来使用它们。
从哪里着手?
TensorFlow Github Star数量, 2017年2月。
如果你没有明确的理由要选择哪种方案,那么根据绝大多数开发人员的经验,以及谷歌在人工智能领域中的声誉以及Python生态系统的重要性,Keras和TensorFlow组合当仁不让地成为***大的默认选择。 TensorFlow快速增长的人气值使其可以在短期内与大量的数据工具相兼容。例如,你可以参阅Databricks最近有关在Spark中TensorFlow和Keras对深度学习支持的公告。
同时,亚马逊网络服务公司对MXNet的强大支持,以及MXNet自身的增长速度和成为Apache项目,使其成为重要的备选方案之一。而微软对Azure的强大支持使得CNTK成为该公司重要的成果。
深度学习是一个快速发展的领域,每个云提供商都将机器学习视为战略目标。幸运的是,他们都选择了开放源代码。随着深度学习的计算资源越来越集中在云和GPU上,开源的代码对于想要研究深度学习的人来说是一个很好的消息。