VincentLee 2018-03-18
近日,Uber 开源了神经进化算法开发的交互式可视化工具 VINE,该工具可以轻松实现神经网络群体的各种特定指标以及适应度分数的可视化和随时间的变化,用户可对其进行实时评估。此外,VINE 还支持默认功能之外的高级选项和自定义可视化。
VINE 项目地址:https://github.com/uber-common/deep-neuroevolution/tree/master/visual_inspector
对于 Uber 的产业规模来说,机器学习的发展可以大大提高交通运输技术的安全性和可靠性,Uber AI Labs 最近宣布的深度神经进化就是其中一例。深度神经进化的进化算法,如进化策略(ES)和遗传算法(GA),可以帮助训练深度神经网络,以解决棘手的强化学习 ( RL ) 问题。最近,深度神经进化热度不断增加,OpenAI 、Google Brain、DeepMind 和 Sentient 也多有贡献,该领域研究人员对相应工具的需求也越来越大。
特别是,在神经进化和神经网络的优化中,学习过程的潜在动态通常难以观察。为解决上述两个问题,Uber 开发了神经进化视觉检查器 ( Visual Inspector for Neuroevolution,VINE ),这是一个开源交互式数据可视化工具,旨在帮助神经进化研究者更好地理解和探索这一系列算法。该工具非常轻便,使用 Python 语言编写。Uber 希望该技术可以促进神经进化的创新和应用。
VINE 可以实现 ES 和 GA 类方法的可视化。本文给出的例子着重探讨应用 ES 的 Mujoco 拟人运动任务结果的可视化。
在 ES 的常规应用 (如 OpenAI 所推广的应用) 中,一组名为伪子代云(pseudo-offspring cloud)的神经网络针对一个目标进行了几代优化。云中每个单独神经网络的参数通过随机扰动单个亲代神经网络的参数来生成。然后对照目标对每个伪子代神经网络进行评估:在拟人运动任务中,每个伪子代神经网络控制机器人的运动,并根据机器人行走的情况得出一个分数,称为适应度(fitness)。ES 通过聚集基于这些适应度得分的伪子代的参数来构造下一个亲代神经网络 (类似于复杂的多亲代交叉,还可以联想到随机有限差分),然后重复该循环。
图 1 :经过遗传算法 (左) 和进化策略 (右) 训练的模拟机器人的行走情况。
VINE 的应用
为了利用 VINE,在评估期间记录了每个亲代和伪子代的行为特征 ( BC)。这里,BC 可以是智能体与其环境交互时的任何行为指标。例如,在 Mujoco 中,我们仅使用智能体的最终 { x,y } 位置作为 BC,因为它指示了智能体从源位置移动了多远以及最终到了什么位置。
接下来,这个可视化工具根据亲代和伪子代的 BC 将它们映射到 2D 平面上。为此,它会调用图形用户界面 ( GUI ),GUI 的主要组成部分是两类相互关联的图:一个或多个伪子代云图 (在单独的 2D 平面上) 和一个适应度图。如图 2 所示,伪子代云图显示云中亲代和伪子代的每一代的 BC,而适应度图则显示作为各代运行情况关键指标的亲代适应度得分曲线。
图 2:伪子代云图与适应度图实例
用户随后与这些图交互以探索伪子代云的总体趋势及任何亲代或伪子代在进化过程中的个体行为:( 1 ) 用户可以实现任何给定代的亲代、最佳表现者和/或整个伪子代云的可视化,并探索具有不同适应度得分的伪子代在 2D BC 平面上的数量和空间分布;( 2 ) 用户可以实现代之间的对比,并在各代之间穿行,以可视化亲代云和/或伪子代云如何在 2D BC 平面上移动,并探索这些移动与适应度得分曲线有何关联 (如图 3 所示,移动云的完整影像片段可以自动生成);( 3 ) 点击云图上的任意点可以显示相应伪子代的行为信息和适应度得分。
图 3 :可视化代际行为进化。每一代的颜色都会发生变化。在同一代中,每个伪子代的颜色强度基于该代适应度得分的百分位数 (聚合到五个仓中)。
其他应用案例
该工具还支持默认功能之外的高级选项和自定义可视化。例如,BC 不仅可以表示单个最终 { x,y } 点,还可以表示每个智能体的完整轨迹 (例如 1000 个时间步的串联 { x,y } )。在这种情况下,如果 BC 的维数大于 2,则需要使用降维技术 (例如 PCA 或 t - SNE ) 将 BC 数据的维数降到 2D。该工具可以自动执行这些步骤。
如图 4 所示,GUI 能够加载多组 2D BC (可能通过不同的降维技术生成),并显示在实时连接的云图上。该功能为用户探索不同的 BC 选项和降维方法提供了方便的途径。
此外,用户还可以使用自定义功能扩展基本可视化。图 4 展示了一个自定义云图,它可以显示某些类型的特定域高维 BC(本例是智能体的完整轨迹) 以及相应的简化 2D BC。图 5 是自定义云图的另一个应用实例,它允许用户回放智能体与环境交互时产生的确定性行为和随机行为。
图 4 :多个 2D BC、一个高维 BC 及一个适应度图的可视化。
图 5 : VINE 允许用户查看任何智能体确定性行为和随机行为。
该工具还可用于运动任务以外的领域。图 6 的云图将 ES 训练智能体玩寒霜引擎(Frostbite)游戏(Atari 2600 游戏之一)进行了可视化,其中我们使用最终仿真器 RAM 状态 (长度为 128 的整数值向量,用于捕获游戏中的所有状态变量) 作为 BC,并应用 PCA 将 BC 映射到 2D 平面上。
图 6 :将智能体学习寒霜引擎游戏玩法可视化。
从图中我们可以观察到,随着进化的进行,伪子代云向左移动并在那里聚集。这个工具让我们看到每个智能体相应的玩游戏视频,由此可以推断出每个集群对应的语义意义上的不同结束状态。
VINE 还可以实现与其他神经进化算法的完美配合,例如 GA,该算法可以在若干代内保持子代的数量。事实上,该工具的运行独立于任何特定的神经进化算法。用户只需稍微修改他们的神经进化代码,就可以保留他们为解决特定问题选择的 BC。在发布的代码中,我们将对 ES 和 GA 实现的修改作为示例。
下一步工作
因为进化方法对一组点进行操作,所以它们为新类型的可视化提供了可能。Uber 希望与机器学习团体分享有用的可视化工具,以便所有人都能从中受益。随着神经进化扩展到具有数百万或更多连接的神经网络,通过 VINE 等工具加深理解对于进一步的研究越来越重要,也越来越有价值。