哥萨克复古比赛如何决定

今年春天,举行了一场重要的OpenAI Retro竞赛,专门用于强化学习,元学习,当然还有Sonic。 我们的团队在900多个团队中排名第四。 强化训练的领域与标准机器学习略有不同,并且该竞赛与典型的RL竞赛也有所不同。 我要求猫下提供详细信息。


图片



TL; DR


适当调整的基线实际上不需要其他技巧。


强化训练简介


图片

强化学习是将最佳控制理论,博弈论,心理学和神经生物学相结合的领域。 在实践中,强化学习用于解决决策问题并搜索最佳行为策略或对“直接”编程而言过于复杂的策略。 在这种情况下,将对代理进行与环境交互历史的培训。 反过来,环境会评估代理的行为,从而为他提供奖励(标量)-代理的行为越好,奖励就越大。 结果,从代理商那里学到了最好的策略,该代理商学会了在与环境交互的整个时间内最大化总回报。


作为一个简单的示例,您可以播放BreakOut。 在这个Atari系列的出色老游戏中,一个人/特工需要控制下部的水平平台,击球并逐渐破坏所有上部的障碍物。 击倒的次数越多-奖励越大。 因此,人/代理人所看到的是屏幕图像,并且有必要确定在哪个方向上移动下平台。


图片

如果您对强化培训这一主题感兴趣,我会为您提供HSE的入门课程以及更详细的开源对口建议 。 如果您想阅读一些东西,但附有示例,则可以参考这两个课程。 我审核/完成/帮助创建了所有这些课程,因此,根据我的经验,我知道它们提供了很好的基础。


关于任务


这项比赛的主要目的是寻找能够在SEGA系列游戏-Sonic The Hedgehog中发挥出色的经纪人。 OpenAI刚刚开始将SEGA中的游戏导入其用于训练RL代理商的平台,因此决定对此进行一些推广。 甚至这篇文章都是随设备一起发布的,并详细介绍了基本方法。


支持所有3个Sonic游戏,每个游戏有9个级别,通过轻拂含泪的泪水,您甚至可以玩游戏,记住自己的童年(首先在Steam上购买它们之后)。


作为环境状态(代理所看到的),来自模拟器的图像是RGB图像,作为一种操作,代理被要求选择虚拟操纵杆上要按下的按钮-跳转/向左/向右等等。 代理商获得奖励积分以及在原始游戏中获得奖励积分,即 用于收集戒指以及通过关卡的速度。 实际上,我们面前摆着一个原始的声音,只有在我们的代理商帮助下才能通过。


比赛于4月5日至6月5日举行,即 仅2个月,看起来还足够小。 我们的团队只有在五月份才能聚在一起参加比赛,这使我们在旅途中学到了很多东西。


基准线


作为基线,给出了在Sonic可能的水平之一上进行Rainbow培训(DQN方法)和PPO (策略梯度方法)的完整培训指南,并提供了生成的代理。


Rainbow版本基于鲜为人知的anyrl项目,但PPO使用了OpenAI的良好基线 ,在我们看来似乎更可取。


已发布的基准与本文中描述的方法有所不同,因为它们具有更大的简单性和较小的“ hacks”集,可以加快学习速度。 因此,组织者提出了想法并设定了方向,但竞赛者将决定如何使用和实施这些想法。


关于想法,我要感谢OpenAI的开放性,并感谢约翰·舒尔曼(John Schulman)在比赛开始时表达的意见,想法和建议。 我们和许多参与者(甚至更多的RL世界新手)一样,这使我们可以更好地关注比赛的主要目标-元学习和改进Agent泛化,我们现在将进行讨论。


决策评估的特点


最有趣的事情是在评估代理人时开始的。 在典型的RL竞赛/基准测试中,算法是在训练它们的相同环境中进行测试的,这有助于使算法易于记忆并且具有许多超参数。 在同一竞赛中,算法的测试在新的Sonic级别(从未向任何人展示过)中进行,该级别由OpenAI团队专门为此竞赛开发。 蛋糕上的樱桃是这样的事实,即在测试过程中,还通过了关卡的传授,从而使代理可以在测试过程中直接进行重新训练。 但是,在这种情况下,值得记住的是,测试在时间(24小时)和游戏滴答声(100万)中都受到限制。 同时,OpenAI强烈支持创建可以快速重新训练到新水平的代理。 如前所述,在这场比赛中,获取和研究此类解决方案是OpenAI的主要目标。


在学术环境中,研究能够快速适应新条件的政策的方向称为元学习,并且近年来它一直在积极发展。


此外,与通常的kaggle竞赛相反,在整个竞赛中,整个提交都取决于发送您的答案文件,在该竞赛中(甚至在RL竞赛中),团队需要使用给定的API将其解决方案包装在docker容器中,进行收集并发送泊坞窗图片。 这增加了进入竞赛的门槛,但使决策过程更加诚实-分别用于docker镜像的资源和时间有限,过于繁琐和/或缓慢的算法根本无法通过选择。 在我看来,这种评估方法更为可取,因为它使没有“ DGX和AWS的家庭集群”的研究人员能够与5万玻璃模型爱好者竞争。 希望将来能看到更多此类竞争。


团队


Kolesnikov Sergey( 煽动者
RL爱好者。 比赛时,MIPT莫斯科物理技术学院的一名学生为去年的NIPS:学习跑步比赛写了文凭并为其辩护(也应该写一篇文章)。
Dbrain高级数据科学家-我们将具有docker和有限资源的生产就绪竞赛带入现实世界。


巴甫洛夫·米哈伊尔( fgvbrt
高级研究开发商DiphakLab 。 多次参加并在黑客马拉松和强化训练比赛中获奖。


谢尔盖夫·伊利亚( sergeevii123
RL爱好者。 我打了Deephack的RL黑客马拉松之一,一切就开始了。 数据科学家@ Avito.ru-用于各种内部项目的计算机视觉。


索罗金·伊凡( 1ytic
Speechpro.ru中从事语音识别。


方法与解决方案


在对建议的基准进行快速测试之后,我们选择使用OpenAI方法-PPO,将其作为开发我们的解决方案的一种更加形式化和有趣的选择。 此外,根据他们在本次比赛中的文章来判断,PPO代理可以更好地应对这项任务。 从同一篇文章开始,我们在解决方案中使用的第一个改进就诞生了,但首先要考虑的是:


  1. 在所有可用级别上进行协作式PPO培训


    图片

    所规划的基线仅在可用的27个Sonic级别之一中接受了培训。 但是,借助较小的修改,可以将培训同时并行到所有27个级别。 由于训练中的多样性更大,因此生成的代理具有更大的通用性,并且对Sonic世界的设备有了更好的了解,因此可以更好地应对一个数量级。


  2. 测试期间的额外培训
    回到竞争的主要思想,即元学习,有必要找到一种方法,该方法具有最大的概括性,并且可以轻松地适应新的环境。 为了进行调整,有必要对测试环境中的现有代理进行再培训,而事实是这样做的(在每个测试级别,该代理采取了100万步,足以调整到特定级别)。 在每个测试游戏结束时,代理都会评估收到的奖励,并使用刚刚收到的故事优化其政策。 在此需要特别注意的是,使用这种方法很重要的一点是不要忘记您以前的所有经验并且在特定条件下不要退化,这从本质上讲是元学习的主要目的,因为这样的代理立即失去了其所有现有的泛化能力。


  3. 勘探奖金
    深入了解薪酬水平,代理商会得到奖励,因为他们分别沿x坐标前进,当您必须先前进后退时,他可能会陷入某些水平。 决定增加对探员的奖励,即所谓的基于计数的探究 ,如果探员处于尚未进入的状态,则会获得小额奖励。 实施了两种类型的勘探奖金:基于图片和基于代理的x坐标。 基于图片的奖励计算如下:对于图片中的每个像素位置,计算一次情节中每个值出现多少次,奖励与所有像素位置中乘积的积成反比,即这些位置中的值满足情节多少次。 以类似的方式考虑基于x坐标的奖励:对于每个x坐标(以一定的准确性),计算情节在该坐标中座席在该坐标中的次数,与当前x坐标的数量成反比。


  4. 混合实验
    在最近的“与老师一起教学”中,一种简单而有效的数据扩充方法,即所谓的 混合。 这个想法非常简单:完成了两个任意输入图像的相加,并将相应标签的加权总和分配给了这个新图像(例如0.7 狗+ 0.3猫)。 在图像分类和语音识别等任务中,混合显示出良好的效果。 因此,对RL测试此方法很有趣。 在每个大批量中都进行了增强,包括几集。 输入图像以像素为单位进行混合,但是使用标签,一切并不是那么简单。 值返回,值和neglogpacs以加权总和混合,但是从具有最大系数的示例中选择了一个或多个操作。 这样的解决方案并没有显示出明显的增长(尽管看起来应该泛化了),但是并没有使基线恶化。 下图比较了具有混合(红色)和没有混合(蓝色)的PPO算法:顶部是训练期间的奖励,底部是情节的长度。


    图片

  5. 选择最佳的初始政策
    这项改进是最后的改进之一,对最终结果做出了非常重要的贡献。 在培训级别,对具有不同超参数的几种不同策略进行了培训。 在测试级别,对前几集进行了测试,并且为了进行进一步的培训,选择了针对该集提供最大测试奖励的策略。



巴洛塞


现在是关于尝试了什么的问题,但是“没有飞”。 毕竟,这不是隐藏内容的新SOTA文章。


  1. 网络体系结构更改: SELU激活 ,自我关注, SE块
  2. 神经进化
  3. 创建自己的声波水平-一切都准备就绪,但是时间不够
  4. 通过MAMLREPTILE进行元训练
  5. 整合多个模型并在使用重要性采样的每个模型测试期间进行进一步培训

总结


比赛结束3周后,OpenAI发布了结果 。 在另外11个额外创建的级别上,我们的团队在公开测试中从第8位跃升至第4位,并超越了OpenAI掩盖的基准。


图片

在第一个3ki中“飞起来”的主要区别是:


  1. 改进的动作系统(带有自己的按钮,删除了多余的按钮);
  2. 通过输入图像中的哈希值调查状态;
  3. 培训水平更高;

另外,我想指出的是,在这次比赛中,除了获得胜利之外,还积极鼓励他们描述自己的决定以及帮助其他参与者的材料-对此还有一个单独的提名。 这又增加了灯的竞争。


后记


就个人而言,我真的很喜欢这场比赛以及元学习主题。 在参与过程中,我结识了很多文章(甚至没有忘记其中的一些文章),并学到了许多希望将来应用的不同方法。


按照参加比赛的最佳传统,所有代码都可用并发布在github上

Source: https://habr.com/ru/post/zh-CN421585/


All Articles