大家好,非常感谢大家参加伦敦大学学院(UCL)特邀演讲系列的下一期。今天我们要聆听田元东关于“在强化学习中为搜索与探索寻找良好表示”的主题演讲。田元东是Facebook AI Research的研究科学家兼经理,致力于深度强化学习和表示学习。他是ELF、OpenGo和DarkForestGo项目的首席科学家兼工程师。在此之前,他于2013年至2014年在谷歌自动驾驶汽车团队工作。再之前,他于2013年在卡内基梅隆大学机器人研究所获得博士学位。非常期待今天你能向我们分享你的见解,元东。现在交给你。
嗯,我想是的,罗伯特已经涵盖了大部分内容。是的,所以我的名字是田元东。我来自Facebook,是FAIR的研究经理。也非常感谢Ad及其团队介绍我并邀请我在这里发表演讲。所以今天的主题是寻找强化学习中搜索与探索的良好表示。呃,所以让我从第一张幻灯片开始。第一张幻灯片基本上总是展示,哦,是的,深度模型取得了巨大的成功提升。现在我们在很多地方都看到了这一点。
嗯,所以我们在游戏中看到了,对吧?在强化学习中,我们看到使用深度模型,性能变得超级好,在多个游戏中达到了超级人类水平的性能。对,而且在计算机视觉(CV)和自然语言处理(NLP)中,我们看到部署的模型比深度学习时代之前的模型要好得多,对吧?所以,在所有这些背后,我的意思是,有一件事实际上发生了改变。对,所以在这个深度学习时代之前和之后之间,对吧?
在深度学习时代之前,人们只是说,好吧,让我们使用线性回归。使用线性回归,你有特征,你进行特征工程,然后希望用一个层的网络,你想用这些特征来预测定义输出y,对吧?所以深度学习时代之后真正改变的是,我们开始使用深度模型。那么什么是深度模型呢?我们只是在输入和输出之间堆叠很多层。
然后,希望通过这种训练,这些中间层实际上学到了良好的表示,以便这些表示能更好地用于预测最终输出y,对吧?所以这基本上就是总结之前和不同时代所发生情况的一句话。所以我想人们可能会想知道为什么会这样,对吧?所以有一个组件被称为为什么表示学习实际上有帮助。我们有很多作品,但我们将跳过这里,因为在这次演讲中,我们将专注于强化学习中的表示学习。
在这个主题下,有很多论文朝这个方向发展。但大多数论文主要关注几个具体主题,对吧?第一个主题是状态表示是什么,对吧?在这个主题下,我们可以看到很多论文。例如,这篇著名的Muzero论文基本上表明,如果我们可以将游戏的当前状态编码为隐藏状态,你可以使用该隐藏状态进行搜索。
你可以进行分支,直到找到有趣的良好策略来运行。你基本上可以端到端地训练一切。最近,我们还看到我们可以通过结合离散和连续损失函数来学习表示。为了基本上获得掌握Atari游戏的良好策略,这是来自Google DeepMind的。哦,抱歉,来自Google Brain的。
我们还看到很多论文旨在学习动作表示,对吧?在这种情况下,可能会出现动作太多的情况,你想找到一种表示,以便你可以以统一的方式处理这些动作。你也可能能够从一种动作转移到另一种动作空间,对吧?所以你可以用它来在不同任务之间进行转移。对,这被广泛用于例如推荐系统中,在那里你可能有成百万的物品可供选择。
在这种情况下,你可能需要使用动作嵌入才能使这项工作顺利进行。对,但在本次演讲中,我将谈论一些其他东西,不是状态或动作表示,而是更高层面的东西,对吧?所以我所说的高层面是指,你实际上想要为更大的事物拥有表示,对吧?啊,然后这不仅仅是单独的状态和动作,对吧?
所以有一些例子正好来自之前的论文。例如,你可以为整个策略使用表示。那是一篇名为DCSI Clear的Parrots的论文。它表明你可以使用表示来代表策略和行为策略,并且你可以将该行为策略从现有任务转移到新任务,对吧?你也可以为环境建立表示,以便你可以处理新任务学习等。
在本次演讲中,我将涵盖这三个组成部分。所以我们实际上考虑了一些与所有这些不同的东西,并为强化学习中发生的不同对象提出了非常有趣且很好的解决方案。所以演讲将涵盖这三个组成部分。第一个是如何学习整个动作空间的表示。你实际上可以改变动作空间,以便在使用MDP公式优化函数时获得更好的性能。
你也可以在不完美信息游戏中找到不同的方式来表示价值变化,从而使搜索变得更加高效和容易。最后,我要谈一点关于正在进行的工作,这基本上是关于研究强化探索中的表示变化。这是我们的初步工作,我们有几张幻灯片谈论当前的进展。
好的,让我们从第一个主题开始,即动作空间的表示。为此,我不专注于游戏,但我们试图思考更一般的优化任务。在这些任务中,我们基本上处理一个困难的优化问题,你想找到一种使用强化学习来解决它们的方法。对,这里所说的优化问题,我的意思是一堆组合优化问题。
优化问题是我们想要处理的。例如,你有一个目标函数,旨在最小化旅行商旅行的距离,基本上你希望旅行商访问每个城市一次且仅一次,并回到原点。同时,你希望距离最小化。你也可以考虑作业调度问题等。对于这些所有的优化问题,它们可以通过具体指定状态和行动在哪里,自然地表述为马尔可夫决策过程(MDP)。然后你可以将整个事情转化为MDP。
但这种设置有趣的部分在于,对于单个优化问题,存在许多MDP。因此,我们可能根本不需要将这个优化问题建模为MDP。我们可以说,好吧,让我们进行端到端训练,即一次性预测。问题规范基本上会一次性为你提供解决方案。你也可以尝试用不同的MDP来制定其他方法。你可以说,好吧,让我们一个接一个地预测路径,直到获得完整的解决方案;或者你可以说,好吧,从初始猜测或解决方案开始,MDP的每一步都成为对该解决方案的改进,直到你无法使解决方案变得更好。
最后,你甚至可以尝试学习寻找行动空间的最佳方式,从而使整个MDP更容易解决。从所有这些例子中,你可以看到,在解决这些优化问题时,表示实际上非常重要。在接下来的几张幻灯片中,我们将讨论各种不同表述形式的例子。对于直接预测解决方案,你会发现从2015年开始,有很多论文试图使用序列到序列模型直接预测问题的解决方案。
在这些情况下,你指定什么是解决方案,将其发送给序列到序列模型,它会自动给出解决方案,无需任何搜索或改进。但这实际上是利用机器学习解决组合推理问题的初步尝试。之后,人们意识到这些问题很难,不能仅仅依靠它来解决。还有很多其他的方法来制定它。
我们一直在思考的一种方式是局部重写框架,即我们试图从一个可行的解决方案开始,并迭代收敛到一个好的解决方案。在这种情况下,我们基本上选择一个局部解决方案,然后选择一个小的组件,并使用一个规则来改变这个小组件,从而使该解决方案变得更好,然后重复这个过程。我们发现这种方法实际上相当有效,并表明它与其他许多基线相比表现良好。
在不同的问题中,如在线作业调度、稀疏简化和车辆路径规划等。顺便提一下,代码已经上线。如果人们感兴趣,可以查看。这篇论文已被NeurIPS 2019接收。然后我们回到最初的问题,即我们有所有这些不同的行动空间制定方式,通常我们在开始解决这些优化问题时固定它们。
但问题变成了:为什么我们要预定义行动空间?为什么我们不实际上在这些优化过程中学习行动空间呢?这是优化问题与由游戏制定的MDP之间的关键区别。对于优化问题,我们不关心最终解决方案,也不真正关心如何获得它。这实际上为我们留下了额外的空间来学习行动空间的表示,从而使优化能够做得更好。
为了展示这是事实,我真的很喜欢的一个例子是这个公式。这个例子旨在展示行动空间的表示对搜索准确性的影响。这里有一个架构搜索空间的例子,其中有1364个网络,每个网络具有不同的深度、不同的通道数和不同的卷积核大小。这里的目标是使用最少的试验次数找到具有最佳准确性的网络。
你当然可以做随机搜索或训练强化学习代理等操作。但这里我们要强调行动空间表示的重要性。如果你考虑两种行动空间,第一种是序列式的,即我们通常认为的正常方式。这里我们有一堆具有不同深度和不同通道的网络。序列行动将是:我们先添加第一层,设置其卷积核大小和通道大小,然后添加另一层,设置其卷积核大小和通道大小,以此类推,直到我们说停止。网络形成,我们可以使用网络进行训练以获得性能,从而得到准确性的数值。
但我们可以考虑构建这种行动空间的不同方式,称为全局行动空间。在这种情况下,我们首先设置网络的深度,然后设置网络每一层的卷积核大小和通道大小。我们可以看到,这两种行动空间在实际曲线中表现截然不同。这里的曲线显示x轴是样本数量,即你想要采样和评估的网络数量,y轴是准确性的数量。即在已经拥有几百个例子后,最佳准确性可能是多少。理想情况下,我们希望曲线尽快直接达到最高准确性。
我们可以看到,全局方法实际上比序列方法好得多。这实际上非常有趣,直觉上这是有道理的,因为当人类进行所有这些决策过程时,人类并不是首先考虑细节。人类总是想,也许网络的深度是最重要的。
所以我们要确保深度是被首先决定的。好吧,我们说网络的所有深度都很重要,所以我们先选择像深度网络这样的结构,然后再弄清楚细节,对吧?而不是从细节开始,比如讨论网络第一层的卷积核大小和通道大小,这其实没那么重要,对吧?这实际上给人一种感觉,对于优化问题,这种顺序或者在某种意义上说,首先要做出的最重要决策才是关键部分。
与其固守一个马尔可夫决策过程(MDP)并求解该 MDP,这可能并不理想,对吧?所以我们想更进一步,对吧?与其在多个动作空间中进行选择,我们甚至可以考虑是否有一种方法可以自动学习这个动作空间。这实际上是一个非常有趣的组件。那么我所说的“学习动作空间”是什么意思呢?
基本上,如果你思考这个游戏环境中的搜索树,会发生什么?你实际上改变了这个搜索树中边的语义。是的,这肯定不适用于游戏,因为在游戏中每个动作都是明确定义的,但在优化中是可行的,因为优化中的动作空间搜索空间没有明确定义的方式,状态空间也是由你自己定义的。
好吧,所以这基本上引入了本次演讲的第一部分,即如何学习动作空间。在最近发表于 NeurIPS 2020 和 TPAMI 2021 的两篇论文中,我们实际上思考了一种学习动作空间的方法。在这里,动作被定义为搜索空间的划分。
假设所有这些架构都在这个小型和巨大的搜索空间中,那么动作现在变成了我们应如何划分搜索空间,以便划分有利于非常高效的搜索。这基本上就是定义这种动作空间的方式。那么定义这种动作空间的标准是什么?
这里有一张图,你可以可视化这两种不同的动作空间,即我之前提到的全局动作空间和顺序动作空间。你可以看到,在全局动作空间下,搜索树与模型的性能在很大程度上是对齐的。
在全局动作空间中,你可以看到对于某些树,某些分支实际上包含性能非常差的模型,而其他一些分支则包含表现良好的模型。但在顺序动作空间中,所有这些好坏模型都混合在树的不同分支中。
我们并不希望这种顺序模型分割,因为这基本上意味着我们必须进入每个搜索树分支才能找到好模型。这实际上并不好,而且这会浪费我们大量的时间、精力和计算资源来获得好模型。
我们真正想要的是这种全局动作空间,以便好模型聚集到子树中,而坏模型也在另一个分支的子树中。这样你就可以直接剪枝。你可以说,这个分支完全不起作用,那么我们就不应该花费太多的时间和精力去搜索该分支。
这实际上给了我们动机,以及我们应如何划分空间和构建动作空间的标准。然后,这是一个如何学习这种动作空间的例子。T 是一个仅具有二维空间的例子。
假设网络仅由特征数量和深度数量参数化。在这种情况下,你会得到一堆样本,有些样本具有高准确率,有些样本具有较低的准确率,然后你可以学习一个线性分类器或任何你想要的分类器,以区分好样本和坏样本。
你可以使用那个学习到的线性分类器作为将空间划分为好部分(子空间)和坏部分(子区域)的方法。这样你就将这个环境分为左分支和右分支。
左分支基本上是说,我选择挑选好的动作空间,而右分支是说,我选择挑选坏的动作空间。然后你可以迭代地执行此操作,直到形成一棵树,你也可以以这种分层方式获得它。
我们并不局限于使用线性分类器或线性划分。你也可以使用非线性边界将好与坏分开。这里的想法是,你希望这些好分支始终位于左侧,这样当你探索空间时,你实际上会专注于这些小的好区域。
但同时,你也有其他表现不是那么好的分支。但你仍然希望探索空间,你可以在后期阶段选择一些实际上有前景的区域。好吧,有了这些组件,我们就有了这个名为潜在空间流形搜索的整个算法。
在那种方法中,首先使用初始随机样本数据训练动作空间,然后一旦学习了这个动作空间,你就使用这个学习到的动作空间进行搜索,直到使用固定数量的奖励。
在这里,我们基本上使用所谓的树搜索来进行这种分割,并且你获得了更多数据,这样你就可以回到最初的状态,重新训练这个动作空间。
我们使用蒙特卡洛树搜索进行探索的原因也很重要,因为在开始时,你可能会陷入局部最优,说左边也很好,你得到一堆 reasonably good 但非最优的样本,而实际的最优或非常好的解决方案可能隐藏在表现并不那么好的区域中。
也许这里的大部分区域真的很糟糕,所以整个区域看起来是一个坏区域,但它实际上包含了一个非常重要且有趣的、即最优解的部分。所以你仍然需要一些探索。
因此,你基本上必须使用该路径上的一些样本来探索该子空间、子区域,以确保持续找到最优解。
这些都是我们未来可以使用的很好的观点。现在我们专注于讨论这些模型的性能,对吧?我认为我们基本上利用这一点来测试它在架构搜索中是否有效。这实际上是我们最初动机之一,即看看这种方法是否有效。因此,我们实际上构建了一些数据集,并观察这种方法在不同数据集上的表现。你会发现,当我们使用越来越大的数据集时,与其他方法(如基础优化、随机搜索或其他用于神经架构搜索的方法)相比,这种方法的表现实际上要好得多。
你可以看到,随着数据集变大,直到我们达到 NAS Bench 101,其中包含四十二万个模型,这些模型已在 Google 的 CIFAR-10 数据集上进行了预训练。我们发现,在准确率方面,我们的方法比其他方法表现要好得多。那么,为了获得更好的模型,给定所需的样本数量,准确率增长得有多快呢?
我们还在开放领域尝试了这一点,并表明我们的方法仅用大约八百次试验就能实现相当好的 Top-1 错误率。好的,我们还在黑盒优化中尝试了这种方法,在这种情况下,你没有架构网络,但你只有一个想要调用的黑盒函数,对吧?在这种情况下,我们可以表明,与现有的求解器(一种称为 Turbo,另一种称为基于数据的优化)相比,我们的方法的样本效率要高得多。
我们看到,使用我们的方法,曲线(实线)在函数值方面下降得快得多,因为它正在最小化一个函数,与其他情况相比。因此,我们还尝试了这种方法来优化模块化任务的非线性策略。我们表明,如果这些优化问题有很多维度,也就是说,与其余这些进化优化问题相比,这种方法实际上做得好得多。
好的,我们还将其应用于多目标优化问题,最近我们看到这也显示出良好的性能,与以前的方法相比。好的,代码是开源的,如果人们有兴趣使用它,请随时点击链接,它应该很容易使用。你可以简单地定义一个函数,比如钟形曲线函数,并将其放入此代码中,然后它基本上会在短时间内给你提供好的解决方案。
我们的方法在去年欧洲 2020 黑盒优化竞赛中获得了第三名和第一名的成绩。好的,接下来我将进入演讲的第二部分,即如何找到更容易搜索的表示。为此,我们针对不同的领域,基本上是不完美信息游戏中的搜索。
首先,我想展示一张基本幻灯片,说明完美信息游戏和不完美信息游戏之间的区别。你基本上会看到左边是一个树状结构,人们通常在完美信息游戏中会遇到,其中基本上没有循环。一旦你从这里开始,做出一个决定,你就进入树的左分支,然后这个分支与树的右分支无关,等等。
这基本上就是完美信息游戏中发生的事情,也是人们思考基于搜索的方法时发生的事情,非常清晰。但是对于不完美信息游戏,情况略有不同。这种情况的原因是,你可能有两个玩家,对吧?所以玩家一在这里,玩家二在那里,一个玩家可见的内容可能对其他玩家不可见。
因此,发生的情况是,你可能会看到这两个节点对于玩家一来说基本上是分开的,但对于另一个玩家来说可能是一个节点。这基本上意味着每个玩家都看到部分信息,他们可能无法区分它们并做出决定。这里有一个关于这种不完美信息游戏的例子。
例如,你只有两张牌,对吧?所以你给玩家一一张私牌,给玩家二一张私牌。所以有四种可能性,从零零到一一。然后你可以说,好吧,如果你基本上是游戏设计师,你有完整的信息,那么你可以区分所有这四种可能性,对吧?这就是这个游戏的历史。
然而,如果从玩家一和玩家二的角度来看,他们实际上看到的东西非常不同,对吧?从玩家一的角度来看,你只看到两种可能的情况,对吧?第一种情况是玩家一只持有零牌。第二种情况是玩家一持有……牌。你没有其他情况,因为玩家一实际上看不到其他玩家的牌。
同样的事情也发生在玩家二的两种情况中。玩家二也只看到两种情况。第一种情况是他得到零牌。第二种情况是他得到一牌。你们应该基本上拥有这种概念,称为信息集,对吧?这基本上意味着你只能在这个区域(即信息集)内拥有一致且恒定的策略。
由于这种结构,这就是为什么我们实际上在这里看到这些圆圈的原因,对吧?所以如果你把这个信息集视为搜索树中的单个节点,那么你会看到这种搜索树以这种方式有圆圈,因为玩家一可以区分的内容可能无法被玩家二区分。所以你在这些不完美信息游戏中会看到这种奇怪的结构。
如果你有更多的动作,你会看到更多,对吧?例如,对于那个动作,假设玩家一有动作 A 和 B,对于不同的动作 A 和 B,你会将这个信息集分裂成两个、四个……
不同的信息集对应于八种不同的完全信息历史。因此,这是一个既定条件:该动作是公开的,每个人都能看到,并且每个人都可以利用该动作将这两个信息集从两个分裂为四个。这实际上使事情变得稍微复杂了一些。而在这些情况下,我们如何实际进行搜索,是我们需要面对的一个非常困难的问题。
使事情变得更加困难的是,在许多情况下,你不能仅仅一次优化一个节点,因为这也会导致局部最优。这实际上是合作性不完全信息博弈中的一个问题。这里有一个简单的例子可以证明这一点。假设有两个代理,他们彼此沟通,并且都能说法语和英语。
然而,这类沟通的问题在于,他们不知道彼此的牌面,也不知道谁更擅长法语或英语,因此他们可能会陷入局部最小值。例如,他们可能都在说法语。但实际上,有一个更好的解决方案,即两人都说英语。
但这两个代理中的任何一个都无法单方面改变其策略以实现更好的解决方案,因为如果其中一个代理改变了策略,沟通就会中断,双方都会收到负一或非常负面的奖励。只有当这两个代理同时改变策略时,他们才能获得更好的解决方案。
这实际上使事情变得更加复杂,因为为了获得良好的策略,你实际上需要同时为双方找到良好的改进。这可以用一个非常简单的图表来表示,显示了这两个玩家有两个信息集,他们需要同时改变策略以实现更好的解决方案。否则,你可能会陷入局部纳什均衡。
为了实现这一点,实际上有很多不同的方法。我们可以想到一种非常朴素的公式,即我们选择一个子树,不进行局部改进,而是选择多个信息集并改变其策略,以跳出局部最小值。
但由于游戏树的结构复杂,它实际上不是一个树,而是一个有向无环图(DAG),事情变得非常复杂。原因如下:这是因为不同策略之间存在依赖关系。
例如,在不完美信息博弈中,你可能会看到一条历史路径从这个信息集延伸出去,一直回到主流中那个正在变化的活动信息集。你想改变它们的策略,这实际上使事情变得非常复杂。
为了追踪所有这些历史(即这些黑点),以便追踪你改变策略后的变化,你基本上必须回溯并追踪,看看所有这些历史是否被访问,并在所有策略可能已改变的信息集中被使用。这实际上很复杂。
但幸运的是,如果我们改变整体价值变化的表示,我们会看到有趣且非常漂亮的公式,从而防止你追踪整棵树上所有这些历史。
基本上,我们在本文中做的是组合一个策略变化密度。它具有很好的性质。首先,如果你将整个游戏树中所有可能历史的密度相加,这将自然地代表旧策略游戏值与新策略游戏值之间的差异。
第二个性质是,对于策略没有改变的区域,无论它们在哪里,密度实际上都趋于零。无论上游还是下游的策略是否改变,这基本上都趋于零。
这两个性质结合在一起非常好。如果你将它们结合起来,你实际上会得到这种价值变化的新表示。最终,所有价值变化将仅取决于策略已改变的活动信息集,然后将它们相加,得到总体价值变化。
这是一个非常好的公式,因此你可以进行更清晰的搜索剪枝,以找到改进现有策略的更好策略。基于此,我们可以发现联合策略搜索算法。
该搜索算法基本上执行这种深度优先搜索,并使用之前的公式来计算策略改变后旧策略与新策略之间的变化量,你可以迭代进行,直到这些方法无法找到更好的解决方案为止。
我们基本上将该思想应用于多个小规模博弈,并表明,如果将此方法与现有的策略迭代方法相结合,我们的方法实际上表现更好。我们可以看到,它可以改进现有策略,并帮助其跳出局部最小值。
这是在现有策略上应用联合策略搜索(JPS)后的性能,这些策略也是通过现有的策略改进方法学习到的。我们看到这个数字比之前的数字更好。
我们还可以对其进行基于采样的版本,即只采样每个信息集中的历史,而不是枚举所有可能的信息或所有可能的历史。
我们可以看到,如果你采样的数量基本上高于某个阈值,我们实际上看到性能得到改善,有时采样版本实际上比完整版本更好,因为采样版本……
实际上打破了对称性,从而获得了更好的性能。最后,我们实际上将这种方法应用于桥牌中的叫牌、对比桥牌和竞价,并表明这种方法能够打破这些局部最优问题,达到更高的性能。因此,我们基本上是在与 W5 进行比较,W5 是多年来的计算机桥牌锦标赛冠军。
好的,所以最后,我们将花大约十五分钟。这是最后一部分,即探索的表示。这部分基本上是我首先谈论我们的论文,名为 BBOAD。在这篇 BBOAD 论文中,我们实际上提出了一种在强化学习环境中探索整个空间的新方法。基本上,我们有一个非常简单的标准用于探索,并表明该标准实际上表现非常好。
在许多情况下,这个标准非常简单。你基本上说这是你想要获得的内在奖励,而内在奖励由几个部分组成。首先,你有一个轨迹。给定一个轨迹,你首先计算这两个邻近状态之间的 IND 分数。这里你有 s_t 和 s_{t+1},首先计算这些节点的 ind 分数,计算那个节点的 ind 分数,然后相减,取最大值,并乘以回合访问计数。
注意,这个 I 和 D 分数实际上是作为随机网络蒸馏计算的。所以你有两个网络,一个是在线网络,另一个是随机固定目标网络。你首先根据之前存在的状态训练一个在线网络 phi'。如果你已经访问过那些状态,那么这两个网络输出之间的距离将很小,这意味着该特定状态已经被访问过。
如果你已经探索到一个区域,而该状态从未被探索过,那么在线网络和随机网络的输出之间将出现巨大差距,这两个差异将变得巨大。这对应于访问计数很少的事实。这基本上是一种展示你实际上会有更好性能的方法。抱歉,展示你实际上在一个状态中会有很多变化,而有些状态你不熟悉。
在 BBO 中,这里的想法是你基本上想检查轨迹,看看这些访问计数差异之间是否有任何差距。如果你已经探索了左侧的这个空间,这个空间有很多访问计数,如果你走出去,访问计数将变小,因为这里有一个瓶颈。自然地,你将使用这些梯度作为一种方式,为这个瓶颈节点给予更高的奖励。
你在这里获得更高的奖励,因为根据我们的标准,这将近似于 t+1 的访问计数的倒数。而这一个是 t 的访问计数。如果两者之间有巨大差距,这意味着那里有一个瓶颈状态,你基本上给它们分配更高的奖励,从而使探索变得更容易。一旦你获得高奖励,代理将试图到达这个地方。
一旦代理实际上已经学会如何到达这些瓶颈区域,这些瓶颈状态的访问计数将变得更高,自然地,这种差距将随时间减少。然后你将不再关注那部分,而是关注第二个、下一个瓶颈区域,从而使探索能够走得更远。这就是这篇 BBOAD 论文的主要思想,你可以看到,虽然这个想法很简单,但在许多情况下它做得非常好。
我认为人们已经看到且我们已经进行的一个有趣实验是在 MiniGrid 上的实验。我们可以看到这种方法在 MiniGrid 环境中的许多困难任务中表现非常好。我们看到,对于所有这十二个困难且具有挑战性的环境,BBO 实际上比现有方法(包括 RIDE 和 MIGAL)表现要好得多。
我们看到,所有这些 BBO 实际上可以在 1.2 亿步内解决所有这些情况。这里有一堆图表显示,特别是在困难任务中,DeepMind 表现要好得多,并且能够在少于 100 万步的环境步数内解决它们,这实际上非常有趣。这个简单的标准实际上是一种非常有效的方法。
我们还可以表明,如果在 MiniGrid 中使用此 BBO 环境使用此 BBO 标准进行纯探索,与 IND 标准相比,我们会看到 BBO 标准在探索整个环境方面表现要好得多。而 IND 可能会被困在几个房间里,然后不再回来。IND 的问题在于它基本上被困在某处,因为一旦它对某些房间熟悉,它可能会选择回到以前的房间,因为以前的房间看起来比当前房间更不熟悉。
然后你会看到这个 IND 框架中的这种来回现象。但 BBO 实际上能够克服这一点,并在更少的环境步数中探索更多的房间。好的。我们还进行了一项消融研究,以展示这些设计选择中每个重要的组成部分。例如,最大值很重要,而且这种回合变化计数对于实现良好的性能也很重要。
我们还把这个 BBO 探索任务应用到了 NetHack 上,这是一个由 Fair London 团队开发的很好的环境。我认为这是一个很好的工作环境,我们表明 BBO 在这些多个任务中表现良好。
我们还展示了该方法在相互复仇任务中表现良好,且无需大量精心设计的特征。不过,最近我们也开始思考,如果通过黑盒优化(BBO)改变表示会发生什么。我们发现一个有趣的现象是,BBO 对于 IND 部分所使用的不同特征类型非常敏感。如果我们使用随机特征,会看到一条不错的上升曲线,即随着环境步数的增加,性能提升。
然而,如果我们使用不同的表示来计算访问计数,例如使用双重模拟控制或 ICM 特征,性能就会变得非常糟糕,几乎没有任何提升。但如果使用成功的表示,性能实际上会下降,且随着环境步数的增加,下降速度更快。这非常有趣,我们推测这取决于表示的质量。如果表示能有效地提供关于环境的有用提示和思路,那么它就是好的表示。
我们已经观察到一个现象:在使用成功的表示时,每个房间内部的表示非常相似,但房间之间的表示差异很大。这一特性实际上将原本可能较大的 MDP(如 10x10 网格)简化为较小的 MDP,使得每个状态大约代表一个房间而非单个单元格。这提供了极大的便利性和自由度,并使探索更加高效,这是表示的一个优点。
我们仍在朝这个方向探索,以找到更好的表示,从而为 BBOAD 实现更优异的性能。感谢大家的聆听,剩下的八分钟用于提问。