返回列表

SaltyFish: Current 2nd place solution

409. Google Research Football with Manchester City F.C. | google-football

开始: 2020-09-28 结束: 2020-12-11 游戏AI AI大模型赛
SaltyFish:目前的第二名解决方案

SaltyFish:目前的第二名解决方案

作者:Hank (团队成员: Dharmaraja Hu, Niuhe, Hank)
比赛排名:第 2 名

非常高兴能参加 Kaggle 上的这场足球比赛!我们要感谢 Kaggle 团队曼城Google Research 为此付出的努力!看起来 gfootball 团队在 2020 年初发起了这项比赛,并计划在 ICML 上举行决赛。不幸的是,这是艰难的一年……希望大家一切都好。回到比赛,我们还要感谢所有的参赛者,正是你们让这场比赛变得精彩而激动人心!特别感谢 Wekick,你们的智能体真的令人印象深刻,我们也从你们那里学到了很多。

摘要

总的来说,我们通过结合 PVESelfplay(自我博弈),利用 强化学习 来训练我们的智能体。在 有限的计算资源 下,智能体很难在如此困难的环境(长时间视野和稀疏奖励)中从零开始学习(自我博弈)。通过先与简单机器人(difficulty_level = 0.05)对抗训练,然后与困难机器人(difficulty_level = 1.0)对抗训练直到收敛,我们的智能体在进攻方面获得了一些线索(例如,将球从后场运球到前场,射门技巧)。自我博弈阶段随后使智能体能够学习防守技巧,并通过学习传球技巧进一步增强进攻技巧。让我们深入了解一些细节。

算法

我们使用在我们的框架 RLEase 中实现的分布式 IMPALA。RLEase 是由 网易伏羲实验室 开发的高效强化学习库,它既包含了最先进的算法(如 IMPALA, APEX-rainbow, PPO, VDN, QMIX 等),又支持分布式训练、模型自动测试、模仿学习,并提供了简单的 API 来整合新的游戏环境。框架结构如下:

RLEase Structure

特征

我们首先尝试了主要基于绝对值的 simple115 包装器,结果发现它缺乏泛化能力。然后我们通过添加相对信息并将相关特征分组到一个头部,将其扩展为多头向量输入。此外,还使用了 手术 来添加额外的特征,因为在有限的资源下,从头开始训练既昂贵又不可行,就像 OpenAI Five 所做的那样。下图显示了多头向量输入的样子,其中蓝色列代表原始输入,红色列和文本代表手术部分。

Multi-head Vector Inputs

网络

我们使用了几个全连接层。见下图:

Network Architecture

动作

我们在不同的 'ball_owned_team' 模式(即 0、1 和 -1)下为算法使用不同的动作集。主要目的是忽略不必要的动作并减少探索空间。例如,当我们队的一名球员控球时,不需要选择 SLIDING(滑铲)动作。对于每种 'ball_owned_team' 模式,我们只需生成一个对应的合法/非法掩码向量,以指示 19 个动作中哪些可以或不可以被执行。策略网络的输出(即采取每个动作的概率)将根据掩码向量进行更新。我们列出每种 'ball_owned_team' 模式下的非法动作如下:

  • ball_owned_team = 0: SLIDING
  • ball_owned_team = 1: LONG_PASS, HIGH_PASS, SHORT_PASS, SHOT, DRIBBLE, STOP_DRIBBLE
  • ball_owned_team = -1: LONG_PASS, HIGH_PASS, SHORT_PASS, SHOT, DRIBBLE, STOP_DRIBBLE, SLIDING

虽然这种技巧可以通过避免不必要的动作来加速学习,但也使得我们的算法无法学习到一些

同比赛其他方案