如果你想进入人工智能这一领域,你应该首先学习Python。
尽管人工智能领域还支持其它很多语言,但 Python 是应用范围最广而且最简单的一个。但是为什么要选择 Python 呢——毕竟 Python 速度这么慢?因为大多数的库都使用的是符号式语言(symbolic language)方法而非命令式语言(imperative language)方法。解释一下也就是说:不是一条接一条地执行你的指令,而是根据你给出的所有指令创建一个计算图(computing graph)。这个图被内部优化和编译成可执行的 C++ 代码。这样你就能同时利用上两个世界的最优之处:Python 带来的开发速度和 C++ 带来的执行速度。
我常听到人们谈论深度学习和人工智能——我该从哪里开始呢?TensorFlow 是现在最流行的吧?我听说 Caffe 很常用,但会不会太难了?在 BEEVA Labs,我们常常需要应对许多不同的深度学习库,所以我希望能够将我们的发现和感想分享出来,帮助那些刚刚进入深度学习和人工智能领域的人。
首先说几个常用的深度学习语言。
TensorFlow
TensorFlow 是一个使用数据流图(data flow graphs)进行数值计算的开源软件库。TensorFlow是Google Brain的第二代机器学习系统,已经开源。TensorFlow在很多地方可以应用,如语音识别,自然语言理解,计算机视觉,广告等等。TensorFlow是一个非常灵活的框架,它能够运行在个人电脑或者服务器的单个或多个CPU和GPU上,甚至是移动设备上。
TensorFlow 支持 Python 和 C++,也允许在 CPU 和 GPU 上的计算分布,甚至支持使用 gRPC 进行水平扩展。
Caffe
Caffe 不只是最老牌的框架之一,而是老牌中的老牌。起初的时候它并不是一个通用框架,而仅仅关注计算机视觉,但它具有非常好的通用性。在我们实验室的实验中,CaffeNet 架构的训练时间在 Caffe 中比在 Keras 中(使用了 Theano 后端)少 5 倍。Caffe 的缺点是它不够灵活。如果你想给它来一点新改变,那你就需要使用 C++ 和 CUDA 编程,不过你也可以使用 Python 或 Matlab 接口进行一些小改变。
Caffe 的文档非常贫乏。你需要花大量时间检查代码才能理解它(Xavier 初始化有什么用?Glorot 是什么?)。Caffe 的最大缺点之一是它的安装。它需要解决大量的依赖包……
MXNet
mxnet 是一个支持大多数编程语言的框架之一,包括 Python,R,C++,Julia 等。但我觉得使用 R 语言的开发者会特别偏爱 mxnet,因为至今为止还是 Python 以不可置疑的态势称霸深度学习语言的。我对多 GPU 的扩展能力有点疑虑并且我很原意去了解这样实验的更多细节,但目前我还是对 mxnet 持怀疑态度。
那么,python为什么适合人工智能?
谷歌的TensorFlow基本上所有的代码都是C++和Python,其他语言一般只有几千行 。如果讲运行速度的部分,用C++,如果讲开发效率,用Python,谁会用Java这种高不成低不就的语言搞人工智能呢?Python虽然是脚本语言,但是因为容易学,迅速成为科学家的工具(MATLAB也能搞科学计算,但是软件要钱,且很贵),从而积累了大量的工具库、架构,人工智能涉及大量的数据计算,用Python是很自然的,简单高效。现在大部分深度学习框架都支持Python,不用Python用谁?Python有非常多优秀的深度学习库可用,人生苦短,就用Python。
如何让自己使用Python开发的机器学习模型快捷低成本的跑起来,深度兼容TensorFlow?你可以学习下谷歌的AIY Projects 项目。它也正在通过“AIY项目”这样的计划来促进开发人员和DIY社区对人工智能的兴趣,这些计划本身代表了人工智能。谷歌的目标是让AI实现真正的平民化,让人工智能无处不在,人人都可以学习。