【.com快译】在人工智能(AI)研究领域,除了使用TensorFlow、PyTorch等热门平台外,目前还有很多优秀的、略显小众的开源工具和资源。在本文中,我们将讨论七个可用于各种前沿研究的开源AI库。它们涉及的领域包括量子机器学习(ML)、加密计算等。由于它们提供开源许可,您可以添加、分叉或修改它们的内容以满足实际项目需要。DiffEqFlux.jl:ImplementingNeuralDifferentialEquationsinJuliaLanguageMITLicenseGitHubStars:481Repository地址:https://github.com/SciML/DiffEqFlux.jl/专为科学计算而设计的Julia编程语言,是一门比较年轻的编程语言(目前只有“9岁”,而Python已经“30岁”)。Julia旨在弥合Python等高级生产力语言与C++等高速语言之间的差距。它更接近于在硬件中执行各种类似机器的操作。Julia语言可以将即时编译与动态编程范式结合起来。虽然这使得第一次执行需要很长时间来编译,但随着时间的推移,它将以接近C的速度运行各种算法。虽然该语言是为科学计算和研究而设计的,但它经常用于机器学习和人工智能。借助可用于微编程的Flux.jl(如下所述)等软件包,Julia语言正在构建其社区和生态系统,以实现快速迭代、推理和训练。作为一个围绕Julia语言开发的包,DiffEqFlux.jl通过结合DifferentialEquations.jl和Flux.jl工具包来促进神经微分方程的构建。当然,除了神经微分方程,DiffEqFlux.jl还支持随机微分方程和一般偏微分方程。同时还支持GPU,满足尖端生产系统的性能需求。您可以通过链接了解有关DiffEqFlux.jl的更多信息-https://julialang.org/blog/2019/01/fluxdiffeq/。PennyLane:同时适用于机器学习和量子计算的库Apache2.0GitHubstars:817Repository地址:https://github.com/PennyLaneAI/pennylanePennyLane使用自动化微分技术在深度学习和量子电路模拟方面取得了成功。最初,PennyLane实现了大部分基于Autograd库的自动微分功能。之后,它添加了其他后端库。目前,PennyLane可以支持使用PyTorch和TensorFlow后端,以及不同的量子模拟器和设备。作为一个通用库,它主要用于构建可以通过反向传播进行训练和更新的量子和混合电路。PennyLane团队为其采用了一流的编码和单元测试风格。作为开源软件(在Apache2.0许可下),它在GitHub上拥有大量的贡献者,紧跟量子机器学习领域的步伐。Flux.jl:AnewapproachtoautomateddifferentiationMIT"Expat"licenseGitHubstars:2.9kRepository地址:https://github.com/FluxML/Flux.jlFlux.jl是一个强大的软件库,可用于自动化差分分类机器学习和一般差分编程。它支持Julia编程语言并持有开源MIT许可证。通常,PyTorch的fast.ai和TensorFlow的Keras都使用更高级的应用程序库接口,而Flux.jl使用支持各种数学和科学计算的编码和方程模式来实现机器学习。Flux.jl可用于许多涉及Julia语言的机器学习项目,包括前面讨论的DiffEqFlux.jl。但是,对于想要从Python获得与Autograd或JAX最相似体验的初学者,Zygote.jl(一个基于Flux的高级自动微分库)是最好的起点。TensorflowProbability:CorrectdoesnotmeansureApache2.0GitHubstars:3.3kRepositoryaddress:https://github.com/tensorflow/probabilityTensorFlowProbability提供了一些工具,可以用来推理不确定性、概率和统计分析。这些特征帮助我们建立对模型预测的信心,以避免分布外输入数据对推理输出的影响。这正是传统深度学习模型无法做到的。下面我将以TensorFlowProbability文档中的一个例子来和大家讨论在不考虑非确定性或随机过程时可能犯的错误。这个例子是回归问题的一个简单例子。我们将定义和讨论两大类不确定性:任意的和认知的。首先,让我们看看如何使用简单的线性回归模型来拟合数据。这里没有使用任何类型的不确定性。毫无疑问,我们有一条线段,它遵循所有观察的中心趋势线。虽然线段可以告诉我们一些关于数据的信息,但它只是其中的一部分。如果真实情况变化太快,模型输出和观测值之间的差异就会出现偏差,线段就不能很好地解释真实数据。接下来,让我们看看当我们应用认知不确定性时模型会发生什么。事实上,认知的不确定性往往来自经验的缺乏。也就是说,认知不确定性会随着给定类型的训练样本量的增加而减少。毕竟,基于机器学习模型中罕见样本类型和边缘情况的预测可能会导致危险的错误结果。这里的任意不确定性代表事件或预测的内在随机性,就像掷骰子一样。如果我们将其应用于此示例的回归问题,我们将得到如下图所示的线段。其中的任何不确定性都由统计误差的界限表示。我们可以看到,虽然认知不确定性似乎捕捉了数据穿过y轴的枢轴点,但任意不确定性会产生缓慢变化的误差范围。误差范围扩展到整个数据分布,并在右侧显示为松散的沙点。那么,如果我们对这个回归问题的例子同时应用任意和认知不确定性方法呢?我们将能够通过对高度不确定性区域的预测来测试直觉观察。模型估计捕获了数据中的枢轴区域和潜在的随机性。然而,TensorFlowProbability在基于具有径向基函数内核的变分高斯过程的层上表现出“功能不确定性”。如上所示,此自定义不确定性模型捕获了数据中前所未见的周期性。如果您对这方面感兴趣,请查看2019TensorFlow开发者峰会上TensorFlowProbability的公开演示-https://www.youtube.com/watch?v=BrwKURU-wpk。TensorFlowProbability提供的工具可用于将对已知未知参数(任意不确定性)和未知未知参数(认知)的洞察力注入机器学习模型,以及概率和统计推理的应用程序。随着AI和ML模型在日常生活中的广泛应用,我们需要使用这样的软件库来构建一个“不知何时知”的模型。PySyft:深入挖掘Apache2.0背后的数据GitHub星级:7k存储库地址:https://github.com/OpenMined/PySyft今天,人们在日常生活中产生的敏感数据,包括健康记录、约会偏好和财务记录等等。人们通常希望仅出于非常特定的目的访问此数据,并且仅由非常特定的人或算法访问,同时仅将它们用于预期目的。例如,人们可能会允许他们的医生访问他们的医疗扫描记录,但不允许他们当地的药房(或更糟糕的是,快餐配送应用程序)成为广告营销的来源。而当人们谈论人工智能安全时,他们往往将此类风险归咎于缺乏隐私保护技术应用和政策的公司、政府或其他机构。PySyft是一个为尊重隐私的机器学习而构建的软件库。通过相关工具,PySyft可以协助用户在机器学习和计算中妥善处理“不拥有、看不到”的数据,从而实现一种罕见的、尊重隐私的机器学习方式。AutoKeras:教机器自己调整超参数Apache2.0GitHubstars:7.9kRepository地址:https://github.com/keras-team/autokeras随着深度学习成为人工智能的重要方法,深度神经网络一起,它已经变得更容易解决典型问题,例如:图像分割、分类或预测偏好和行为。借助Keras和PyTorch的fast.ai等高级库,我们可以将多个层连接在一起,并轻松地将它们放入有价值的数据集中。使用Keras,就像使用model.fit的API一样简单。由于AutoKeras添加了一个额外的简单自动化层,您甚至不需要在运行时指定模型的架构。今天,我们不需要通过自定义CUDA代码和自定义梯度检查来构建深度神经网络,也不需要使用TensorFlow1.x版本复杂的图形会话编程模式。我们只需要仔细调整超参数,以自动方式为数据集实现最佳模型。虽然简单的网格搜索不是设置超参数的最佳方式(甚至随机搜索通常更好),但它很常见。作为一个自动化机器学习库,AutoKeras结合了Keras的简单实用性和自动化超参数甚至架构调整的便利性。其中最有用的是AutoKerasAutoModel类,它可用于仅通过其输入和输出来定义“超级模型”。与普通的Keras训练模型类类似,我们可以通过调用fit()方法来训练AutoKerasAutoModel。它不仅会自动调整超参数,还会开发优化的内部架构。总之,像AutoKeras这样的自动化机器学习(AutoML)工具可以为开发人员节省大量宝贵的时间。JAX,一个新的快速自动化微分库Apache2.0GitHubstars:12.3kRepositoryaddress:https://github.com/google/jax作为世界顶级的AI研究机构之一,GoogleDeepMind不仅将JAX作为功能自动化将差异化工具纳入他们的工作流程,他们一直在开发一个完整的、以JAX为中心的生态系统。该生态系统包括:用于深度强化学习的RLax、用于在函数式和面向对象编程范式之间进行组合和转换的Haiku、用于图形深度学习的Jaraph,以及许多其他基于JAX的工具,所有这些都拥有开源和友好的Apache2.0许可证。值得一提的是,对于那些有兴趣利用JAX的实时编译、硬件加速(包括对最新GPU的支持)和纯JAX功能进行AI研究的人来说,DeepMindJAX生态系统是一个很好的起点。总结在很多情况下,人工智能研究人员可能只关注少数常用的专业工具。虽然他们往往不需要每个项目都从头开始,但准确了解哪种开源库适合哪种类型的项目还是非常有必要的。从上面的讨论中,我们列出了七个用于人工智能研究的优秀开源库,从自动机器学习到微分量子电路。希望上面的列表为您提供了一组丰富的功能和足够的开发选项。原标题:你可能没听说过的7个最好的开源AI库,作者:KevinVu
