优步最近开通了一个神经进化算法开发的交互式可视化工具VINE,可以轻松实现神经网络群体各种具体指标和适应度得分的可视化和时变变化,用户可以实时评价。此外,除了默认功能之外,VINE还支持高级选项和自定义可视化。
神经网络算法实例说明对于Uber的工业规模来说,机器学习的发展可以大大提高交通技术的安全性和可靠性,比如Uber AI Labs最近公布的深度神经进化。深度神经进化的进化算法,如进化策略(ES)和遗传算法(GA),可以帮助训练深度神经网络,解决强化学习(RL)这一棘手问题。最近深度神经进化的普及度越来越高,OpenAI、Google Brain、DeepMind、individual的贡献,以及该领域的研究者对相应工具的要求也越来越高。
特别是在神经进化和神经网络优化中,很难观察到学习过程的潜在动态。为了解决这两个问题,Uber开发了开源的交互式数据可视化工具Visual Inspector for Neuro evolution(VINE),旨在帮助神经进化研究者更好地理解和探索这一系列算法。这个工具很便携,用Python语言写的。优步希望这项技术能够促进神经进化的创新和应用。
VINE可以实现专家系统和遗传算法的可视化。本文给出的例子重点介绍了使用专家系统实现Mujoco拟人运动任务结果的可视化。
在ES的常规应用中(比如OpenAI普及的应用),一组名为伪子代云的神经网络已经针对一个目标优化了好几代。云中每个单个神经网络的参数是通过随机干扰单个父神经网络的参数而生成的。然后针对目标对每个伪后代神经网络进行评估:在拟人运动任务中,每个伪后代神经网络控制机器人的运动,并根据机器人的行走情况得到一个分数,称为适应度。专家系统通过基于这些适应度得分聚集伪后代的参数来构建下一个父神经网络(类似于复杂的多父交叉,但也与随机有限差分相关联),然后重复该循环。图1 :遗传算法(左)和进化策略(右)训练的模拟机器人行走情况。
VINE的应用
为了利用VINE,在评估过程中记录了每个父母和伪后代的行为特征(BC)。这里,BC可以是代理与其环境交互时的任何行为索引。例如,在Mujoco中,我们只使用代理的最终{x,y}位置作为BC,因为它指示代理离源位置有多远以及它最终到达了哪里。
接下来,这个可视化工具根据父母和伪孩子的公元前把他们映射到2D平面。为此,它调用图形用户界面(GUI),GUI的主要组件是两种相互关联的图形:一个或多个伪后代云图(在单独的2D平面上)和一个适应度图。如图2所示,伪后代云图显示的是云内每一代亲本和伪后代的BC,而适应度图显示的是亲本适应度的得分曲线,是每一代操作的关键指标。
用户然后与这些图形交互,探索伪后代云的一般趋势和进化过程中任意父代或伪后代的个体行为:(1)用户可以实现任意给定世代的父代、最佳表现者和/或整个伪后代云的可视化,探索2D BC平面上不同适应度得分的伪后代的数量和空间分布;(2)用户可以进行代与代之间的比较和代与代之间的遍历,以可视化父云和/pseudo-offspring云在2D BC平面上的移动方式,并探究这些移动方式与适应度得分曲线的关系(如图3所示,可以自动生成移动云的完整图像片段);(3)点击云图上任意一点,显示相应伪后代的行为信息和适应度得分。
代际行为演变可视化。每一代人的颜色都会改变。在同一代中,每个伪后代的颜色强度基于该代的适合度分数的百分位数(合计到五个箱中)。
其他应用案例
除默认功能外,该工具还支持高级选项和自定义可视化。例如,BC不仅可以表示单个最终{x,y}点,还可以表示每个代理的完整轨迹(例如,1000个时间步长{x,y}的串联)。在这种情况下,如果BC的维数大于2,则需要使用降维技术(如PCA或t-SNE)将BC数据降维到2D。该工具可以自动执行这些步骤。
如图4所示,图形用户界面可以加载多组2dbcs(可以通过不同的降维技术生成),并在实时连接的云图上显示它们。该功能为用户探索不同的BC选项和降维方法提供了方便的途径。此外,用户可以通过使用自定义功能来扩展基本的可视化。图4示出了定制的云图,其可以显示某些类型的域特定的高维BC(在这种情况下,代理的完整轨迹)和相应的简化的2D BC。图5是自定义云图,的另一个应用示例,它允许用户在代理与环境交互时回放确定性行为和随机行为。
多个2D BC、一个高维BC和一个适应度图的可视化。
VINE允许用户查看任何代理的确定性行为和随机行为。
该工具也可用于除运动任务以外的领域。图6中的云图可视化了玩冻伤游戏(雅达利2600游戏之一)的ES训练代理,其中我们使用最终的模拟器RAM状态(长度为128的整数值向量,用于捕获游戏中的所有状态变量)作为BC,并应用PCA将BC映射到2D平面。
可视化代理如何学习frost engine的游戏玩法。
从图中可以观察到,随着进化,伪后代云向左移动,聚集在那里。这个工具允许我们看到每个代理对应的游戏播放视频,从中我们可以推断出每个集群的不同语义端状态。
VINE还可以和其他神经进化算法完美配合,比如GA,可以保持几代的后代数量。其实这个工具的运行是独立于任何特定的神经进化算法的。用户只需要稍微修改一下自己的神经进化代码,就可以保留自己选择解决具体问题的BC。在发布的代码中,我们将以ES和GA实现的修改为例。
下一步
因为进化方法是在一组点上运行的,所以它们为新类型的可视化提供了可能性。优步希望与机器学习小组分享有用的可视化工具,以便每个人都能从中受益。随着神经进化延伸到具有数百万或更多连接的神经网络,通过VINE等工具加深理解对进一步研究越来越重要和有价值。如果您有互联网问题,也可以咨询我,谢谢!如果你也想一起学习人工智能,欢迎留言交流。
我的其他文章: