流行AI框架和库的优缺点比较

by admin on 2020年3月12日

日前,谷歌 AI 发布了最新成果
TF-Ranking,它是一个专门针对排序学习(learning-to-rank)应用的可扩展
TensorFlow 库。TF-Ranking 快速且易用,并能创建高质量的排序模型,对构建
web 搜索或新闻推荐等基于真实世界数据的排序系统感兴趣的人,都可以将
TF-Ranking 作为强稳的、可扩展的解决方案。

概述

通过本文我们来一起看一些用于人工智能的高质量AI库,它们的优点和缺点,以及它们的一些特点。

 

人工智能(AI)已经存在很长时间了。然而,由于这一领域的巨大进步,近年来它已成为一个流行语。人工智能曾经被称为一个完整的书呆子和天才的领域,但由于各种开发库和框架的发展,它已经成为一个友好的IT领域,并有很多人正走进它。

在这篇文章中,我们将研究用于人工智能的优质库,它们的优缺点以及它们的一些特征。让我们深入并探索这些人工智能库的世界!

摘要:
不知道自己应该选用那个AI框架和库?看看本文就行了,本文为AI开发的工程师们梳理了现在最流行的框架,并简单的分析了它们的优缺点。

排序是一种以最大化整个列表效用为目的,对项目列表进行排序的过程,适用于搜索引擎、推荐系统、机器翻译、对话系统,甚至还能用于计算生物学等众多领域。在诸如这些(以及其他诸多)应用中,研究人员经常使用一系列称作排序学习的有监督的机器学习技术。在许多情况下,这些排序学习技术会被应用于大规模数据集,在这一场景中,TensorFlow
的可伸缩性会成为一个优势。然而,目前 TensorFlow
还不能直接支持学习排序。并且,现在也还没有其他专门针对排序学习技术规模化应用的开源库。

1. TensorFlow

人工智能已经存在很长时间,然而,由于这一领域的巨大发展,近年来它已成为一个流行语。人工智能曾经被称为一个书呆子和天才领域,但由于各种库和框架的发展,它已成为一个友好的IT领域,更多的人开始了他们的人工智能之旅。

现在,谷歌 AI 宣布开源
TF-Ranking(),它是一个可扩展的排序学习
TensorFlow
库。正如谷歌在最近发表的论文()中所描述的,TF-Ranking
提供了一个统一的框架,该框架包括一套最先进的排序学习算法,并且支持
Pairwise 和 Listwise
损失函数、多项目评分、排序度量优化和无偏见排序等等。

“使用数据流图表的可伸缩机器学习的计算”

图片 1

语言:C ++或Python。

当进入AI时,你会听到的第一个框架之一就是Google的TensorFlow。

TensorFlow是一个使用数据流图表进行数值计算的开源软件。这个框架被称为具有允许在任何CPU或GPU上进行计算的架构,无论是台式机、服务器还是移动设备。这个框架在Python编程语言中是可用的。

TensorFlow对称为节点的数据层进行排序,并根据所获得的任何信息做出决定。

图片 2

优点:

  • 使用易于学习的语言(Python)。
  • 使用计算图表抽象。
  • 用于TensorBoard的可用性的可视化。

缺点:

  • 这很慢,因为Python不是语言中最快的。
  • 缺乏许多预先训练的模型。
  • 不完全开源。

在这篇文章中,我们将研究人工智能的高质量库的优点和缺点,以及它们的一些特点。

TF-Ranking
快速且易用,并能创建高质量的排序模型。该统一框架让机器学习研究人员、实践者和爱好者能够在单个库中评估和选择一系列不同的排序模型。此外,谷歌
AI 团队坚信一个有用的开源库,它的关键不仅在于提供合理的默认值(sensible
default),而且还在于能够授权用户开发自定义模型。为此,他们提供了灵活的
API,让用户可以在 API 中定义和插入自定义的损失函数、评分函数和指标。

2. Microsoft CNTK

图片 3“使用数据流图计算进行机器学习”

现有算法和指标支持

排序学习算法的目标是最小化在项目列表上定义的损失函数,以优化任意给定请求的排序。TF-Ranking
支持在此前工作(https://en.wikipedia.org/wiki/Learning_to_rank#Approaches)中所描述的各类标准的
pointwise,pairwise 和 listwise 损失函数。这确保了使用 TF-Ranking
库的研究人员能够重现和扩展先前的
baseline,并且他们的请求可以得到最明智的选择。此外,TF-Ranking
还可以通过嵌入来处理稀疏特征(如原始文本)以及扩展到数亿个训练实例。因此,任何对构建
web 搜索或新闻推荐等基于真实世界数据的排序系统感兴趣的人,都可以将
TF-Ranking 作为强稳的、可扩展的解决方案。

经验评估是所有机器学习或信息检索研究的重要组成部分。为了确保与先前工作的兼容性,TF-Ranking
支持许多常用的排序评价指标,包括 Mean Reciprocal
Rank(MRR,)和
Normalized Discounted Cumulative
Gain(NDCG,),同时也让研究人员在训练期间更方便在
TensorBoard(开源 TensorFlow 可视化仪表盘)上看到这些指标。

图片 4

TensorBoard 上显示的基于训练步骤(X 轴)的 NDCG 指标 (Y
轴)示例,它表示了训练期间指标的总体进度。不同的方法可直接在仪表板上进行比较,并基于指标选出最佳模型。

“开源深度学习工具包”

图片 5

语言:C ++。

我们可以称之为微软对Google的TensorFlow的回应。

微软的计算网络工具包是一个增强分离计算网络模块化和维护的库,提供学习算法和模型描述。

在需要大量服务器进行操作的情况下,CNTK可以同时利用多台服务器。

据说它的功能与Google的TensorFlow相近;但是,它会更快。

图片 6

 

 

优点:

  • 这是非常灵活的。
  • 允许分布式训练。
  • 支持C ++、C#、Java和Python。

缺点:

  • 它以一种新的语言——网络描述语言(Network Description Language ,
    NDL)来实现。
  • 缺乏可视化。

语言:C ++或Python。

多条目评分

TF-Ranking
支持一种新的评分机制,在新的评分机制中可以对多个条目进行联合评分,这是对只能对单个条目进行独立评分的传统评分机制的扩展。多条目评分面临的一个挑战是难以推断哪些条目必须进行分组并在子组中评分。然后,每个条目累积下来的分数将被用于排序。TF-Ranking
提供了一个 List-In-List-Out(LILO)API,来将所有这些逻辑放入导出的 TF
模型中。

图片 7

TF-Ranking 库支持扩展自传统单条目评分的多条目评分架构。

正如谷歌 AI
在最近的工作()中所展示的,多条目评分在公共
LETOR 基准测试中的性能,与 RankNet,MART 和 LambdaMART
等最先进的排序学习模型相比具有竞争力。

3. Theano

当你进入AI时,你会听到的第一个框架之一就是Google的TensorFlow。TensorFlow是一个使用数据流图进行数值计算的开源框架。这个框架被称为具有允许在任何CPU或GPU上进行计算的架构,无论是台式机,服务器还是移动设备,另外这个框架在Python编程语言中是可用的,这也是Python大火的原因。

排序评价指标优化

排序学习所面临的一个重要研究挑战是排序评价指标的优化(例如前面所提到的
NDCG 和 MRR)。虽然与 Area Under the
Curve(AUC)之类的标准分类评价指标相比,这些评价指标能更好地衡量排序系统的性能,但可惜它们要么不连续,要么平滑。因此,这些评价指标的标准随机梯度下降优化存在困难。

在最近的一项工作()中,谷歌
AI
提出了一种新的方法——LambdaLoss,它为排序评价指标优化提供了一个统一的概率框架。在这个框架中,可以通过期望最大化的过程来设计和优化由评价指标驱动的损失函数。TF-Ranking
库集成了评价指标优化的最新成果,并提供了 LambdaLoss 的实现。谷歌 AI
表示,TF-Ranking
未来有望鼓舞和推动排序评价指标优化这一重要领域的更深入的研究进展。

“数值计算库”

图片 8

语言:Python。

Theano是TensorFlow的强有力竞争者,是一个功能强大的Python库,允许以高效率的方式进行涉及多维数组的数值操作。

Theano库透明地使用GPU来执行数据密集型计算而不是CPU,因此操作效率很高。

出于这个原因,Theano已经被用于为大规模的计算密集型操作提供动力大约十年。

然而,在2017年9月,宣布Theano的主要开发将于2017年11月发布的1.0版本后停止。

这并不意味着它是一个不够强大的库。你仍然可以随时进行深入的学习研究。

图片 9

优点:

  • 正确优化CPU和GPU。
  • 有效的数字任务。

缺点:

  • 与其他库相比,原生Theano有点低级。
  • 需要与其他库一起使用以获得高度的抽象化。
  • AWS上有点bug。

TensorFlow是通过称为节点的数据层进行排序,并根据获得的信息做出决定。

无偏见排序学习

此前的研究()表明,给定一个项目的排序列表,用户更有可能重点查看前面几个结果,而忽略结果之间的相关性。这一发现激发了大家对于无偏见排序学习的研究兴趣,并且带来了无偏见评估和基于训练实例重复加权的几种无偏见学习算法的发展。

4. Caffe

图片 10

开启 TF-Ranking 的使用

TF-Ranking 实现了 TensorFlow Estimator
接口,它通过封装训练、评估、预测和导出服务,可以大大简化机器学习编程。

TF-Ranking 完美地集成了丰富的 TensorFlow 生态系统。如上所述,你可以使用
Tensorboard 将 NDCG 和 MRR
等排序评价指标可视化,以及使用这些评价指标选择最佳模型检查点。一旦你的模型准备就绪,便可使用
TensorFlow
服务(),轻而易举地将其部署到生产。

如果大家有兴趣尝试 TF-Ranking,可以前往谷歌 AI 的 GitHub
存储库(),并参考教程示例()

  • 原文链接:

  • 作者:从末

“快速、开源的深度学习框架”

图片 11

 

 

语言:C ++。

Caffe是一个强大的深度学习框架。

像这个清单上的其他框架一样,深度学习的研究速度非常快。

借助Caffe,您可以非常轻松地构建用于图像分类的卷积神经网络(CNN)。Caffe在GPU上运行良好,这有助于在运行期间提高速度。

Caffe主要的类有:

图片 12

优点:

  • Python和MATLAB的绑定可用。
  • 性能表现良好。
  • 无需编写代码即可进行模型的训练。

缺点:

  • 对于经常性网络不太好。
  • 新体系结构不太好。

 

优点

5. Keras

使用易于学习的语言。

“人类的深度学习”

图片 13 

语言:Python。

Keras是一个用Python编写的开源的神经网络库。

与TensorFlow、CNTK和Theano不同,Keras不是一个端到端的机器学习框架。

相反,它作为一个接口,提供了一个高层次的抽象化,这使得无论它坐落在哪个框架上,神经网络的配置都会变得容易。

谷歌的TensorFlow目前支持Keras作为后端,而微软的CNTK也会在很短的时间内做到这一点。

 

图片 14

 

优点:

  • 它是用户友好的。
  • 它很容易扩展。
  • 在CPU和GPU上无缝运行。
  • 与Theano和TensorFlow无缝工作。

缺点:

  • 不能有效地用作独立的框架。

 

使用计算图抽象。

6. Torch

可以使用可视化的TensorBoard。

“一个开源的机器学习库”

图片 15 

 

语言:C。

Torch是一个用于科学和数字操作的开源机器学习库。

这是一个基于Lua编程语言而非Python的库。

Torch通过提供大量的算法,使得深度学习研究更容易,并且提高了效率和速度。它有一个强大的N维数组,这有助于切片和索引等操作。它还提供了线性代数程序和神经网络模型。

 

图片 16 

优点:

  • 非常灵活。
  • 高水平的速度和效率。
  • 大量的预训练模型可用。

缺点:

  • 不清楚的文献记录。
  • 缺乏即时使用的即插即用代码。
  • 它基于一种不那么流行的语言——Lua。

 

缺点

7. Accord.NET

 

它很慢,因为Python不是编程语言中最快的。

“机器学习、计算机视觉、统计和.NET通用科学计算”

图片 17

语言:C#。

这是专为C#程序员设计的。

Accord.NET框架是一个.NET机器学习框架,使音频和图像处理变得简单。

这个框架可以有效地处理数值优化、人工神经网络,甚至可视化。除此之外,Accord.NET对计算机视觉和信号处理的功能非常强大,同时也使得算法的实现变得简单。

图片 18

优点:

  • 它有一个强大而积极的开发团队。
  • 非常有据可查的框架。
  • 质量可视化。

缺点:

  • 不是一个非常流行的框架。
  • 比TensorFlow慢。

 

缺乏许多预先训练的模型。

8. Spark MLlib

不完全开源。

“可扩展的机器学习库”

图片 19

 

语言:Scala。

Apache的Spark MLlib是一个非常可扩展的机器学习库。

它非常适用于诸如Java、Scala、Python,甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。

MLlib可以轻松插入到Hadoop工作流程中。它提供了机器学习算法,如分类、回归和聚类。

这个强大的库在处理大型数据时非常快速。

 

图片 20 

优点:

  • 对于大规模数据处理非常快速。
  • 提供多种语言。

缺点:

  • 陡峭的学习曲线。
  • 即插即用仅适用于Hadoop。

 

图片 21“开源深度学习工具包”。

9. Sci-kit Learn

 

语言:C ++。

“用Python的机器学习”

图片 22

语言:Python。

Sci-kit learn是一个非常强大的机器学习Python库,主要用于构建模型。

使用numpy、SciPy和matplotlib等其他库构建,对统计建模技术(如分类、回归和聚类)非常有效。

Sci-kit learn带有监督学习算法、无监督学习算法和交叉验证等功能。

优点:

  • 许多主要算法的可用性。
  • 有效的数据挖掘。

缺点:

  • 不是构建模型的最佳选择。
  • GPU效率不高。

 

我们可以称之为它是微软对Google的TensorFlow的回应。

10. MLPack

 

微软的CNTK是一个增强分离计算网络模块化和维护的库,它提供了学习算法和模型描述。在需要大量服务器进行操作的情况下,CNTK可以同时利用多台服务器。

“可扩展的C ++机器学习库”

图片 23

语言:C ++。

MLPack是一个用C ++实现的可扩展的机器学习库。因为它是用C
++编写的,所以你可以猜测它对于内存管理是非常好的。

MLPack以极高的速度运行,因为高质量的机器学习算法与库一起出现。这个库是对新手友好的,并提供了一个简单的API使用。

 

图片 24

优点:

  • 非常可扩展。
  • Python和C ++绑定可用。

缺点:

  • 不是最好的文献记录。

据说它的功能与Google的TensorFlow相近,但是,它更快,在这里了解更多。

总结

本文讨论的库非常有效,并且随着时间的推移已经证明都是高质量的。像Facebook、谷歌、雅虎、苹果和微软这样的大公司都利用其中的一些库来进行深度学习和机器学习项目,那么你为什么不呢?

你能想到你经常使用的但并不在这个列表中的其他库吗?

图片 25

本文原作者:Anton Shaleynikov

转载:

图片 26

优点:

非常灵活。

允许分布式培训。

支持C ++,C#,Java和Python。

缺点:

它以一种新的语言——Network Description Language来实现。

缺乏可视化。

图片 27“数值计算库”

语言:Python。

Theano是TensorFlow的强有力竞争者,它是一个功能强大的Python库,允许以高效率的方式进行多维数组的数值操作。

该库透明地使用GPU来执行数据密集型计算而不是CPU,因此操作效率很高。出于这个原因,Theano已经被用于为大规模的计算密集型操作长达十年的时间。然而,于二零一七年九月,
Theano的1.0版本停止。

但这并不意味着它不再是一个强大的图书馆,你仍然可以随时进行深入的学习研究。

图片 28

优点

优化CPU和GPU。

有效的计算任务。

缺点

与其他库相比,原生Theano有点低级。

需要与其他库一起使用以获得高度的抽象。

AWS使用它上有点bug。

“快速,开放的深度学习框架”

语言:C ++。

Caffe是一个强大的深度学习框架,像这个清单上的其他框架一样,深度学习的研究速度非常快。

借助Caffe,你可以非常轻松地构建用于图像分类的卷积神经网络。Caffe在GPU上运行的也很不错,这有助于在运行期间提高速度。

Caffe主类:

图片 29

优点

Python和MATLAB都可用。

表现的很好。

无需编写代码即可进行模型的训练。

缺点

对于RNN网络不太友好。

对于新体系结构不太友好。

  1. Keras

“为人类普及深度学习”

语言:Python。

Keras是一个用Python编写的开源的神经网络库。与TensorFlow,CNTK和Theano不同,Keras并不意味着是一个端到端的机器学习框架。

相反,它作为一个接口,提供了一个高层次的抽象,这使得神经网络的配置变得简单,无论它坐在哪个框架上。

谷歌的TensorFlow目前支持Keras作为后端,而微软的CNTK也会在很短的时间内做到这一点。

图片 30

优点

它对用户非常友好。

它很容易扩展。

在CPU和GPU上无缝运行。

与Theano和TensorFlow无缝工作。

缺点

不能有效地用作独立的框架。

6.Torch

“一个开源的机器学习库”

语言:C.

Torch是一个用于科学和数字操作的开源机器学习库。

这是一个基于Lua编程语言的库而不是Python。

它通过提供大量的算法,使得深度学习研究更容易,并且提高了效率和速度。它有一个强大的N维数组,这有助于切片和索引等操作。它还提供了线性代数程序和神经网络模型。

图片 31

优点

非常灵活。

高水平的速度和效率。

大量的预训练模型可用。

缺点

缺乏即时使用的代码。

它基于一种不那么流行的语言,Lua。

“机器学习,计算机视觉,统计和.NET通用科学计算”。

语言:C#。

这里是一个为C#程序员存在的机器学习框架。Accord.NET框架是一个.NET机器学习框架,使音频和图像处理变得简单。

这个框架可以有效地处理数值优化,人工神经网络,甚至可视化。除此之外,Accord.NET对计算机视觉和信号处理功能非常强大,同时也使得算法的实现变得简单。

图片 32

优点

它有一个庞大而积极的开发团队。

有据可查的框架。

有质量可视化。

缺点

不是一个非常流行的框架。

比TensorFlow慢。

“可扩展的机器学习库”

语言:Scala。

Apache的Spark
MLlib是一个非常可扩展的机器学习库。它非常适用于Java,Scala,Python甚至R等语言。它非常高效,因为它可以与Python库和R库中的numpy进行互操作。

MLlib可以轻松插入到Hadoop工作流程中。它还提供了机器学习算法,如分类,回归和聚类。这个强大的库在处理大型数据时非常快速。

图片 33

优点

对于大规模数据非常快速。

提供支持多种语言。

缺点

不是很完美的学习曲线。

即插即用仅适用于Hadoop。

“用Python进行机器学习”

语言:Python。

Sci-kit learn是一个非常强大的机器学习Python库,主要用于构建模型。

使用numpy,SciPy和matplotlib等其他库构建,对统计建模技术(如分类,回归和聚类)非常有效。

Sci-kit学习带有监督学习算法,无监督学习算法和交叉验证等功能。

优点

许多主要算法的可用性很高。

能够进行有效的数据挖掘。

缺点

不是创建模型的最佳选择。

GPU效率不高。

“可扩展的C ++机器学习库”

语言:C ++。

MLPack是一个用C ++实现的可扩展的机器学习库,因为它是用C
++编写的,所以你可以猜测到它对于内存管理的非常好。

MLPack以极高的速度运行,可以支持高质量的机器学习算法与库一起运行。这个库对新手是友好的,它还提供了一个简单的API帮助新手使用。

图片 34

优点

非常容易扩展。

Python和C ++都可用。

缺点

没有具体的参考资料。

本文由阿里云云栖社区组织翻译。

文章原标题《progressive-tools10-best-frameworks-and-libraries》

作者 :Anton Shaleynikov

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图