1.1 常用机器学习工具

Rapid Miner是一个用于机器学习和数据挖掘实验的工具。该工具用Java编程语言编写,通过基于模板的框架提供高级分析。它使得实验可以由大量的可任意嵌套的操作符组成,这些操作符在XML文件中描述较详细,并且是由Rapid Miner的图形用户界面完成的,用户不需要编写代码。它包含许多模板和其他工具,可以轻松地分析数据。

Apache Mahout是Apache软件基金会的一个项目,用于协同过滤、聚类和分类领域的分布式或其他可伸缩机器学习算法的实现。Apache Mahout主要支持三种用例:建议挖掘采取用户行为,并尝试查找用户可能喜欢的项目;集群需要文本文档,并将它们分组为局部相关的文档;分类从现有的分类文档中学习特定类别文档的特点,并能够将未标记的文档分配给正确的类别。

TensorFlow是被广泛使用的实现机器学习以及其他涉及大量数学运算的算法库之一。TensorFlow由谷歌开发并开源,是GitHub上最受欢迎的机器学习库之一。TensorFlow采用数据流图进行数值计算。其中Tensor是可以代表n维数据集的张量,Flow使用计算图进行计算。数据流图是用节点和边组成的有向图来描述数学运算。节点一般对应数学操作或状态,并对应节点之间的输入/输出关系。在TensorFlow中,所有不同的变量和运算都储存在计算图中。因此在构建完模型所需要的图之后,需要开启一个Session来运行整个计算图。TensorFlow的模型构建的基本流程包括构建计算图、馈送输入张量、更新权重并且返回输出值。使用TensorFlow可以方便地搭建各种常见的神经网络,也可以模拟多种回归算法,并且在此基础上对模型中的参数进行训练,得到训练好的模型可用于后续实验。但TensorFlow内部概念众多、结构复杂,繁杂的API导致新用户上手困难,冗长的代码使得工程实现比较费力。

PaddlePaddle是由百度开源的一款全功能的深度学习框架,其架构历经多次迭代,为开发者提供易学、易用、安全、高效的深度学习研发体验。PaddlePaddle对开发者非常友好,所有的API都提供详尽的中文文档,并且提供了Jupyter文稿。PaddlePaddle的代码易于理解,方便用户理解框架和提出问题。PaddlePaddle的API中对算法原理进行了概括,方便用户学习理解深度学习算法。PaddlePaddle支持Windows、Linux和macOS等多种操作系统,具有非常好的可拓展性,用户无须配置第三方库即可完成整个PaddlePaddle框架的编译。PaddlePaddle提供了全面的深度学习API,支持Python调用。同时PaddlePaddle对于图像分类、目标检测、图像语义分割、图像生成、场景文字识别、度量学习、视频分类、语音识别、机器翻译、强化学习、中文词法分析、情感倾向分析、语义匹配、机器阅读理解和个性化推荐等具体的深度学习问题提供了训练好的模型库,用户可以直接调用模型。PaddlePaddle还有一个基于Web的IDE,支持使用者在浏览器中使用Jupyter Notebook编程来开发AI应用,随后发送到云端调试或者运行,程序运行时的输出会实时地显示在浏览器里。PaddlePaddle底层使用C++编写,运行速度快,占用内存少。PaddlePaddle在分布式计算上也表现优异,可通过与Kubernetes合作实现弹性作业调度。

Caffe2是面向工业级应用的框架,应用广泛。但是从安装部署角度来说,Caffe2的用户体验并不是非常友好,官方文档和教程支持也不是十分充足。而且Caffe2只支持Python 2,这限制了其未来的拓展。

MXNet是一款灵活高效的深度学习框架,并行计算性能好、运行速度快,并且程序节省内存,支持R、Julia、Python、Scala、C++等多种语言。MXNet支持命令式和声明式两种编程方式,代码更加灵活。但MXNet是由社区推动的深度学习框架,很多问题出现后还需要用户去查阅源码,而且模型库支持不够,需要开发者写代码实现。

PyTorch是Facebook开发的面向学术界的一个框架,安装方便,使用简单,构建网络也比较容易。PyTorch运行后立刻出结果,不同于TensorFlow必须把程序写完之后才知道结果是什么。但PyTorch不适合工业级应用。

VS Tools for AI和VS Code Tools for AI是微软公司发布的一系列人工智能工具,建立在微软多年的旗舰产品之上,提供了强大的前端集成式编程环境,支持多种平台。在公有云、私有云上都提供了可扩展的GPU集群管理和调度工具,可以自动生成并优选神经网络模型,支持不同框架训练出来的机器学习模型。

此外还有Amazon Machine Learning(AML)、Theano等,有兴趣的读者可以查询相关资料。