雷锋网 AI 开发者按:工欲善其事必先利其器,这也是大部分开发者在日常工作中最重要开发原则。选择与开发内容相匹配的工具,常常会使我们事半功倍。但面对人工智能的多个领域,如:机器学习、深度学习、NLP等等,多样的工具有时也让我们也无从选择。
就在最近,一个基于 javascript 的可视化库 D3js(treemap 可视化)对 json 文件生成的技术图,给开发者提供了详细的各领域工具清单,内容涵盖了 11 种极具潜力的 AI 工具类型,雷锋网 AI 开发者将其整理如下,强烈建议大家收藏~
原文链接:https://github.com/haggaishachar/techmap
目录:Ⅰ、经典机器学习(1-3)Ⅱ、深度学习(4-8)Ⅲ、强化学习(9-12)Ⅳ、自然语言处理(13-18)Ⅴ、语音识别(19-21)Ⅵ、计算机视觉(22-26)Ⅶ、分布式训练(27-31)Ⅷ、自动建模(32-35)Ⅸ、IDEs系统(36-38)Ⅹ、平台(39-41)Ⅺ、评分推理系统(42-43)
适用于经典机器学习的工具
一、SciKit-learn star 39.2k fork 19.2k
scikit-learn 是一种强大的基于 Python 语言的机器学习算法库(https://scikit-learn.org/stable/)。其中,包含了算法预处理,模型参数择优,回归与分类等算法,官方文档包含了每一种算法的例子,代码简洁优美,可视化了每一种算法结果,即能学习 python,也是帮助开发者更好理解机器学习算法的便利工具。
尤其在监督学习部分,Scikit-learn 提供了广义线性模型、支持向量机、最近邻算法、高斯过程、朴素贝叶斯、决策树和集成方法等算法教程,同时还介绍了特征选择、随即梯度下降算法、线性与二次判别分析等在监督学习中非常重要的概念;而在半监督学习中的标签传播算法和无监督学习中的聚类与降维算法方面,也有非常多的教程。
GitHub 地址:https://github.com/scikit-learn/scikit-learn
二、XGBoost star 18.3k fork 7.3k
xgboost 的全称是 eXtreme Gradient Boosting,它在 Gradient Boosting 框架下实现了 c++机器学习算法。
XGBoost 最大的特点在于,它能够自动利用 CPU 的多线程进行并行,同时在算法上加以改进提高了精度。它是经过优化的分布式梯度提升库,可扩展性强,高效、灵活且可移植。
GitHub 地址:https://github.com/dmlc/xgboost
三、Accord.NET star 3.7k fork 1.7k
Accord.NET Framework 是一个.NET 机器学习框架,结合了完全用 C#编写的音频和图像处理库(http://accord-framework.net/)。
它可用于构建生产级计算机视觉、计算机试听、信号处理和统计应用程序甚至用于商业用途的完整框架,并为.NET 的应用程序提供了统计分析、机器学习、图像处理、计算机视觉相关的算法。
GitHub 地址:https://github.com/accord-net/framework
适用于深度学习的工具
TensorFlow 2019 年相关数据
四、TensorFlow star 141k fork 79.8k
TensorFlow 是用于机器学习的端到端开源平台(https://tensorflow.org),也是 2019 年度 GitHub 上最受欢迎的项目。
它具有工具、库、社区资源全面且灵活的生态系统,提供稳定的 Python 和 C ++ API,以及其他语言的非保证向后兼容 API;能够帮助开发者们在 ML 领域的研究与发展,并使开发人员轻松构建和部署 ML 支持的应用程序。
GitHub 地址:https://github.com/tensorflow/tensorflow
五、PyTorch star 35.8k fork 9k
作为 TensorFlow 强有力竞争对手的 PyTorch,也是目前较为主流的深度学习工具之一。
PyTorch 是一个开源的机器学习框架,提供了两个高级功能,包括:具有强有力的 GPU 加速度的张量计算(如 NumPy),以及基于磁带自动调整系统构建的深度神经网络;可加快从研究原型到生产部署的过程。
此前,OpenAI 官方宣布了「全面转向 PyTorch」的消息,计划将自家平台的所有框架统一为 PyTorch,也进一步体现了 PyTorch 在深度学习方面的潜力。
GitHub 地址:https://github.com/pytorch/pytorch
六、MXNET star 18.4k fork 6.5k
MXNet 是一个功能齐全,可编程和可扩展的深入学习框架,支持最先进的深入学习模式(https://mxnet.apache.org/)。
MXNet 提供了混合编程模型(命令式和声明式)和大量编程语言的代码(包括 Python、C++、R、Scala、Julia、Matlab 和 JavaScript)的能力,是一个易安装易上手的开源深度学习工具,它提供了一个 python 接口 gluon,能够让开发者迅速搭建起神经网络,并进行高效训练。
GitHub 地址:https://github.com/apache/incubator-mxnet
七、Sonnet star 8.1k fork 1.2k
Sonnet 是由 DeepMind 发布的,在 TensorFlow 上用于构建复杂神经网络的开源库。
Sonnet 主要用于让 DeepMind 开发的其它模型更容易共享,Sonnet 可以在内部的其它子模块中编写模块,或者在构建新模块时传递其它模型作为参数;同时,Sonnet 提供实用程序来处理这些任意层次结构,以便于使用不同的 RNN 进行实验,整个过程无需繁琐的代码改写。
GitHub 地址:https://github.com/deepmind/sonnet
八、DL4J star 11.5k fork 4.8k
DL4J 是采用 java 和 jvm 编写的开源深度学习库,支持各种深度学习模型。DL4J 最重要的特点是支持分布式,可以在 Spark 和 Hadoop 上运行,它支持分布式 CPU 和 GPU 运行,并可以利用 Spark 在多台服务器多个 GPU 上开展分布式的深度学习模型训练,让模型运行更快。
DL4J 的基本特性包括:DL4J 中的神经网络训练通过簇的迭代并行计算;整个过程由 Hadoop 和 Spark 架构支持;使用 Java 允许开发者在 Android 设备的程序开发周期中使用。
GitHub 地址:https://github.com/eclipse/deeplearning4j
适用于强化学习的工具
九、Gym star 19.6k fork 5.5k
Gym 是一个用于开发和比较强化学习算法的工具(https://gym.openai.com/)。
它无需对 agent 的先验知识,并且采用 python 作为主要开发语言,因此可以简单的和 TensorFlow 等深度学习库进行开发集成,同时直观的将学习结果用画面直观的展示出来。Gym 库中包含许多可以用于制定强化学习算法的测试问题(即环境),这些环境有共享接口,允许编写通用的算法。
GitHub 地址:https://github.com/openai/gym
十、Dopamine star 8.7k fork 1.1k
一款基于 Tensorflow 的框架,旨在为新手和经验丰富的强化学习研究人员提供兼具灵活性、稳定性和可重复性的新工具。
该框架的灵感来源于大脑中奖励-动机行为的主要成分「多巴胺受体」,这反映了神经科学与强化学习研究之间的强大的历史联系,是一个强化学习算法快速原型的研究框架。
GitHub 地址:https://github.com/google/dopamine
十一、ReAgent star 2.4k fork 312
Facebook 推出的一个构建决策推理系统的模块化端到端平台,用于推理系统(强化学习、上下文管理等), 可以显著简化推理模型构建过程。
ReAgent 由三部分组成:生成决策并接收决策反馈的模型、用于评估新模型部署前性能的模块及快速迭代的服务平台。同时,ReAgent 也是创建基于 AI 的推理系统的最全面、模块化开源平台,并且是第一个包含策略评估的平台,将会加速相关决策系统的部署。
GitHub 地址:https://github.com/facebookresearch/ReAgent
十二、Tensorlayer star 5.9k fork 1.3k
这是一个面向科学家的深度学习和强化学习库。TensorLayer 由底层到上层可以分为三大模块:神经网络模块、工作流模块、应用模块。
与 Keras 和 Pytorch 相比,TensorLayer 提高了神经网络模块的抽象化设计,同时实现了降低使用现有层和开发新层的工作量。
GitHub 地址:https://github.com/tensorlayer/tensorlayer
适用于自然语言处理的工具
十三、BERT star 21.3k fork 5.8k
BERT 是一个基于双向 Transformer 的大规模预训练语言模型,用于对大量未标记的文本数据进行预训练,以学习一种语言表示形式,这种语言表示形式可用于对特定机器学习任务进行微调。
BERT 被称为是 NLP 领域中里程碑的进展;目前,BERT 也是 NLP 深度学习中的重要组成部分,很多之后的自然语言处理模型都是在此基础上优化与改进而得。
GitHub 地址:https://github.com/google-research/bert
十四、Transformers star 21.7k fork 4.8k
Transformers 是神经机器翻译中使用的一种神经网络,它主要涉及将输入序列转换为输出序列的任务,这些任务包括语音识别和文本转换语音。
这类任务需要「记忆」,下一个句子必须与前一个句的上下文相关联(这是相当关键的),以免丢失重要的信息。通过将 attention 应用到正在使用的单词上,则可以解决当句子太长的时,RNN 或 CNN 无法跟踪上下文和内容的问题。
GitHub 地址:https://github.com/huggingface/transformers
十五、AllenNLP star 8k fork 1.7k
一个基于 PyTorch 的 NLP 研究库,利用深度学习来进行自然语言理解,通过处理低层次的细节、提供高质量的参考实现,能轻松快速地帮助研究员构建新的语言理解模型。
AllenNLP 能让设计和评估新的深度学习模型变得简单,几乎适用于任何 NLP 问题,通过利用一些基础组件,你可以轻松地在云端或是你自己的笔记本上跑模型。
GitHub 地址:https://github.com/allenai/allennlp
十六、flair star 8.1k fork 1k
一款简单易用的 Python NLP 库,允许将当前最优自然语言处理(NLP)模型应用于文本,如命名实体识别(NER)、词性标注(PoS)、词义消歧和分类。
Flair 基于 Pytorch 的 NLP 框架,它的接口相对更简单,允许用户使用和结合不同的词嵌入和文档嵌入,包括 Flair 嵌入、BERT 嵌入和 ELMo 嵌入。
GitHub 地址:https://github.com/flairNLP/flair
十七、spaCy star 15.7k fork 2.8k
这是一个具有工业强度级的 Python 自然语言处理工具包。
它已经成为 Python 中最广泛使用的工业级自然语言库之一,它提供了当前最佳的准确性和效率,并且有一个活跃的开源社区支持。
GitHub 地址:https://github.com/explosion/spaCy
十八、fastText star 20.5k fork 3.9k
FastText 是 Facebook 人工智能研究实验室(FAIR)开源的一个文本处理库,他是一个专门用于文本分类和外文本表示的库,用于高效文本分类和表示学习。
fastText 的核心是使用「词袋」的方式,不管文字的顺序;但它不是线性的,而是使用分层分类器来将时间复杂度降低到对数级别,并且在具有更高分类数量的大数据集上更高效。
GitHub 地址:https://github.com/facebookresearch/fastText
适用于语音识别的工具
十九、Kaldi star 8.2k fork 3.7k
Kaldi 是目前使用广泛的开发语音识别应用的框架。
该语音识别工具包使用了 C ++编写,研究开发人员利用 Kaldi 可以训练出语音识别神经网路模型,但如果需要将训练得到的模型部署到移动端设备上,通常需要大量的移植开发工作。
GitHub 地址:https://github.com/kaldi-asr/kaldi
二十、DeepSpeech star 13k fork 2.4k
DeepSpeech 是一个开源语音转文本引擎,使用基于百度深度语音研究论文的机器学习技术训练的模型。其中,该项目运用到了 Google 的 TensorFlow 来简化实施过程。
GitHub 地址:https://github.com/mozilla/DeepSpeech
二十一、wav2letter star 4.8k fork 770
这是由 Facebook 人工智能研究院发布的首个全卷积自动语音识别工具包,它是一个简单高效的端到端自动语音识别(ASR)系统。
wav2letter 的核心设计基于三个关键原则,包括:实现在包含成千上万小时语音数据集上的高效模型训练;简单可扩展模型,可以接入新的网络架构、损失函数以及其他语音识别系统中的核心操作;以及平滑语音识别模型从研究到生产部署的过渡。
GitHub 地址:https://github.com/facebookresearch/wav2letter
适用于计算机视觉的工具
二十二、YOLO star 16.2k fork 10.4k
YOLO 是当前深度学习领域解决图像检测问题最先进的实时系统。在检测过程中,YOLO 首先将图像划分为规定的边界框,然后对所有边界框并行运行识别算法,来确定物体所属的类别。确定类别之后,YOLO 再智能地合并这些边界框,在物体周围形成最优边界框。
这些步骤全部并行进行,因此 YOLO 能够实现实时运行,并且每秒处理多达 40 张图像。据官网显示,在 Pascal Titan X 上,它以 30 FPS 的速度处理图像,并且在 COCO 测试开发中的 mAP 为 57.9%。
GitHub 地址:https://github.com/allanzelener/YAD2K
二十三、OpenCV star 41.9k fork 32.4k
OpenCV 是英特尔开源的跨平台计算机视觉库(https://opencv.org),被称为 CV 领域开发者与研究者的必备工具包。
这是一套包含从图像预处理到预训练模型调用等大量视觉 API 的库,并可以处理图像识别、目标检测、图像分割和行人再识别等主流视觉任务。其最显著的特点是它提供了整套流程的工具,因此开发者无需了解各个模型的原理就能用 API 构建视觉任务。它具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统。
GitHub 地址:https://github.com/opencv/opencv
二十四、Detectron2 star 7.7k fork 1.4k
Detectron2 则是 PyTorch 1.3 中一重大新工具,它源于 maskrcnn 基准测试,也是对先前版本 detectron 的一次彻底重写。
Detectron2 通过全新的模块化设计,变得更灵活且易于扩展,它能够在单个或多个 GPU 服务器上提供更快速的训练速度,包含了更大的灵活性与扩展性,并增强了可维护性和可伸缩性,以支持在生产中的用例。
GitHub 地址:https://github.com/facebookresearch/detectron2
二十五、OpenPose star 15.9k fork 4.7k
OpenPose 人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以 caffe 为框架开发的开源库。
它可以实现人体动作、面部表情、手指运动等姿态估计。适用于单人和多人,具有极好的鲁棒性。是世界上首个基于深度学习的实时多人二维姿态估计应用,很多人体姿态估计实例都是基于它实现,如动作采集、3D 试衣、绘画辅助等。
GitHub 地址:https://github.com/CMU-Perceptual-Computing-Lab/openpose
二十六、facenet star 10k fork 4.1k
FaceNet 采用了深度卷积神经网络(CNN)学习将图像映射到欧式空间,也被称为通用人脸识别系统。
该系统可从人脸中提取高质量的特征,称为人脸嵌入(face embeddings),可用于训练人脸识别系统,从而实现对人脸的验证。它在 LFW 数据集上测试的准确率达到了 99.63%,在 YouTube Faces DB 数据集上准确率为 95.12%。
GitHub 地址:https://github.com/davidsandberg/facenet
适用于分布式训练的工具
二十七、Spark MLlib star 25.1k fork 21.1k
Spark 是一个开源集群运算框架,也是现在大数据领域热门开源软件之一(https://spark.apache.org/mllib/)。
由于 Spark 使用了内存内运算技术,它在内存上的运算速度比 Hadoop MapReduce 的运算速度快上 100 倍;这也使得 Spark MLlib 分布式计算框架运行非常高效、快速。它可以实现大部分机器学习,如:聚类、分类、回归等算法,并允许将数据加载至集群内存,多次对其进行查询,所以非常适合用于机器学习算法。
GitHub 地址:https://github.com/apache/spark
二十八、Mahout star 1.8k fork 930
Mahout 是一个分布式线性代数框架,用于快速创建可扩展的高性能机器学习应用程序(http://mahout.apache.org/)。
Mahout 框架长期以来一直与 Hadoop 绑定,但它的许多算法也可以在 Hadoop 之外运行。它允许多种算法可以跨越分布式 Spark 群集上运行,并且支持 CPU 和 GPU 运行。
GitHub 地址:https://github.com/apache/mahout
二十九、Horovod star 8.5k fork 1.3k
这是由 Uber 开源的一个跨多台机器的分布式深度学习的 TensorFlow 训练框架,可以使分布式深度学习快速且易于使用。
据介绍,Horovod 让开发人员只需几行代码就可以完成任务。这不仅加快了初始修改过程,而且进一步简化了调试。考虑到深度学习项目的高度迭代性,这也可以节省大量时间。除此之外,它还结合了高性能和修补低级模型细节的能力,例如:同时使用高级 api,并使用 NVIDIA 的 CUDA 工具包实现自己的自定义操作符。
GitHub 地址:https://github.com/horovod/horovod
三十、Dask star 6.2k fork 994
当开发者需要并行化到多核时,可以用 Dask 来将计算扩展到多个内核甚至多个机器。
Dask 提供了 NumPy Arrays,Pandas Dataframes 和常规列表的抽象,能够在无法放入主内存的数据集上并行运行。对大型数据集来说,Dask 的高级集合是 NumPy 和 Pandas 的替代方案。
GitHub 地址:https://github.com/dask/dask
三十一、Ray star 10.3k fork 1.5k
Ray 是一个高性能分布式执行框架,它使用了和传统分布式计算系统不一样的架构和对分布式计算的抽象方式,用于快速而简单的构建和运行分布式应用程序。
Ray 按照典型的 Master-Slave 进行设计。其中,Master 负责全局协调和状态维护,Slave 执行分布式计算任务。不过和传统的分布式计算系统不同的是,Ray 使用了混合任务调度的思路,性能更强。
GitHub 地址:https://github.com/ray-project/ray
适用于自动建模的工具
三十二、TPOT star 6.7k fork 1.2k
TPOT 是一个 Python 编写的软件包,利用遗传算法行特征选择和算法模型选择,仅需几行代码,就能生成完整的机器学习代码。
在机器学习模型开发图中,TPOT 所完成的即通过利用遗传算法,分析数千种可能的组合,为模型、参数找到最佳的组合,从而自动化机器学习中的模型选择及调参部分。
GitHub 地址:https://github.com/EpistasisLab/tpot
三十三、AutoKeras star 6.6k fork 1.1k
它使用了高效神经架构搜索(ENAS,https://arxiv.org/abs/1802.03268),只需使用 pip install autokeras 就能快速轻松地安装软件包,然后就能用自己的数据集来执行自己的架构搜索构建思路。
相比谷歌 AutoML,两者构建思路类似,但不同的是,AutoKeras 所有代码都已经开源,可供开发者无偿使用。
GitHub 地址:https://github.com/keras-team/autokeras
三十四、Featuretools star 4.6k fork 602
这是一个用于自动化特性工程的开源 python 框架(https://www.featuretools.com/)。
它可以帮助开发者从一组相关数据表中自动构造特征。开发者只需要知道数据表的基本结构和它们之间的关系,然后在实体集(一种数据结构)中指明。然后在有了实体集之后,使用一个名为深度特征合成(DFS)的方法,在一个函数调用中构建出数千个特征。
GitHub 地址:https://github.com/FeatureLabs/featuretools
三十五、NNI star 5.3k fork 683
NNI 是由微软发布的一个用于神经网络超参数调整的开源 AutoML 工具包,也是目前较为热门的 AutoML 开源项目之一。
最新版本的 NNI 对机器学习生命周期的各个环节做了更加全面的支持,包括:特征工程、神经网络架构搜索(NAS)、超参调优和模型压缩,开发者都能使用自动机器学习算法来完成,即使是开发小白也能轻松上手。
GitHub 地址:https://github.com/microsoft/nni
三十六、AdaNet star 3k fork 443
AdaNet 是由谷歌开源的一个轻量级的基于 TensorFlow 框架(https://adanet.readthedocs.io/en/v0.8.0/)。
AdaNet 易于使用,并能创建高质量的模型,为 ML 实践者节省了用于选择最佳神经网络架构的时间,实现了一种将学习神经架构作为子网络集合的自适应算法。
GitHub 地址:https://github.com/tensorflow/adanet
IDEs 系统
三十七、Jupyter star 9.3k fork 2.2k
Jupyter 是一种 Web 应用,涵盖了跨数十种编程语言的交互式计算。
它能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中,非常方便研究和教学。在数据挖掘平台 Kaggle 上,使用 Python 的数据开发者大多数选择了 jupyter 来实现分析和建模的过程。
GitHub 地址:https://github.com/jupyter/jupyter
三十八、Spyder star 5.1k fork 1k
Spyder 是一个 用于科学计算的使用 Python 编程语言的集成开发环境(IDE)。
它结合了综合开发工具的高级编辑、分析、调试功能以及数据探索、交互式执行、深度检查和科学包的可视化功能,对于初学者也非常友好。
GitHub 地址:https://github.com/spyder-ide/spyder
三十九、Zeppelin star 4.6k fork 2.2k
Zeppelin 是一款基于 Web 的交互式数据分析平台。它基于网络的笔记本,默认使用 Spark 集群作为分析引擎,提供数据可视化的框架,支持数据驱动的交互式数据分析。
通过配置,它也支持包括 SQL、Python、R 等多种数据分析语言,提供数据库查询、动态图表展示、地图等数据可视化能力,并能够以 Notebook 的形式保存和分发代码及分析结果。
GitHub 地址:https://github.com/apache/zeppelin
平台
四十、H2O star 4.6k fork 1.7k
H2O 是 H2O.ai 公司的完全开源的分布式内存机器学习平台。H2O 同时支持 R 和 Python,支持最广泛使用的统计和机器学习算法,包括梯度提升(Gradient Boosting)机器、广义线性模型、深度学习模型等。
H2O 包括一个自动机器学习模块,使用自己的算法来构建管道。它对特征工程方法和模型超参数采用了穷举搜索,优化了管道。H2O 自动化了一些最复杂的数据科学和机器学习工作,例如特征工程、模型验证、模型调整、模型选择 和 模型部署。除此之外,它还提供了自动可视化以及机器学习的解释能力(MLI)。
GitHub 地址:https://github.com/h2oai/h2o-3
四十一、MLflow star 5.9k fork 1.2k
MLflow 是机器学习生命周期的开源平台,开放接口,可与任何机器学习库、算法、部署工具或编程语言一起使用,基于 REST API 和简单的数据格式而构建。是一个开源项目,允许用户和机器学习库开发人员可以对其进行扩展。
MLflow 现 alpha 版,提供跟踪、项目和模型三大组件。MLflow 的跟踪组件支持记录和查询实验数据,如评估度量指标和参数。MLflow 的项目组件提供了可重复运行的简单包装格式。最后,MLflow 的模型组件提供了用于管理和部署模型的工具。
GitHub 地址:https://github.com/mlflow/mlflow
四十二、Kubeflow star 8.3k fork 1.3k
Kubeflow 项目旨在使 Kubernetes 上的机器学习变的轻松、便捷、可扩展,其目标不是重建其他服务,而是提供一种简便的方式找到最好的 OSS 解决方案。对分布式训练任务支持。
用于创建和管理交互式 Jupyter notebook 的 JupyterHub,可配置为使用 CPU 或 GPU,并通过单一设置调整至单个集群大小的 TensorFlow 训练控制器(Tensorflow Training Controller),用于 TF 服务容器(TF Serving container)
GitHub 地址:https://github.com/kubeflow/kubeflow
评分推理系统
四十三、ONNX star 7.8k fork 1.3k
ONNX 是一种针对机器学习所设计的开放式的文件格式,用于存储训练好的模型。它使得不同的人工智能框架(如 Pytorch, MXNet)可以采用相同格式存储模型数据并交互。ONNX 的规范及代码主要由微软,亚马逊,Facebook 和 IBM 等公司共同开发,以开放源代码的方式托管在 Github 上。
目前官方支持加载 ONNX 模型并进行推理的深度学习框架有: Caffe2, PyTorch, MXNet,ML.NET,TensorRT 和 Microsoft CNTK,并且 TensorFlow 也非官方的支持 ONNX。
GitHub 地址:https://github.com/onnx/onnx
四十四、Seldon star 1.4k fork 296
开源机器学习部署平台 Seldon Core,让机器学习模型可以部署于 Kubernetes 上。Seldon Core 的目标,要让研究人员可以用任何工具包、程序语言建立机器学习模型。
现阶段该工具支持模型包含以 Python 为基础的 TensorFlow、Sklearn,还有 Spark、H2O、R 等知名模型。此外,Seldon Core 也让机器学习模型可支援 REST、gRPC,让使用者可以更简单地整合相关企业应用。
GitHub 地址:https://github.com/SeldonIO/seldon-core