介绍
我喜欢机器学习开源社区,作为一个有抱负且资深的数据科学家,我的大部分学习来自开源的资源和工具。
如果你还没有接受机器学习中开源工具的美妙之处 -- 那么你就错过了很多东西!开源社区规模庞大,对新工具的支持态度令人难以置信,并且接受了机器学习民主化的概念。
你必须已经了解流行的开源工具,如R,Python,Jupyter notebooks等等。但是,除了这些流行的工具之外还有一些低调神秘的机器学习工具存在,这些并不像它们“同行”那样出色,但可以成为许多机器学习任务的救星。
在本文中,我们将介绍21种用于机器学习的开源工具。我强烈建议你花一些时间了解下我提到的每个工具。除了我们通常在课程和视频中学到的东西之外,还有很多需要学习的地方。
请注意,其中许多是基于Python的库或工具,因为让我们知道Python是一种多功能的编程语言!
我们将开源机器学习工具分为以下5类:
-
面向非程序员的开源机器学习工具
-
用于机器学习模型部署
-
大数据开源工具
-
用于计算机视觉,NLP和音频
-
用于强化学习
1. 面向非程序员的开源机器学习工具
对于非程序员或是没有技术背景的人来说,机器学习看起来很复杂。这是一个广阔的领域,可以想象可能第一次接触机器学习会多么令人生畏。那么没有编程经验的人能否在机器学习中取得成功?
事实证明,你们可以!这里有一些工具可以帮助你跨越鸿沟并进入机器学习世界:
-
Uber Ludwig:Uber的Ludwig是一个建立在TensorFlow之上的工具箱。Ludwig允许我们训练和测试深度学习模型,而无需编写代码。你所需要提供的只是一个包含数据的CSV文件,包含用作输入的各列数据,以及用作输出的各列数据--之后Ludwig将完成剩下的工作。它对于实验非常有用,因为你可以毫不费力地构建复杂的模型,并且在决定将其用代码实现之前,你可以调整并使用它。可以通过下面的链接进一步了解如何使用Uber Ludwigz:
https://www.youtube.com/watch?v=OGweVw57kus
-
KNIME:KNIME允许你使用拖放接口创建整个数据科学工作流。实际上,你可以实现从特征工程到特征选择的所有功能,甚至可以通过这种方式将机器学习预测模型添加到工作流中,这种可视化实现整个模型工作流的方法非常直观,在处理复杂的问题时非常有用。
-
Orange:你不必知道如何编码以便能够使用Orange挖掘数据,处理数据并获得知识。你可以执行从基本可视化到数据操作的任务,像转换和数据挖掘。Orange近来在学生和教师团体中很受欢迎,因为它易于使用,并且能够添加多个附加组件以补充其功能集。
还有许多有趣、免费和开源的软件可以方便我们进行机器学习,而无需编写(大量)代码。
另一方面,你可以考虑一些付费的开箱即用服务,例如Google AutoML,Azure Studio,Deep Cognition和Data Robot。
2. 用于模型部署的开源机器学习工具
部署机器学习模型是你应该注意然而最容易被忽视但重要的任务之一。它几乎肯定会在面试中出现,所以你可能也很熟悉这个话题。
以下是一些框架,可以更轻松地将你的项目部署到现实世界的设备中。
-
MLFlow:MLFlow旨在与任何机器学习库或算法配合使用,并管理整个生命周期,包括实验,可重复性和机器学习模型的部署。MLFlow目前处于alpha版本,有3个组件——跟踪、项目和模型。
-
Apple’s CoreML:CoreML是一个流行的框架,可用于将机器学习模型集成到你的iOS / Apple Watch / Apple TV / MacOS应用程序中。关于CoreML的最好的部分是你不需要有关神经网络或机器学习的广博知识。
-
TensorFlow Lite:TensorFlow Lite是一组工具,可帮助开发人员在移动设备(Android和iOS),嵌入式和物联网设备上运行TensorFlow模型。它旨在简化在网络“边缘”的设备上执行机器学习,而不是从服务器来回发送数据。
-
TensorFlow.js:TensorFlow.js可以成为你在网络上部署机器学习模型的首选。它是一个开源库,可让你在浏览器中构建和训练机器学习模型。它具有GPU加速功能,并且还自动支持WebGL。你可以导入现有的预训练模型,并在浏览器中重新训练整个现有的机器学习模型!
3. 用于大数据的开源机器学习工具
大数据是一个研究如何分析、系统地从数据集中提取信息,或者处理传统数据处理应用软件无法处理的太大或太复杂的数据集的领域。想象一下,每天处理数百万条推文进行情绪分析。这感觉像是一项艰巨的任务,不是吗?
别担心!以下是一些可以帮助你用于大数据的工具。
-
Hadoop:Hadoop项目是处理大数据最突出和相关的工具之一。Hadoop是一个框架,它允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它被设计成从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。
-
Spark: Apache Spark被认为是用于大数据应用的Hadoop的自然继承者。这个开源大数据工具的关键在于填补了Apache Hadoop在数据处理方面的空白。有趣的是,Spark可以处理批处理数据和实时数据。
-
Neo4j: Hadoop可能不是所有大数据相关问题的明智选择。例如,当你需要处理大量的网络数据或与图相关的问题(如社交网络或人口统计模式)时,图数据库可能是最佳选择。
4. 用于计算机视觉、NLP和音频的开源机器学习工具
“如果我们想让机器思考,我们需要教它们看东西。” ——李飞飞博士谈计算机视觉
-
SimpleCV:如果你从事过任何计算机视觉项目,那么你一定使用过OpenCV。但是你了解过SimpleCV吗?SimpleCV可以让你访问几个高性能的计算机视觉库,如OpenCV而无需首先了解位深度、文件格式、颜色空间、缓冲区管理、特征值或矩阵与位图存储。这就是让计算机视觉变得更加简单。
-
Tesseract OCR:你是否使用过一些创造性的应用程序,可以通过智能手机摄像头扫描文件或购物账单,或者仅仅通过给支票拍照就可以把钱存入银行账户?所有这些应用程序都使用我们称之为OCR或光学字符识别软件。Tesseract就是这样一个OCR引擎,它可以识别超过100种语言。它也可以通过训练来识别其他语言。
-
Detectron: Detectron是Facebook AI Research研究小组的软件系统,它实现了最先进的目标检测算法,包括Mask R-CNN。它是用Python编写的,并由Caffe2深度学习框架提供支持。
-
StanfordNLP: StanfordNLP是一个Python自然语言分析包。这个库最棒的地方是它支持70多种人类语言!它包含可以在管道中使用的工具:
-
将包含人类语言文本的字符串转换为句子和单词
-
生成这些单词的基本形式、语音和词形特征
-
给出一个句法结构依赖解析
-
BERT as a Service :你们所有的NLP爱好者都应该听说过BERT,谷歌中开创性的NLP架构,但是你们可能还没有遇到过这个非常有用的项目。BERT -as-a-service使用BERT作为句子编码器,并通过ZeroMQ将其作为服务托管,允许你仅用两行代码将句子映射成固定长度的表示形式。
-
Google Magenta:这个库提供了操作源数据(主要是音乐和图像)的实用工具,使用这些数据来训练机器学习模型,最后从这些模型生成新的内容。可以通过下面的链接进一步了解如何使用Google Magenta:
https://www.youtube.com/watch?v=pM9u9xcM_cs
-
LibROSA: LibROSA是一个用于音乐和音频分析的Python包。它提供了创建音乐信息检索系统所需的构建块。它在音频信号预处理中得到了广泛的应用,像使用深度学习的语音合成应用。
5. 用于强化学习的开源工具
当谈到机器学习时,RL是最近的热门话题。强化学习(RL)的目标是训练能够与环境交互并解决复杂任务的智能代理,并将其应用于机器人、自动驾驶汽车等领域。
推动了这一领域的快速发展是通过让代理玩游戏,如标志性的Atari控制台游戏,古老的Go游戏,或专业的视频游戏Dota 2或Starcraft 2,所有这些都提供了富有挑战性的环境,在这些环境中,新的算法和思想可以以一种安全和可重复的方式快速测试。以下是一些RL最有用的训练环境:
-
Google Research Football: Google Research Football Environment是一个全新的RL环境,代理的目标是掌握世界上最流行的运动——足球。这种环境给你很大的控制权来训练你的RL代理,可以通过下面的链接视频了解更多:
https://www.youtube.com/watch?v=F8DcgFDT9sc
-
OpenAI Gym: Gym是一个用于开发和比较强化学习算法的工具包。它支持教代理从学会走路到玩乒乓球或弹球等游戏。
-
Unity ML Agents: Unity Machine Learning Agents Toolkit (ML-Agents)是一个开放源码的Unity插件,它可以将游戏和仿真作为训练智能代理的环境。通过一个简单易用的Python API就可以使用强化学习、模仿学习、神经进化或其他机器学习方法来训练代理。
-
Project Malmo: Malmo平台是一个基于Minecraft构建的复杂AI实验平台,旨在支持人工智能的基础研究。它由微软开发。可以通过下面的链接视频了解更多:
https://www.youtube.com/watch?v=KkVj_ddseO8
5. 总结
从上面的一组工具可以明显看出,当我们考虑数据科学和人工智能相关的项目时,开源是我们要走的路。我可能只是触及了冰山一角,但是有许多工具可以用于各种各样的任务,使作为数据科学家的实验变得更容易,而只需要知道在哪里查找即可。。
在本文中,我们涵盖了5个有趣的数据科学领域,而如果没有代码、ML部署、大数据、视觉/NLP/声音和强化学习,就没有人真正谈论ML。这个5个方面,我个人认为在考虑人工智能的真实世界价值时产生的影响最大。
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/
欢迎关注PyTorch官方中文教程站:
http://pytorch.panchuang.net/