OpenAI研究 强化学习中的量化泛化






泛化挑战
对于最先进的深度强化学习,任务之间的泛化仍然很困难A[A]
即使是 令人印象深刻的 RL 策略也经常在没有监督学习技术(如 dropout 和批归一化)的情况下进行训练。然而,在 CoinRun 泛化机制中,我们发现这些方法确实产生了积极影响,并且我们之前的 RL 策略对特定的 MDP 过度拟合。
之前的工作使用了 Sonic 基准、 程序生成的网格世界迷宫和 通用视频游戏 AI 框架 来解决这个问题。在所有情况下,泛化都是通过在不同级别集上训练和测试代理来衡量的。在我们的 Sonic 基准测试中训练的智能体在训练水平上表现出色,但在没有任何微调的情况下在测试水平上表现不佳。在类似的过度拟合显示中,在程序生成的迷宫上训练的智能体学会了记住大量训练级别,而 GVG-AI 智能体在训练期间未见过的困难设置下表现不佳。
游戏规则
CoinRun 旨在让现有算法易于处理,并模仿 Sonic 等平台游戏的风格。CoinRun 的级别是 程序生成的,使代理可以访问大量且易于量化的培训数据。每个 CoinRun 级别的目标都很简单:收集位于该级别末尾的单个硬币。智能体和硬币之间有几个静止和非静止的障碍物。与障碍物的碰撞会导致代理立即死亡。环境中唯一的奖励是通过收集硬币获得的,这个奖励是一个固定的正常数。当代理人死亡、收集硬币或 1000 个时间步后,该级别终止。

评估泛化
我们训练了 9 个代理来玩 CoinRun,每个代理都有不同数量的可用培训级别。前 8 个代理在 100 到 16,000 个级别的集合上进行训练。我们在一组不受限制的级别上训练了最终代理,因此该代理永远不会看到同一级别两次。我们使用 常见的 3 层 卷积架构(我们称之为 Nature-CNN)用策略训练我们的代理。我们的代理使用 近端策略优化 ( PPO ) 进行了总计 256M 时间步的训练。由于一个 epsiode 平均持续 100 个时间步,具有固定训练集的代理将看到每个训练级别数千到数百万次。使用无限制集训练的最终代理将看到大约 200 万个不同的级别——每个级别恰好一次。
我们通过平均最终智能体在 10,000 集中的表现来收集下图中的每个数据点。在测试时,代理会在前所未见的水平上进行评估。我们发现当训练级别少于 4,000 时会发生严重的过度拟合。 事实上,即使有 16,000 个训练级别,我们仍然会看到过度拟合! 不出所料,使用不受限制的级别集训练的代理表现最好,因为这些代理可以访问最多的数据。这些代理在下图中用虚线表示。
我们将我们的 Nature-CNN 基线与IMPALA中使用的卷积架构进行了比较 ,发现 IMPALA-CNN 代理对任何训练集的泛化效果 都更好 ,如下所示。
左图: Nature-CNN 代理在 256M 时间步后的最终训练和测试性能 ,作为训练级别数的函数。
右图: IMPALA-CNN 代理在 256M 时间步后的最终训练和测试性能 ,作为训练级别数的函数。
提高泛化性能
在接下来的实验中,我们使用了 500 个 CoinRun 级别的固定训练集。我们的基线代理很难用如此少的级别进行概括,这使其成为基准的理想训练集。我们鼓励其他人通过在相同的 500 个级别上进行训练来评估他们自己的方法,直接比较测试时间的性能。使用这个训练集,我们研究了几种正则化技术的影响:
- Dropout 和 L2 正则化:两者都显着减少了泛化差距,尽管 L2 正则化的影响更大。
- Data augmentation (modified Cutout ) 和 batch normalization:数据增强和 batch normalization 都显着提高了泛化能力。
- 环境随机性:与前面提到的任何技术相比,随机性训练在更大程度上提高了泛化能力(详见论文 )。
额外的环境
我们还开发了两个额外的环境来研究过度拟合:一个称为 CoinRun-Platforms的 CoinRun 变体和一个称为RandomMazes 的简单迷宫导航环境 。在这些实验中,我们使用了原始的 IMPALA-CNN 架构,然后是 LSTM,因为内存对于在这些环境中表现良好是必不可少的。
在 CoinRun-Platforms 中,代理尝试在 1000 步时限内收集多个硬币。硬币随机散布在关卡中的各个平台上。CoinRun-Platforms 中的级别更大、固定大小,因此代理必须更积极地探索,偶尔会回溯其步骤。
2B 时间步后CoinRun 平台中的最终训练和测试性能 ,作为训练级别数的函数。
当我们通过基线实验同时运行 CoinRun-Platforms 和 RandomMazes 时,我们的代理在所有情况下都严重过拟合。我们在 RandomMazes 的情况下观察到特别强烈的过度拟合,因为即使在使用 20,000 个训练级别时仍然存在相当大的泛化差距。