你知道吗?微软、谷歌、Facebook、亚马逊、Uber等科技巨头的研究部门已经成为人工智能(AI)领域开源框架最活跃的贡献者之一。
他们的贡献结合了已在内部解决方案中进行了大规模测试的堆栈,以及来自他们的研究实验室的一些非常先进的思想。虽然世界上最大的技术公司能积极为开源深度学习做出贡献是令人兴奋的,但这让数据科学家很难跟上该领域的新发展。今天,本文要讲一讲上个月Facebook人工智能研究(FAIR)开源的三个新版本。
快速增长的趋势下,这会产生什么影响?
FAIR一直是深度学习领域研究和开源框架的定期贡献者。从PyTorch到ONNX, FAIR团队为实现深度学习应用程序的简化做出了不可思议的贡献。在过去几周里,FAIR增加了三个新的系列开源框架。
Polygames
Polygames是一个开源的研究框架,通过自我游戏的方式来训练深度学习网络。Polygames基于著名的“零学习”概念,即允许代理无需进行任何预先设定的训练,而是通过与环境交互来掌握环境。
乍看之下,Polygames似乎与Alpha Zero或ELF OpenGo等其他游戏学习框架类似,但FAIR堆栈也有自己的贡献。对于初学者来说,Polygames支持更广泛的战略游戏列表,如Hex、Havannah、Minishogi、Connect6、Minesweeper、Mastermind、EinStein wurfelt nicht!、Nogo和Othello。他们为研究人员提供了更广泛的环境来测试深度学习网络。
此外,Polygames还以一个巧妙的架构扩展了传统的零学习概念,该架构结合了深度神经网络和蒙特卡罗树搜索方法。这种架构允许网络泛化到更多的任务和环境。Polygames框架的一个意想不到的好处是代理中神经可塑性的创建。Polygames的模型是渐进式的——框架带有一个用于添加新层和通道或增加内核宽度的脚本——它们能够进行热启动训练,允许神经网络随训练成长。
从编程模型的角度来看,Polygames提供了一个包含游戏的库,以及一个实现游戏的单文件API。开发人员的经验是基于PyTorch的,因此易于上手。
FAIR团队在Polygames上取得了一些里程碑式的成绩,包括在Hex19游戏中击败人类优秀玩家。该游戏由诗人、数学家皮特·海因(Piet Hein)、 约翰·纳什(John Nash)和经济学家于20世纪40年代开发,它挑战了一些传统的人类游戏思维过程。规则很简单。黑色和白色依次填充一个空单元格。如果把北方和南方连接起来,黑人就赢了;如果把西方和东方连接起来,白人就赢了。馅饼规则使游戏更加公平:在第二次移动时,第二个玩家可以决定交换颜色。
这款游戏之所以困难,是因为作为一款连接游戏,它的奖励是基于全局而非局部的标准。
在一系列的实验中,Polygames在Hex游戏中击败了人类中的优秀玩家。结果如下图所示,在图中,人类玩家操纵白色棋子。第一个图像表示Hex的开局。在游戏的第二阶段,人类(白色)似乎赢了——两个坚实的组分别连接到东和西,并互相互靠近连接。然而,Polygames能够扭转这种局面,创造了一个相当复杂的中心位置。随着Polygames使用两个可能的路径之一,它找到了一个成功的组合并展开了这个位置。
Polygames已经在GitHub上开源了
PyTorch3D
PyTorch3D是一个用于在3D环境中训练深度学习网络的框架。尽管有大量的视觉智能系统需要在现实环境中运行,但在3D环境中训练这类智能体的工具和框架仍然受到高度限制。PyTorch3D是一个高度模块化和优化的库,具有独特的功能,旨在让使用PyTorch的3D深度学习更容易。PyTorch3D为快速可微的3D数据提供了一组常用的3D操作符和损失函数,以及一个模块化可微绘制API,使研究人员能够立即将这些函数导入当前比较先进的深度学习系统。
PyTorch3D利用了最近在3D深度学习方面的几个比较新的里程碑,如FAIR的MeshR-CNN,它实现了复杂室内空间图像的完整3D对象重建。该框架还使用Detectron2,这是一个高度优化的2D识别库,可以成功将对象理解推向第三维。PyTorch3D处理旋转和3D转换的功能也是创建C3DPO的核心,C3DPO是一种使用较少注释的训练数据学习图像和3D形状之间关联的新方法。
PyTorch3D的一些关键贡献包括:
- 用于存储和操作三角形网格的数据结构:PyTorch3D将3D表示存储在称为网格 (Meshes) 的数据结构中。这种数据结构使得研究人员很容易快速地将底层的网格数据转换成不同的视图,以匹配最有效表示数据的操作符。
- 三角网格上的高效操作:PyTorch3D包含一系列操作,用于优化几个常用操作符和3D数据的损失函数,支持异构批量输入。这意味着研究人员和工程师可以在PyTorch3D中导入操作符,以便更快地进行实验,而不必在每个新项目开始时重新创建或使用操作符。
- 可微分网格渲染器:PyTorch3D包括一个模块化的可微分渲染器。渲染器由可组合的单元组成,使得用户能轻松扩展渲染器来支持自定义照明或阴影效果。
PyTorch3D请参见GitHub
HiPlot
探索高维数据是深度学习应用的挑战之一。HiPlot是一个交互式可视化工具,它帮助人工智能研究人员发现高维数据中的相关性和模式,并使用平行图和其他图形方式来表示信息。HiPlot使用一种称为平行图的技术,这是一种可视化和过滤高维数据的方便做法。
从功能的角度来看,HiPlot与其他可视化工具相比有以下几个优势:
- 交互性:在HiPlot中,平行图是交互式的,这使得在不同的场景中可视化很容易。例如,你可以专注于沿着一个或多个轴获取范围或值,根据另一个轴设置配色方案,重新排序或删除轴,或提取特定的数据选择。
- 简洁性:使用Hiplot只需要几行代码。通过带有“Hiplot”命令的服务器,就可以通过一个给定的URL访问它,并使用它来可视化、管理和共享实验。
- 基于种群的训练可视化:HiPlot提供了一种简单的方法来可视化XY图中基于种群的训练实验,该图中,不同数据点之间是有边缘的。这种可视化在深度学习实验中非常普遍。
Hiplot请参见GitHub
在深度学习的几个领域,Facebook的FAIR团队还在继续创新,并积极为开源社区做出贡献。PyTorch3D、Polygames和HiPlot是FAIR的比较新的贡献,旨在实现深度学习应用程序的简化。
期待未来会有更多的进展!