Dota 2 with Large Scale Deep Reinforcement Learning
OpenAI, :, Christopher Berner, Greg Brockman, Brooke Chan, Vicki Cheung, Przemysław Dębiak, Christy Dennison, David Farhi, Quirin Fischer, Shariq Hashme, Chris Hesse, Rafal Józefowicz, Scott Gray, Catherine Olsson, Jakub Pachocki, Michael Petrov, Henrique P. d. O. Pinto, Jonathan Raiman, Tim Salimans, Jeremy Schlatter, Jonas Schneider, Szymon Sidor, Ilya Sutskever, Jie Tang, Filip Wolski, Susan Zhang
cs.LG, stat.ML
2019-12-14
把近端策略优化放大到一亿五千万级参数、上千块 GPU 连续训练十个月,二比零击败刀塔世界冠军,公开赛七千余局胜率百分之九十九点四。
围棋、国际象棋的决策长度是几十到一两百步,观测也干净。Dota 2 一局约 45 分钟、30 帧每秒,智能体每 4 帧动一次,大约 2 万步;雾战造成部分可观测;每步观测约 1.6 万个数,合法动作 8 千到 8 万。这些是更接近真实世界的连续、长程、不完美信息问题。OpenAI 的命题是:不必发明新算法,把已有的强化学习放大到前所未有的规模,就能在电竞世界冠军水平上打过人类。
五个英雄各跑一份相同参数的策略,核心是一层 4096 维 LSTM,约 1.59 亿参数,LSTM 占 84%。观测不是屏幕像素,而是人类能看到的语义数组,渲染全部训练对局做不到。动作空间离散化。出装顺序、信使、备用物品由脚本处理,作者认为智能体最终自己做会更强,但没做到这一步就已经超人类。
优化是 PPO 加 GAE(λ=0.95),截断 BPTT 窗口 16 步。峰值有效 batch 约 294 万时间步(每 GPU 120 条×16 步×最多 1536 张优化 GPU),大约每 2 秒吃掉 200 万帧。80% 对局打最新自己,20% 打旧策略。Rollout 以约 0.5 倍实时运行,每 256 步(约 34 秒游戏时间)就往优化器送数据,目标是 staleness 0 到 1、sample reuse 约 1。奖励在胜负之外加了击杀、经济和对称化,项目开始时按队员对游戏的熟悉程度定一次,版本更新只做小改。
环境、观测、网络结构在十个月里不停改。从零重训付不起。作者做了一套称为 surgery 的离线变换:在形状和语义变化后,尽量保持旧策略作为函数不变,再在新环境里接着训。大约每两周一次,全程二十多次。
限制:英雄池 17/117;不支持幻象符文、支配头盔等「同时操多个单位」的物品。
2018 年 6 月 30 日到 2019 年 4 月 22 日,算力 770±50 PFlops/s·天。2019 年 4 月 13 日 2-0 击败当时世界冠军 OG。公开赛 OpenAI Five Arena 对 3193 支队伍打了 7257 局,胜率 99.4%(含人类弃赛记胜),29 支队伍赢过共 42 局。相对 AlphaGo,batch 大约大 50 到 150 倍,模型大约大 20 倍,训练时间大约长 25 倍。平均反应 217 ms,对照人类视觉反应约 250 ms。
从零复跑的 Rerun 用最终环境和代码,两个月、150±5 PFlops/s·天,对 Five 胜率超过 98%,说明 surgery 保住了迭代速度,但最终天花板不如一次训对。早期消融:batch 从 12.3 万加到 98.3 万,到 TrueSkill 175 大约 2.5 倍加速,不到线性。数据陈旧约 8 个版本就会明显变慢;同一条样本复用 2 到 3 次大约慢一倍,复用 8 次可能训不出能打的策略。把折扣视野从 180 秒拉到 6–12 分钟,已训好的智能体还会再涨胜率,说明优化器能把信用分配做到数分钟后。
这篇把「规模」写成可复述的工程:batch、模型、墙钟、数据新鲜度、样本复用,每一项都有消融。surgery 是给「环境还在开发、实验还在改」的长期训练准备的工具,不是理论贡献。硬编码出装说明超人类不必等动作空间完全开放。和同期 AlphaStar 对照:Five 用自博弈,StarCraft 用联盟;Five 的价值网络不看隐藏信息,作者把「价值函数看全信息」列为值得试的方向。
对今天做长程智能体的人,可直接搬走的是:异步收集时 staleness 和 reuse 必须盯死;horizon 要长到任务的真实时间尺度;环境还在变就不要每次从零开始。
英雄池和多单位物品被砍掉,不是完整 Dota。语义观测让模型每步同时看见人类要点击才看得到的信息,作者认为偏差不大,没有对照实验。出装脚本把一部分战略从学习里拿掉了。奖励塑形按游戏直觉一次敲定,打法明显偏团战,和人类习惯不同。Rerun 更强,说明 surgery 路径有性能税。TrueSkill 用最终环境和最终动作空间回测早期模型,对早期不公平。很多结构和超参是历史原因,没有完整消融。