Uber开源神经演化可视化工具VIN

算力的提升可能会为旧的算法注入活力。近两年来,神经演化(Neuroevolution)的方法逐渐再次受到,包括OpenAI、DeepMind、GoogleBrain、Sentient、Uber等全球几大研究机构近期在这方面都有一些研究,而其中Uber似乎投入了更多的精力。

图1.GoogleTrend中「Neuroevolution」的变化

AI研习社前段时间曾对Uber数日连发的5篇关于神经演化的文章进行了深度的解读。这些文章介绍了他们在遗传算法(geneticalgorithm)、突变方法(mutation)和演化策略(evolutionstrategies)等神经演化思路方面的研究成果,并通过使用神经演化的方法在深度强化学习的训练中胜过SGD和策略梯度。这项工作宣告了神经演化方法进入了一个新的时代。

基于Uber的这些工作,目前有许多研究人员已经开始将目光从SGD或策略梯度方法转移到神经演化。这在某种程度上也促进了对相关工具的需求,特别是在神经演化过程中如何动态、可视地观察演化过程。为了解决这些问题,Uber开发了一款用于神经演化的交互式数据可视化工具——VisualInspectorforNeuroevolution(VINE),并于昨日开源。

图2.VINE可视化

为了介绍VINE如何进行可视化,这里我们需要简要介绍一下神经演化的基本思路。

神经演化(Neuroevolution)的概念最早于上世纪80年代被提出,其基本思路就是借鉴生物的演化过程:突变-选择-繁衍-突变-……。在机器学习领域,传统的方法是研究人员根据自己的经验去设计一个神经网络,然后通过实验验证它的效率;而神经演化的思路是,先初始化一群(例如个)略有差异的网络,通过训练,筛选(也可以合成)出某些符合标准的个体,然后再复制出(例如)个副本,对这些副本网络添加一些随机扰动(类似生物进化中的突变),随后再训练和再筛选,如此往复,直至筛选出符合期望的网络为止。

从上面的说明也可以看出,无论是初始化,还是差异的选择或随机扰动的定义,或者筛选过程和标准的制定,都可以根据实验者的需求而定,因此演化的方法多种多样,例如前面提到有遗传算法(GA)、突变方法(M)和演化策略(ES)等。我们以ES为例,并选用Uber常用的Mujoco人形步态任务具体来说明VINE如何将神经演化过程可视化。

图.用遗传算法(左)和演化策略(右)训练模拟机器人走路

在传统的(如OpenAI所推广的)ES应用中,通常采用一组被称为伪后代云(pseudo-offspringcloud,POC)的神经网络,针对这一代的特定目标进行优化。具体来说就是,首先通过随机扰动单个「父」神经网络的参数来生成POC中中每个单独的神经网络的参数,然后根据目标对每个伪后代神经网络进行训练和评估。在人形步态任务中,每个伪后代神经网络控制着一个Mujoco机器人的运动,基于机器人走路的好坏给每个网络的适应度进行打分(称之为fitness)。ES通过基于这些适应性评分来聚合伪后代的参数(这似乎有点儿像多(双)亲交叉融合一样),来构建下一个父亲。然后循环往复。

VINE的基本使用

若想利用VINE,就必须将演化过程中每个父亲以及所有的伪后代的行为特征记录下来。这里一个行为特征可以是一个agent与环境进行交互时的任何行为指标。例如在Mujoco中,我们可以简单地使用每个agent的终点位置{x,y}作为其行为特征,终点位置代表了这个agent从原点起所能移动的距离。

有了行为特征的信息,于是就可以借助可视化工具将父亲和伪后代映射到2维平面上。为此,VINE调用了图形用户界面(GUI),其主要组件由两类相互关联的图组成:

一个或多个伪后代云图(在一个单独的2维平面上);

一个fitness图

如下图所示。伪后代云图显示了每代父亲和伪后代的行为特征,而fitness图则显示了每一代的父亲其fitness得分曲线如何变化。

图4.伪后代云图和fitness图示例

除了将伪后代云以及父亲的fitness情况可视化外,在VINE中用户还可以与这些图进行交互,以探索伪后代云的整体趋势以及任何一起父亲或伪后代在进化过程中的个体行为:

用户可以选择可视化父亲、最佳表现者、任何一代的伪后代云,并探索不同fitness得分的伪后代云在二维行为特征平面上的数量以及空间分布;

用户还可以在不同代之间进行比较,通过可视化的方法来观察父亲或者伪后代云在2维行为特征平面上如何移动,以及它们与fitness得分曲线之间的关系。如图5所示,甚至可以自动生成移动云的完整影像剪辑。

点击云图上的任何一点,可以显示相应伪后代的行为特征和fitness得分。

图5.可视化的世代行为演变。每一代的颜色都会改变;在一代人中,每个伪后代的颜色强度基于该代中适应度得分的百分位数。

用户自定义

当然VINE工具还支持一些高级选项。举例来说,前面我们说到选择终点位置{x,y}作为行为特征,如果延伸一点的话,例如我们将每个agent从起点到终点分成0个时间步长,并记录下每个时间节点的位置,那么我们就可以得出一个行为特征向量,这个向量记录了agent的轨迹。

当然在这种情况下,行为特征的维度已经不再是2维,这时候就需要降维技术将行为特征数据的维度降低到2维,例如PCA技术或者t-SNE技术。在VINE中,这个过程将自动完成。

当然GUI能够加载多组2维行为特征(通过不同的缩减技术生成),并将它们显示在同时且连接起来的云图中,如图6所示。这个功能为用户探索不同的行为特征和维度缩减方法提供了一种便捷的方式。

图6.可视化多个2DBC和一个高维BC以及一个健身情节。

此外,用户还可以通过定制功能来扩展基本的可视化。在图6中就暂时了一个自定义的云图,在这个云图中可以显示某些类型特定领域的高维行为特征(例如agent的完整轨迹)以及相应的缩减2维行为特征。图7是另外一个自定义云图的例子,这个图中允许用户回放agent在与环境进行交互式产生的确定性/随机性行为。

图7.VINE允许用户查看任何agent产生的确定性/随机性行为的视频。

当然啦,如前面所说,VINE并不仅仅只使用于Mujoco任务或者ES算法当中。

图8展示的是将VINE应用于Atar游戏中的一个经典游戏Frostbite,其中的行为特征为终态模拟器RAM状态(游戏中能够捕获所有状态变量的长度为的整数值向量),并应用PCA技术将行为特征映射到2维平面上。

图8.可视化agent学习Frostbite

从这个图中,我们可以观察到随着演化的推进,伪后代云在逐渐向左移动并出现聚集。通过查看这些agent玩这个游戏的视频,我们可以推断其实每个集群都对应一个语义上有意义的不同的结束状态。

此外,VINE还可以与其他神经演化算法(例如前面提到的遗传算法等)进行无缝的协作。事实上,这个工具独立于任何特定的神经演化算法,用户所需要做的只是稍微修改一下他的神经演化代码保存它想要了解的行为特征。

开源thub.







































北京治疗白癜风哪间医院最好
北京中科医院爆光



转载请注明:http://www.92nongye.com/tlfc/tlfc/204620339.html