首发于强化学习
遗传进化强化学习算法

遗传进化强化学习算法

原文:EVOLVING REINFORCEMENT LEARNING ALGORITHMS

作者: John D. Co-Reyes, Yingjie Miao

代码: github.com/jcoreyes/evo

参考图: sites.google.com/view/e


一、简介
二、相关工作
三、学习强化学习算法
---- 3.1 问题设置
---- 3.2 搜索程序
---- 3.3 演化搜索法
四、学习RL算法的结果和分析
---- 4.1 训练设置
---- 4.2 学习衔接
---- 4.3 学习了RL算法:DQNClipped和DQNReg
---- 4.4 对所学算法的分析
五、结论

一、简介

我们提出了一种元学习强化学习算法的方法,通过搜索计算图的空间,计算出基于价值的model-free RL agent的损失函数来进行优化。所学到的算法是不分领域的,并且可以泛化到训练期间没有看到的新环境。我们的方法既可以从头开始学习,也可以从已知的现有算法(如DQN)中自举,从而实现可解释的修改,提高性能。在简单的经典控制和网格世界任务上从头开始学习,我们的方法重新发现了时序差分(TD)算法。从DQN开始,我们强调了两种学习算法,它们在其他经典控制任务、网格世界类型的任务和Atari游戏中获得了良好的泛化性能。对所学算法行为的分析表明,它与最近提出的解决基于价值的方法中高估问题的RL算法相似。

设计能够有效解决各种问题的新的深度强化学习算法,通常需要大量的人工努力。学会设计强化学习算法,甚至是算法的小型子组件,将有助于减轻这种负担,并可能产生比研究人员手动设计更好的算法。我们的工作可能会从手动设计这些算法转移到设计自动开发这些算法的语言和优化方法上。

强化学习算法可以被看作是一个程序,它将agent的经验映射到一个在训练过程中获得高累积奖励的策略。我们将训练agent的问题表述为元学习的问题:一个外循环在计算图或程序的空间上进行搜索,计算agent的目标函数,使其最小化,一个内循环使用学到的损失函数进行更新。外循环的目标是使内循环算法的训练回报最大化。

我们学到的损失函数应该在许多不同的环境中通用,而不是专门针对某一特定领域。因此,我们设计了一种基于遗传编程的搜索语言(Koza, 1993),可以表达一般的符号损失函数,可以应用于任何环境。数据类型和MDP中变量的通用接口使学习的程序与领域无关。这种语言还支持使用神经网络模块作为程序的子组件,这样就可以实现更复杂的神经网络结构。有效地搜索有用的程序空间通常是困难的。对于外循环优化,我们使用正则化进化(Real等人,2019),这是采用锦标赛选择(Goldberg & Deb,1991)的经典进化算法的最新变体。这种方法可以随着计算节点数量的增加而扩展,并且已经被证明可以用于设计监督学习的算法(Real等人,2020)。我们将这种方法用于自动设计强化学习的算法。

虽然从头开始学习一般不会有什么偏差,但将人类现有的知识编码到学习过程中可以加快优化速度,也可以使学到的算法更容易解释。因为我们的搜索语言将算法表达为广义的计算图,所以我们可以将已知的RL算法嵌入到起始程序群的图中。我们比较了从头开始和从现有算法中自举,发现虽然从头开始可以学习现有的算法,但从现有的知识开始会导致新的RL算法,这些算法可以超越初始程序。

图1: 方法概述。我们使用正则化进化来进化RL算法的群体。一个突变器改变了表现最好的算法以产生一个新的算法。算法的性能在一组训练环境中被评估,并对群体进行更新。我们的方法可以通过从已知的RL算法开始纳入现有的知识,而不是纯粹地从头开始。

我们学习了两种新的RL算法,它们在训练和测试环境中的采样效率和最终性能都优于现有算法。所学到的算法是不分领域的,并且可以泛化到新的环境。重要的是,训练环境由一套离散动作的经典控制任务和网格世界风格的环境组成,而测试环境包括Atari游戏,与训练期间所见的任何环境都不同。

本文的贡献是一种搜索RL算法空间的方法,我们通过开发一种描述广泛的基于价值的model-free强化学习方法的形式化语言将其实例化。我们的搜索语言使我们能够将现有的算法嵌入到起始图中,从而导致更快的学习和可解释的算法。我们强调了两个学习到的算法,它们可以泛化到全新的环境。我们对元学习程序的分析表明,我们的方法自动发现了与最近提出的RL创新共享结构的算法,并且根据经验达到了比Deep Q-learning方法更好的性能。

二、相关工作

学会学习 Learning to learn 是监督学习中的一个既定理念,包括用遗传编程进行元学习(Schmidhuber, 1987; Holland, 1975; Koza, 1993),学习神经网络更新规则(Bengio等人,1991),以及自我修改RNN(Schmidhuber, 1993)。遗传编程被用来寻找新的损失函数(Bengio等人,1994;Trujillo & Olague,2006)。最近,AutoML(Hutter等人,2018)旨在实现机器学习训练过程的自动化。自动神经网络架构搜索(Stanley & Miikkulainen,2002;Real等人,2017;2019;Liu等人,2017;Zoph & Le,2016;Elsken等人,2018;Pham等人,2018)在图像分类方面有了很大改进。AutoML-Zero(Real等人,2020)没有学习架构,而是使用基本的数学运算从头开始学习算法。我们的工作有类似的想法,但被应用于RL设置,并假设了额外的基元,如神经网络模块。与AutoML-Zero不同的是,我们学习计算图的目的是为了实现RL算法设计的自动化。我们学习的RL算法可以泛化到新的问题上,这在训练中是看不到的。

自动RL。虽然RL被用于AutoML(Zoph & Le, 2016; Zoph et al., 2018; Cai et al., 2018; Bello et al., 2017),但RL本身的自动化在某种程度上是有限的。与监督学习相比,RL需要不同的设计选择,包括奖励和策略更新规则的制定。所有这些都会影响学习和性能,并且通常是通过试验和错误来选择。AutoRL通过将监督学习中的AutoML框架应用于RL中的MDP设置来解决这一问题。例如,进化算法被用来突变值或actor网络权重(Whiteson & Stone,2006;Khadka & Tumer,2018),学习任务奖励(Faust等人,2019),调整超参数(Tang & Choromanski,2020;Franke等人,2020),或搜索神经网络架构(Song等人,2020;Franke等人,2020)。本文重点讨论基于价值的RL设置中的任务诊断性RL更新规则,这些规则既可解释又可泛化。

RL中的元学习。最近的工作主要集中在少数的任务适应上。Finn等人(2017);Finn & Levine(2018)元学习的初始参数可以快速适应新的任务,而RL2(Duan等人,2016)和同期工作(Wang等人,2017),将RL本身制定为一个学习问题,用RNN学习。这些工作中的元学习成分是针对特定领域或环境进行调整的,以NN权重的形式,不能用于具有潜在不同大小输入的全新领域。Neural Programmer-Interpreters(Reed & De Freitas,2015;Pierrot等人,2019)通过为不同环境学习具有特定领域编码器的分层神经程序来克服环境泛化的挑战。在这里,计算图有一个灵活的架构,并能在不同的环境中泛化。

学习RL算法或其组成部分,如奖励奖金或价值更新函数,以前已经用元梯度(Kirsch等人,2020;Chebotar等人,2019;Oh等人,2020)、进化策略(Houthooft等人,2018)和RNN(Duan等人,2016)进行过研究。虽然我们的工作也学习RL算法,但更新规则被表示为计算图,其中包括神经网络模块和符号运算符。一个关键的好处是,产生的图可以被分析解释,并且可以选择从已知的现有算法中初始化。先前的工作侧重于学习RL损失,在单一环境中泛化到不同的目标和初始条件(Houthooft等人,2018),或者学习一个领域不变的策略更新规则,可以泛化到新环境(Kirsch等人,2020)。另一种方法使用类似的带有神经网络模块的DAG语言搜索好奇心程序空间(Alet等人,2020a),并在单一环境中进行元训练。相比之下,我们的方法被应用于学习一般的RL更新规则,并在不同的环境中进行元训练。

三、学习强化学习算法

在本节中,我们首先描述问题的设置。一个内循环方法Eval(L, E)在一个给定的环境E上评估一个学习到的RL算法L。考虑到对这个程序的访问,外循环优化的目标是在一组训练环境中学习一个具有高训练回报的RL算法。然后,我们描述了能够学习一般损失函数的搜索语言和能够在这个空间上有效搜索的外循环方法。

3.1 问题设置

我们假设用策略πθ(at|st)作为参数的agent在每个时间步向环境E输出行动at,并获得奖励rt和下一个状态st+1。由于我们关注的是基于离散动作值的RL方法,θ将是一个Q值函数的参数,而策略是使用ε-greedy策略从Q值函数中得到的。agent将这个转移流(st, st+1, at, rt)保存在一个重放缓冲器中,并通过梯度下降使损失函数L(st, at, rt, st+1, θ, γ)在这些转移中最小化来持续更新策略。训练将在固定数量的M个训练episode中进行,在每个episode中,agent获得episode回报 R_{m}=\sum_{t=0}^{T} r_{t} 。一个算法在特定环境下的性能由归一化的平均训练回报加和,\frac{1}{M} \sum_{m=1}^{M} \frac{R_{i}-R_{m i n}}{R_{m a x}-R_{m i n}} ,其中Rmin和Rmax是最小和最大的环境的回报。我们假设这些都是提前知道的。这个内循环评估程序Eval(L, E)在算法1中概述。为了给算法打分,我们使用归一化的平均训练回报,而不是最终的行为策略回报,因为前者的指标也会考虑到采样效率。

元学习器的目标是找到最佳损失函数L(st, at, rt, st+1, θ, γ)来优化π,在训练环境集合上具有最大的归一化平均训练回报。元学习器的全部θ目标是:

L被表示为一个计算图,我们在下一节描述。

3.2 搜索程序

我们对算法L的搜索程序应该有足够的表现力,以表示现有的算法,同时能够学习新的算法,这些算法可以在广泛的环境中获得良好的泛化性能。与Alet等人(2020a)类似,我们将RL算法描述为具有特定领域语言的一般程序,但我们的目标是更新策略,而不是奖励奖金的探索。算法将把过渡(st,at,st+1,rt)、策略参数θ和折扣系数γ映射为标量损失,用梯度下降法进行优化。我们将L表示为一个计算图或有向无环图(DAG),其节点具有类型化的输入和输出。以这种形式表达的DQN的可视化见图2。节点有几种类型。

图2:RL算法的可视化,DQN,作为一个计算图,计算损失L = (Q(st, at) - (rt + γ ∗ maxa Q targ(s t+1, a))2。 输入节点为蓝色,参数节点为灰色,运算节点为正方形,输出为绿色。

输入节点表示程序的输入,包括来自转移的元素(st, at, st+1, rt)和常数,如折扣系数γ。

参数节点是神经网络的权重,它可以在各种数据类型之间进行映射。例如,Q值网络的权重将把具有状态数据类型的输入节点映射为每个动作的实数列表。

运算结点计算来自父结点的输入的输出。这包括应用参数节点,以及来自线性代数、概率和统计的基本数学运算符。附录A中提供了运算节点的完整列表。默认情况下,我们将图中的最后一个节点设置为计算程序的输出,也就是待优化的标量损失函数。重要的是,节点的输入和输出在(状态、动作、向量、浮点、列表、概率)中被类型化。这种类型化允许程序应用于任何领域。它还将程序的空间限制为具有有效类型的程序,从而减少了搜索空间。

3.3 演化搜索法

在一系列复杂的环境中评估数以千计的程序是非常昂贵的,尤其是在连续进行时。我们将遗传编程(Koza,1993)方法改编为搜索方法,并使用正则化进化(Real等人,2019),这是采用锦标赛选择(Goldberg & Deb,1991)的经典进化算法的变体。正则化进化已被证明适用于学习监督学习算法(Real等人,2020),并且可以在不同的计算节点上进行并行化。锦标赛选择保持一个P算法的种群,并通过循环改善该种群。每个周期随机挑选一个T<P算法的锦标赛,并选择锦标赛中最好的算法作为父算法。父算法被突变为子算法,被添加到种群中,而种群中最古老的算法被移除。我们使用单一类型的变异,首先选择图中的哪个节点进行变异,然后用一个随机的运算节点代替它,其输入从所有可能的输入中均匀抽取。

存在着大量的组合图配置。此外,评估一个单一的图,也就是训练完整的内循环RL算法,与有监督的学习环境相比会占用大量的时间。加快搜索速度和避免无谓的计算是使问题更容易解决的需要。我们用几种技术来扩展正则化演化,详见下文,以使优化更加有效。算法2中概述了完整的训练过程。

特征等价性检查(Real等人,2020;Alet等人,2020b)。在评估一个程序之前,我们检查它是否与之前评估的任何程序在功能上等同。这个检查是通过对随机输入的10个值的程序的拼接输出进行hashing来完成的。如果一个变异的程序在功能上等同于一个较早的程序,我们仍然将其加入到群体中,但使用较早程序的保存分数。由于图中的一些节点并不总是对输出有贡献,变异程序的部分内容最终可能对特征不同的程序有贡献。

早期障碍(So等人,2019)。我们希望表现不佳的程序能够提前终止,这样我们就可以避免不需要的计算。我们使用CartPole环境作为早期障碍环境E,通过训练一个程序的固定数量的episode。如果一个算法表现不佳,那么hepisodes将在很短的步骤内终止(因为极点迅速下降),这很快就会耗尽训练集的数量。我们使用Eval(L, E h)<α作为性能不佳的阈值,α是根据经验选择的。

程序检查。我们进行基本检查以排除和跳过训练无效的程序。损失函数需要是一个标量值,所以我们检查程序的输出类型是否是一个浮点(type(L) = R)。此外,我们通过检查图中的输出和策略参数节点之间是否存在路径,来检查每个程序相对于策略参数是否可分。

从零开始学习和自举。我们的方法既可以从头开始学习,也可以通过用现有算法自举初始算法群来学习现有知识。我们通过随机初始化算法群体来从头学习算法。通过对DAG中的每个运算节点进行依次抽样,对算法进行抽样。对于每个节点,运算和该运算的有效输入在所有可能的选项中被均匀地抽样。

虽然从头开始学习可能会发现与现有方法有很大区别的全新算法,但这种方法可能需要更长的时间来收敛到一个合理的算法。我们希望结合我们所拥有的关于好算法的知识,从一个更好的起点自举我们的搜索。我们用DQN(Mnih等人,2013)的损失函数初始化我们的图,因此前7个节点代表标准的DQN损失,而其余的节点是随机初始化的。在正则化演化过程中,节点不被冻结,这样,如果找到更好的解决方案,现有的子图有可能被完全替换。

四、学习RL算法的结果和分析

我们讨论了训练的设置和实验的结果。我们强调了两个具有良好泛化性能的学习算法,DQNClipped和DQNReg,并分析了它们的结构。更多细节可在sites.google.com/view/e

4.1 训练设置

元训练的细节。我们搜索最多有20个节点的程序,不包括输入或参数节点。节点类型的完整列表见附录A。我们使用300的种群规模,25的锦标赛规模,并根据(Real等人,2019)中使用的参数来选择这些参数。突变发生的概率为0.95。否则就会抽出一个新的随机程序。搜索是在300个CPU上进行的,大约运行72小时,这时大约有20,000个程序被评估。搜索的分布是这样的:任何空闲的CPU被分配给一个提议的个体,这样就没有空闲的CPU。进一步的元训练细节见附录B。

图3:左图:在不同数量的环境中,从零开始的元训练性能,以及自举。图表示为候选算法数量上的RL评估性能(训练环境中归一化训练回报的总和)。阴影区域代表10个随机种子的一个标准差。更多的训练环境导致了更好的算法。从DQN开始的Bootstrapping加速了收敛和更高的最终性能。右图。自举训练的元训练性能柱状图。许多顶级程序都有类似的结构(附录D)。

由于我们将评估数以千计的RL算法,所以运行的计算成本太高。我们使用了一系列的4个经典控制任务(CartPole、Acrobat、MountainCar、LunarLander)和一套来自MiniGrid(Chevalier-Boisvert等人,2018)的12个多任务网格世界风格环境。这些环境的运行在计算上是很便宜的,但也被选择来覆盖多样化的情况。这包括密集和稀疏的奖励,长时间跨度,以及需要解决一连串子目标的任务,如拿起钥匙和解锁一扇门。更多细节见附录C。

训练环境总是包括CartPole作为一个初始障碍。如果一个算法在CartPole上成功了(归一化的训练性能大于0.6),那么它就会进入一个更难的训练环境集。在我们的实验中,我们通过对一组3个环境的抽样来选择这些训练环境,并将其余的作为测试环境。对于从头开始的学习,我们还通过比较仅在CartPole上的训练与在CartPole和LunarLander上的训练,来比较训练环境的数量对所学算法的影响。

RL训练细节。在训练RLagent时,除注明外,我们在所有训练和测试环境中使用相同的超参数。所有的神经网络都是大小为(256,256)的MLPs,具有ReLU激活。我们使用Adam优化器,学习率为0.0001。在经典控制任务中,ε在1e3步内从1线性衰减到0.05,在MiniGrid任务中则在1e5步内线性衰减。

4.2 学习衔接

图3a显示了几种训练配置的收敛情况。我们发现,在训练结束时,大约70%的提议算法在功能上等同于先前评估的程序,而早期的障碍大约又削减了40%的提议非重复程序。

训练环境的数量不同。我们比较了用单一训练环境(CartPole)和用两个训练环境(CartPole和LunarLander)从头开始学习。虽然两个实验在这些环境中都达到了最大的性能(图3a),但学到的算法是不同的。两个环境的训练设置学习了已知的TD损失

而单环境训练设置学习了一个轻微的变化L = (Q(st, at) - (rt + maxa Q targ(s t+1, a))2,不使用折扣,表明训练环境上的难度范围对于学习算法来说是很重要的,可以泛化。

从零开始学习与自举学习。在图3a中,我们比较了在四个训练环境(CartPole、KeyCorridorS3R1、DynamicObstacle-6x6、DoorKey-5x5)上从零开始训练与从自举开始训练。训练性能并没有达到饱和,留下了改进的空间。从DQN进行自举,大大改善了元训练的收敛性和性能,使最终的训练性能提高了40%。

4.3 学习了RL算法:DQNClipped和DQNReg

在这一节中,我们将讨论两个特别有趣的损失函数,它们是由我们的方法学到的,并且在测试环境中具有良好的泛化性能。设

第一个损失函数DQNClipped是

LDQNClipped是使用三种训练环境(LunarLander、MiniGrid-Dynamic-Obstacles-5x5、MiniGrid-LavaGapS5)从DQN的自举训练出来的。它在训练和未见环境中的表现都优于DQN和doubleDQN,DDQN,(van Hasselt等人,2015)(图4)。这个损失函数背后的直觉是,如果Q值变得太大(当Q(s t, a t) > δ2 + Y t),损失将作用于最小化Q(st, at)而不是正常的δ2损失。另外,我们可以把这个条件看作是δ=Q(s t, a t) - Y t > δ2。这意味着当δ足够小时,Q(st, at)相对接近,损失只是为了最小化Q(st, at)。

图4:所学算法(DQNClipped和DQNReg)与基线(DQN和DDQN)在训练和测试环境中的性能,以10个训练种子的episode回报率衡量。虚线表示该算法在该环境下进行了元训练,而实线表示测试环境。DQNReg在几乎所有的训练和测试环境中都能匹配或超过基线。阴影区域对应于1个标准差。

第二个学习到的损失函数,我们称之为DQNReg,由以下公式给出

DQNReg是通过使用三种训练环境(KeyCorridorS3R1, Dynamic-Obstacles-6x6, DoorKey-5x5)从DQN的自举中训练出来的。与DQNClipped相比,DQNReg直接用一个始终有效的加权项来规范Q值。我们注意到,这两个损失函数都修改了原始的DQN损失函数,将Q值正则化为较低的值。虽然DQNReg相当简单,但它在所有的训练和测试环境中,包括从经典控制和Minigrid中,都与基线相匹配或超过了基线。它在一些测试环境(SimpleCrossingS9N1、DoorKey-6x6和Unlock)中表现特别好,并在其他方法无法获得任何奖励时解决了这些任务。它也更稳定,种子之间的差异更小,在测试环境(LavaGapS5、Empty-6x6、Empty-Random-5x5)上的采样效率更高。

在表1中,我们在一组Atari游戏中评估了DQNReg。我们使用与DQN(Mnih等人,2013)相同的架构,并使用相同的无操作评估程序,每100万个训练步骤对200个测试episode评估一个训练过的策略。尽管元训练是在计算简单、不基于图像的环境中进行的,但我们发现DQNReg可以泛化到基于图像的环境中,并且性能优于基线。基线的结果取自他们各自的论文(Mnih等人,2013;van Hasselt等人,2015;Schulman等人,2017)。

表1: DQNReg学习算法在几个Atari游戏中的表现与基线相比。基线数字取自报告的论文。

这些算法与最近提出的RL算法、保守Q-learning(CQL)(Kumar等人,2020)和M-DQN(Vieillard等人,2020)有关。CQL通过用一个简单的Q值正则化项增加标准的贝尔曼误差目标来学习一个保守的Q函数: \log \sum_{a} \exp \left(Q\left(s_{t}, a\right)\right)-Q\left(s_{t}, a_{t}\right) ,它鼓励agent接近数据分布,同时保持最大熵策略。DQNReg同样用一个Q值正则化项来增加标准目标,尽管它在不同的方向上通过防止高估而这样做。M-DQN修改了DQN,在即时奖励中加入了缩放的对数策略(使用softmax Q-values)。这两种方法都可以被看作是使基于价值的策略正规化的方法。这种相似性表明,我们的方法可以自动找到目前正在人工探索的有用结构,并且可以用来为研究人员提出新的探索领域。

我们发现,实验中学习了DQNReg的表现最好的算法是一致的,形式为 L=\delta^{2}+k * Q\left(s_{t}, a_{t}\right) 。这个损失可以使用进一步的分析和调查,可能是针对特定环境的参数k的调整,详见附录3。

4.4 对所学算法的分析

我们分析了所学的算法,以了解它们对性能的有利影响。在图5中,我们比较了每种算法的估计Q值。我们看到,DQN经常高估Q值,而DDQN在收敛到ground truth Q值之前一直低估Q值,这些Q值是用人工设计的最优策略计算的。DQNClipped的性能与DDQN相似,它也持续地低估了Q值,而且比DDQN略为激进。DQNReg明显低估了Q值,并且没有收敛到ground truth。各种工作(van Hasselt等人,2015;Haarnoja等人,2018;Fujimoto等人,2018)表明,高估值估计是有问题的,限制高估值会提高性能。

图5:在基于价值的RL中,高估的价值估计通常是有问题的。我们的方法是学习使Q值正规化的算法,以帮助解决高估问题。我们将我们学习的算法和基线的估计的Q值与训练期间几个环境中的最佳ground truth Q值进行比较。估计是指从环境的初始状态开始采取零行动。虽然DQN高估了Q值,但我们学习的算法DQNClipped和DQNReg低估了Q值。

DQNClipped中的损失函数是由两个最大运算的总和组成的,因此我们可以分析每个更新规则何时激活。我们将DQNClipped解释为max(v1, v2) + max(v2, v3) ,有四种情况。1) v1 > v2 和 v3 > v4 2) v1 > v2 和 v3 < v4 3) v1 < v2 和 v3 < v4 4) v1 < v2 和 v3 > v4。情况2对应的是最小化Q值。情况3对应于δ2的正常DQN损失,因为Q targ的参数在梯度下降过程中不被更新。

在图6中,我们绘制了每个案例在训练中的活跃比例。我们看到,通常情况下,案例3是最活跃的,在开始时有一个小的下滑,但随后保持在95%左右。同时,案例2,即对Q值进行正则化的案例,在开始时有一个小的增长,然后下降,与我们在图6中的分析相吻合,这表明DQNClipped在训练开始时强烈低估了Q值。这可以被看作是一个受限的优化,其中Q值的正则化量被相应地调整了。当高估有问题时(Q(st, at) > δ2 +Yt),正则化在训练开始时比较强,随着δ2变小,正则化会变弱。

图6:我们学习的算法,DQNClipped,可以分解成四个更新规则,每个规则在某些条件下是活跃的。情况3对应于正常的TD学习,而情况2对应于最小化Q值。当价值高估是一个问题时,案例2在开始时比较活跃,然后随着不再需要它而变得不太活跃。

五、结论

在这项工作中,我们提出了一种学习强化学习算法的方法。我们设计了一种表示算法的通用语言,这些算法为基于价值的model-free RLagent计算损失函数以进行优化。我们强调了两种学习算法,虽然相对简单,但在广泛的环境中可以获得良好的泛化性能。我们对所学算法的分析揭示了它们作为正则化项的好处,这与最近提出的算法类似。我们的工作仅限于接近DQN的离散动作和基于价值的RL算法,但可以很容易地扩展到表达更普遍的RL算法,如actor-critic或策略梯度方法。如何从策略中取样的行动也可以是搜索空间的一部分。我们用于训练和测试的环境集也可以扩展,以包括更多不同的问题类型。我们把这些问题留给未来的工作。

A 搜索程序的细节

计算图中节点的输入和输出的数据类型包括状态S、动作Z、浮点R、列表List[X]、概率P、向量V。符号X表示它可以是S、R或V的。运算将进行广播,因此,例如将一个浮动变量添加到一个状态变量中,将导致浮动变量被添加到状态的每个元素中。这种类型允许学习的程序与领域无关。操作符的完整列表列在下面。

B 训练细节

我们描述了训练细节和使用的超参数。对于所有的环境,我们使用Adam优化器,学习率为0.0001。

常见的RL训练细节。所有的神经网络都是大小为(256,256)的MLPs,具有ReLU激活。为了优化Q-函数参数,我们使用学习率为0.0001的Adam优化器。目标更新周期为100。这些设置被用于所有的训练和测试环境。

经典的控制环境。ε的值在1000步内从1线性衰减到0.05。CartPole、Acrobat和MountainCar被训练了400次,LunarLander被训练了1000次。

MiniGrid环境。ε的值在105步内从1线性衰减到0.05。在元训练期间,MiniGrid环境被训练为5∗105步。

Atari环境。我们使用与Mnih等人(2013)相同的神经网络架构。目标更新周期为1,000。ε的值在106步内从1线性衰减到0.1。对于评估,我们使用Mnih等人(2013)中的 "无操作 "启动条件,agent将在x步内输出无操作动作,其中x是在[1,30]之间抽取的随机整数。评估策略使用0.001的ε,每106步评估100次。最佳训练快照被报告。

C 环境细节

我们在下面描述经典的控制环境。CartPole和LunarLander是密集型奖励,而Acrobat和MountainCar是稀疏型奖励。

我们在下面描述MiniGrid的环境。agent的输入是一个完全观察到的网格,它被编码为一个NxNx3大小的数组,其中N是网格大小。第一通道包含该位置的物体类型的索引(在11个可能的物体中),第二通道包含物体的颜色(在6个可能的颜色中),第三通道包含agent在4个基本方向上的方向。然后,这种编码被扁平化,并被送入一个MLP。有7种可能的动作(左转、右转、前进、拿起、放下、切换、完成)。

除非另有说明,所有的任务都是稀疏的奖励任务,完成任务的奖励为1。最大步数被设置为100。环境名称中的5x5这样的尺寸是指宽度和高度为5个单元的网格尺寸。

D 图形分布分析

我们看一下表现最好的图的分布,发现其结构有相似之处。这在表3中进行了总结,我们描述了不同等级的学习算法的公式(如果按分数排序)。实验中学习了DQNReg的表现最好的算法都是以某种形式将Q(st, at)加入到标准TD损失中的变种, \delta^{2}+k * Q\left(s_{t}, a_{t}\right) 。我们认为这种损失可以进一步研究,虽然我们没有调整k的值,但这也可以根据环境进行调整。在图3b中,我们显示了所有被评估的非重复程序的分数分布。我们在github.com/jcoreyes/evo,提供了我们几个实验中表现最好的算法的完整列表。

表3:在学习DQNReg时学到的其他程序,它的得分是3.907,排名第一。排名是指如果分数按递减顺序排序。分数是指在四种环境中归一化RL训练性能的总和。简化公式只包含使公式输出最小化的相关部分。Q targ指的是maxa Q targ(s t+1, a)。

E 元训练的可重复性

在图7中,我们绘制了从DQN自举的元训练性能,有四种训练环境(CartPole, KeyCorridorS3R1, Dynamic-Obstacles-6x6, DoorKey-5x5)在十次试验中。十次试验中,有四次达到了最大的训练性能。在这些试验中,有两个试验学习了相同的算法DQNReg,而其他前两个试验则找到了其他不太容易解释的算法。

图7: 10个随机种子在4个训练环境中的自举训练性能。

编辑于 2021-07-27 11:48