409. Google Research Football with Manchester City F.C. | google-football
非常高兴能参加 Kaggle 上的这场足球比赛!我们要感谢 Kaggle 团队、曼城和 Google Research 为此付出的努力!看起来 gfootball 团队在 2020 年初发起了这项比赛,并计划在 ICML 上举行决赛。不幸的是,这是艰难的一年……希望大家一切都好。回到比赛,我们还要感谢所有的参赛者,正是你们让这场比赛变得精彩而激动人心!特别感谢 Wekick,你们的智能体真的令人印象深刻,我们也从你们那里学到了很多。
总的来说,我们通过结合 PVE 和 Selfplay(自我博弈),利用 强化学习 来训练我们的智能体。在 有限的计算资源 下,智能体很难在如此困难的环境(长时间视野和稀疏奖励)中从零开始学习(自我博弈)。通过先与简单机器人(difficulty_level = 0.05)对抗训练,然后与困难机器人(difficulty_level = 1.0)对抗训练直到收敛,我们的智能体在进攻方面获得了一些线索(例如,将球从后场运球到前场,射门技巧)。自我博弈阶段随后使智能体能够学习防守技巧,并通过学习传球技巧进一步增强进攻技巧。让我们深入了解一些细节。
我们使用在我们的框架 RLEase 中实现的分布式 IMPALA。RLEase 是由 网易伏羲实验室 开发的高效强化学习库,它既包含了最先进的算法(如 IMPALA, APEX-rainbow, PPO, VDN, QMIX 等),又支持分布式训练、模型自动测试、模仿学习,并提供了简单的 API 来整合新的游戏环境。框架结构如下:
我们首先尝试了主要基于绝对值的 simple115 包装器,结果发现它缺乏泛化能力。然后我们通过添加相对信息并将相关特征分组到一个头部,将其扩展为多头向量输入。此外,还使用了 手术 来添加额外的特征,因为在有限的资源下,从头开始训练既昂贵又不可行,就像 OpenAI Five 所做的那样。下图显示了多头向量输入的样子,其中蓝色列代表原始输入,红色列和文本代表手术部分。
我们使用了几个全连接层。见下图:
我们在不同的 'ball_owned_team' 模式(即 0、1 和 -1)下为算法使用不同的动作集。主要目的是忽略不必要的动作并减少探索空间。例如,当我们队的一名球员控球时,不需要选择 SLIDING(滑铲)动作。对于每种 'ball_owned_team' 模式,我们只需生成一个对应的合法/非法掩码向量,以指示 19 个动作中哪些可以或不可以被执行。策略网络的输出(即采取每个动作的概率)将根据掩码向量进行更新。我们列出每种 'ball_owned_team' 模式下的非法动作如下:
虽然这种技巧可以通过避免不必要的动作来加速学习,但也使得我们的算法无法学习到一些