强化学习中常见的两个问题
- 脱离(detachment)问题:在强化学习智能体的探索过程中,算法会使Agent忘记如何到达之前访问过的状态或过早地停止返回状态空间的某些状态(当探索区域有多个时更易发生)。
- 脱轨(derailment)问题:Agent在探索之前未能首先回到某个状态,这是因算法的探索机制阻止了Agent的行动。
Go-explore算法
解决脱离(detachment)问题
之前的RL算法并没有将返回和探索分开,而是将探索贯穿整个章节,通常是通过在一小部分时间内添加随机动作或从随机策略(一个决定在每种状态下采取哪种动作的函数,通常是神经网络)中取样来进行探索。
为了避免脱离问题,Go-explore构建了一个存档(archive),用来保存Agent在环境中访问过的不同状态,确保状态不会被忘记从而避免脱离。
解决脱轨(derailment)问题
Go-Explore将类似的状态分组到单元中,并且只有当状态位于存档中还不存在的单元中时,才会被认为是新的状态(图1 d)。存档每个单元存储一个状态,为了最大化性能,如果一个状态映射到一个已知的单元,但与更好的轨迹(更高的表现或更短的时间),该状态及其相关轨迹将替换当前与该单元格相关的状态和轨迹。
为了避免脱轨问题,Go-explore的模拟器是可恢复的环境。以前的状态可以保存并立即返回从而完全避免脱轨。
当利用可恢复环境的这一特性时,Go-Explore在其探索阶段通过不断恢复(随后从其存档中的一个状态中采取探索行动)彻底探索环境。它最终返回它找到的得分最高的轨迹(行动序列)。
而这样的轨迹对随机或意外结果并不稳健(例如机器人可能会滑倒并错过一个关键的转弯,使整个轨迹失效)。为了解决问题,Go-Explore通过 Learning from Demonstrations (LfD) 来训练一个健壮的策略,在具有足够随机性以确保鲁棒性的环境变体中,使智能体在探索阶段的轨迹取代了通常的人类专家演示(类似于Guo等人(2014))。
存档中的单元(Cell)存储:
Go-Explore存档的状态到单元映射包括将当前游戏帧从最初的210 × 160彩色帧降至更小的灰度图像,这(与大多数RL预处理相比,减少维数以节省计算,同时最小化合并)将相似的帧聚集到相同的单元格中(图1d)。
良好的状态到单元格映射参数的结果是在两个极端之间取得平衡的表示:缺乏聚合(例如,每帧一个单元,这是计算效率低的)和过度聚合(例如,将所有帧分配给一个单元,这将阻止探索)。
Go-explore算法概述:
- 有概率地选择存档中的一个状态,优先选择更有希望(更有轨迹或更高得分)的单元。
- 返回所选状态,如通过恢复模拟器状态或通过运行目标条件策略等方法。
- 从该状态进行探索,采取随机行动或根据已经训练的策略中取样。
- 将返回和探索过程中遇到的每个状态映射为低维单元表示。
- 将映射到新单元格的状态添加到存档中,并更新其他存档条目。
![](https://i-blog.csdnimg.cn/blog_migrate/d491268e3540baa3f6b6acd48ec8dbc0.png)
图1 Go-explore探索过程
测试结果
在测试时,Go-Explore的平均表现是超人和超过所有11个游戏的技术水平(除了在Freeway,Go-Explore和技术水平都达到了最高分 图3)。这些游戏包括《Montezuma’s Revenge》的大挑战,Go-Explore将最先进的分数提高了四倍(图2),以及《Pitfall》,Go-Explore超越了人类的平均表现,而之前的算法无法获得任何分数。
![](https://i-blog.csdnimg.cn/blog_migrate/6c8b576128de464264694f69868c1650.png)
图2 Atari游戏 Montezuma’s Revenge的历史分数
![](https://i-blog.csdnimg.cn/blog_migrate/b3023f3695aea2342a1f05b46df86f55.png)
图3 Go-Explore变体在探索阶段使用缩小表示的11款重点游戏的表现
基于策略的Go-explore
利用模拟器恢复状态的能力可以提高Go-Explore的效率,但不是必须的。当返回时,不是恢复模拟器状态,而是可以执行一个策略条件(即被告知去)单元返回,我们称之为基于策略的go - explore。
目标条件策略在探索阶段使用通用的RL算法(PPO20)进行训练。因为有目标条件的策略往往难以达到遥远的状态 (“消融”),因此通过呈现中间目标,沿着先前通向所选状态的最佳轨迹,将策略引导到所选状态。
![](https://i-blog.csdnimg.cn/blog_migrate/459c953ccbaf1a00692301fea2b03c52.png)
图4 基于策略的Go-explore在 Montezuma’s Revenge 和 Pitfall 的表现
在《Montezuma’s Revenge》(图4 a)和《Pitfall》(图4 b)这两款游戏中,玩家的表现会在整个游戏过程中不断提升,这意味着玩家可以在额外的训练时间中获得更高的表现。阴影区域显示了1000个样本的95%的引导CI平均值。
Go-explore的更多应用
在实际应用中,通常可以基于领域知识定义有用的特性。Go-Explore可以利用这种易于提供的领域知识,通过构建只包含与探索相关的特性的单元格表示(针对存档,而不是策略输入)来大幅提高性能。
Go-explore应用于机器人抓取物体
Go-Explore的成功之处在于它彻底探索了周围的环境,而不受脱离(例如,一旦每个橱柜被打开,Go-Explore永远不会忘记那些状态)或脱轨(Go-Explore可以直接恢复到难以到达的状态,如抓取)问题的影响。相比之下,与探索阶段具有相同表示的基于计数的内在动机算法无法发现任何奖励(图5 c),并且在20亿帧训练后只发现了探索阶段发现的一小部分细胞,是探索阶段的100倍(图5 b)。尽管触摸物体会获得内在的奖励,但这种控制无法学习可靠地抓住物体。有证据表明,这种抓取失败是由于脱轨问题,Go-Explore就是专门为解决这个问题而设计的。鲁棒Go-Explore发现的轨迹在99%的情况下产生了鲁棒策略(图5 c)。
![](https://i-blog.csdnimg.cn/blog_migrate/771eb5b883bbd6c40841c32aa7190d70.png)
图5 Go-explore实现机器人抓取
总结
Go-Explore系列算法的有效性表明,它将使许多可以被视为顺序决策问题的领域取得进展,包括机器人、语言理解和药物设计。这些示例只是Go-explore方向的一小部分,未来工作的一个关键方向是学习细胞表示。
其他未来的扩展可以学习选择返回到哪些细胞,学习在探索步骤中尝试到达哪些细胞,学习在“探索”步骤中探索的专门策略,学习通过在模拟中挖掘不同的灾难在现实世界中安全地探索,保持基于密度的连续归档而不是基于离散细胞的归档,通过利用单一探索阶段运行的多个轨迹(甚至所有转换)来提高样本效率,或者通过单一演示来改进健壮化阶段,等等。
此外,Go-Explore探索阶段的规划性质突出了将其他强大的规划算法(如MCTS44、RRT45、A*或一致性规划)移植到高维状态空间的潜力。
Go-explore算法提出了广泛的见解:记忆之前找到的状态,回到它们,然后从中探索。这样的简单分解似乎特别强大,这表明它可能是一般学习的基本特征。利用这些见解对于提高我们创建一般智能代理的能力可能是至关重要的。
研究生第一次笔记,理解非常浅薄,恳请各位大佬批评指正,轻喷(手动狗头)
参考文献:Ecoffet, A., Huizinga, J., Lehman, J., Stanley, K.O. and Clune, J. First return, then explore. Nature 590, 580–586 (2021). https://doi.org/10.1038/s41586-