1.摘要
质量多样性(QD)算法作为进化算法的一个子集,其目的是生成一组高质量和多样化的解决方案。尽管QD在强化学习中表现出竞争性能,但其低样本效率仍然是现实世界应用的一个重要障碍。最近的研究主要集中在通过改进QD的选择和变异操作来增强样本效率。与此不同的是,在本文中,提出了一个新颖的合作协同进化QD(CCQD)框架,该框架将策略网络分解为两种类型的层,分别对应表示和决策,从而简化了问题。由此产生的两个子群体(表示和决策)进行协同进化。在QDax套件中的几个常见任务上进行的实验表明,CCQD的一个实例实现了约200%的样本效率提升。
2. QD(Quality-Diversity)算法
2.1概述
优化在工程中非常有用,可以用来设计机械零件、控制机器人等。但实际问题通常很复杂,不容易用简单的方法解决。通常需要多次调整参数和成本函数,然后反复运行优化算法,直到找到一个满意的解决方案。而且,即使找到了解决方案,它通常也不是最终的最佳解决方案。在实际应用中,优化主要用于设计初期,用来探索不同的选择和权衡。因此,需要一些算法,它们更像是探索工具,而不仅仅是寻找最优解的工具。质量-多样性(QD)优化算法就是这样一种算法:它们不是寻找一个最优解,而是提供了很多高性能的解决方案,这些解决方案在某些用户关心的特征上有所不同。用户可以根据自己的需求选择最合适的解决方案,并用它们来更好地了解解决方案的特点如何影响性能。这有助于在复杂问题中做出明智的决策。
行为描述符(BD)通常描述解决方案如何解决问题,而适应度值fθ量化它解决问题的程度。例如:BD可以是3D设计的曲率、体积或机器人的轨迹,而适应度值可以是空气动力学阻力、能量消耗或到目标状态的距离。
这是一个二维离散行为描述符的例子:
用来定义特征空间,QD优化的目标是为每个点
找到适应度值最大的参数θ(parameter values)
和多模态算法和多目标优化算法的区别:
多任务优化:在多任务优化中,目标是同时优化多个可能具有不同目标的任务。这是一种单一算法同时尝试解决多个不同但可能相关的优化问题的方法。旨在找到最佳平衡多个冲突的目标的解决方案。
qd和多任务优化的区别是
1.多目标优化的B是离散的,这里的B可以是连续的,这就意味着有无数个问题,比如B可能代表机器人的速度,这个速度可以是任意值,而不是仅仅几个固定的速度档位。
2.在调用适应度函数之前,我们不知道BD,这就解释了为什么QD问题可以被看作是受每个BD约束的一组优化。
多模态优化:这种方法专注于在具有多个局部最优解的问题中识别多个最优解。多模态优化算法旨在避免过早收敛到单一解决方案,而是找到代表问题中不同局部最优解的多个解决方案。而qd算法是想在每个特征空间都有好的解决方案。
上图展示了全局优化,多模态优化和qd算法得到的解的分布。比起多模态优化,qd发现更多的解决方案,每个解决方案都是在某个感兴趣的特征空间中定义的局部邻域中性能最高的。
2.2框架
这是比较经典的MAP-Elites算法
主要过程是从存档中迭代地选择父解(即第6行),通过变异运算符生成后代解(即第7行),评估后代解(即第9行),并使用这些后代解更新存档(即幸存者选择,第10行)。
有以下几个影响比较大的变量:
(1)容器的类型:即如何收集解并将其排序为一个集合。主要有网格结构,网格的每个单元对应于一种类型的解决方案,还有基于距离的档案等等。
(2)选择算子:主要有亲本选择,变异选择,幸存者选择。前两种在遗传算法里面选即可,其中在幸存者选择算法里面 ,最初的MAP-Elites实现从容器中已经存在的解决方案中随机抽取解决方案,实现很简单但是选择压力随着集合中解决方案数量的增加而降低(选择解决方案的机会与集合中解决方案的数量成反比)。后来有方法对随机抽样采用基于分数的加权,可以基于特定分数(如新颖性、局部竞争度或好奇心分数等)为更“有趣”的个体添加更多权重,并将选择压力偏向于期望行为或更“有趣”的个体。QD优化的目标是设计能够改进集合的分数,也就是说,要么发现新的行为,要么优化已经发现的行为。
(3)评价的方式:
传统上,进化算法只考虑适应度值(质量)来做出决策。这些方法中的大多数都很难找到不同的解决方案,甚至可能无法找到全局最优解。相反,QD算法考虑了额外的数量,试图更好地探索行为空间(多样性)。
1.新奇度评分novelty score:给那些与其他解决方案更不同的解决方案赋予更高的值,增加解的多样性,常见的公式是行为空间中k个最近邻居的平均距离。
2.好奇心分数:奖励那些产生足够新颖或比容器中已有个体更好的后代的个体。所有个体的好奇心分数都为零,然后每次它们的一个后代被添加到容器中时,它们的好奇心分数就会增加,而每次它们的后代没有进入容器时,好奇心分数就会减少。
3.go-explore:引入了试图通过促进对新发现个体的选择来扩大搜索边界的概念。
3. CCQD(QUALITY-DIVERSITY BY COOPERATIVE COEVOLUTION)算法
QD先前的弊端:在QD-RL任务中,智能体需要学习一种策略,该策略可以在各种情境下做出正确的决策(RL代理)。这个策略可以由一个神经网络或模型表示,通常包含数万个参数。所以QD的样本效率低的一个原因是过于大的优化空间:优化复杂的单个解的同时保持数千个这样的解。
解决方案:为了缩小优化空间,作者将 CC(COOPERATIVE COEVOLUTION)合作协同进化应用到了QD框架,CC采用分而治之的方法将大规模问题分解为若干小规模子组件,并使这些子组件协同发展。在共同进化过程中,每个子成分对应一个子种群。将策略网络分解并共享一部分,那么就可以共享一些共同有用的知识,从而大大简化QD的优化问题。
这个框架就是把actor分解成了两个部分:表示部分和决策部分,两个部分各自作为一个种群来进化。
最近的研究表明,神经网络的不同层具有不同的功能。前几层用于状态表示,后几层用于决策。决策部分在QD环境下需要有多种行为,而表示部分则包含了大量的共同和可共享的知识。
如何分解策略网络是一个重要的问题。如果共享太多的部分(即太多的解决方案共享太多的层)会阻碍多样性,应该如何平衡问题的简化和多样性?
在实验中作者设置的表示部分比决策部分要小很多(如20vs1024),主要有两个好处,第一是在进一步简化问题的同时保持一定程度的多样性。第二是表示种群自然可以包含更多的critic(而不是许多研究中使用的单一critic),从而减少了对单一评价方法依赖所可能产生的偏差。(在CCQD里面critic的数量和表示种群人口数量一致,减少了算法对特定类型解决方案的偏好从而限制算法探索解决方案空间的能力的弊端)。此外使用策略扩展值函数逼近器(PeVFA)来更好逼近值函数。
几个变量的设置:
(1)容器:CCQD的两个子种群具有两种不同类型的档案:用于表示部分的基于列表的档案和用于决策部分的基于网格的档案。可能因为表示部分种群较小,用列表就足以。
(2)亲本选择:采用QD中常用的均匀随机选择策略,从决策档案中选择一组N个合适的部分(解)。然后,每个被选择的决策部分从表示档案中随机选择一个表示部分,得到一个完整的策略。这个过程确保了表示和决策部分以不同的方式组合在一起。
(3)变异算子:用了 PGA-ME中的变异算子,即一半的父解用传统的进化算子IsoLineDD更新,另一半用TD3更新。TD3的策略梯度算子专注于优化质量,而IsoLineDD算子则用于提高多样性。CCQD中TD3的使用和PGA-ME不同:1.CCQD中的每个表示部分都有自己的critic,而PGA-ME对总体中的所有政策只使用单个critic,导致值函数逼近不精确,最终阻碍了样本效率 2.使用PeVFA作为critic来逼近值函数。
IsoLineDD算子:,x1和x2为亲本的解。I是单位矩阵。
策略梯度算子:在每一代开始时,用TD损失训练actor,同时用策略梯度训练critic。
(4)幸存者选择:
决策档案:使用了普通QD的策略,根据后代策略的行为,将每个后代解(决策部分)放置在行为空间中的相应单元格中。如果单元格为空,则直接保留该解;否则,保留该单元格中的解和当前解之间质量较高的那个。
表示档案:即通过更新后的表示部分直接替换在父选择中已经被选择的表示部分。如果当前决策存档中没有解决方案与特定表示部分相关联,将该表示部分替换为与决策存档中大多数解决方案相关联的表示部分。
4.实验
在QDax suite上进行了实验,包括单向任务(即Uni)、全向任务(即Omni)和迷宫型环境。
Uni任务旨在生成一组策略,这些策略可以尽可能快地前进,并且在每只脚使用频率上具有多样性。在这些任务中,奖励主要由机器人的前进速度决定,行为描述符定义为每只脚接触地面的时间比例。
Omni任务旨在生成一组策略,这些策略可以朝不同方向移动,同时尽量少地消耗能量。在这些任务中,奖励定义为能量消耗的相反数,行为描述符定义为机器人的最终位置。
迷宫任务迷宫任务旨在训练点或机器人到达迷宫中的特定目标位置,其中奖励定义为当前位置与目标位置之间的相反距离,行为描述符定义为代理的最终位置。
评价标准:1.QD-Score:存档中所有解决方案的适应度值的总和。2.覆盖率:存档中解决方案的总数。它可以衡量QD算法的探索能力。3.Max Fitness:存档中解决方案的最大适应度值。它可以衡量QD算法的开发能力。4.QD-Score AUC : QD-Score曲线下的面积。它衡量了QD算法的优化效率。
这些是在各个环境下的QD-Score AUC:
比其他QD算法表现更好。