记录强化学习应用在MOBA类游戏场景下会遇到的一些问题,希望可以为大论文启发一些新的思路出来
Imitation learning
提纲
- SL的问题
- distributional shift
- multi-modal policy
- interaction with environment的成本问题
- GAIL系列工作:高方差,训练不稳定
- 高方差
SL/behavior cloning对于实际应用场景而言是最简单快捷的方法,然而由于distributional shift问题的存在,这种方法在MDP上没有任何理论保障,即使你是在应用场景下不在乎理论性质,除非expert demonstration的state可以铺满整个MDP的state空间,否则学出来的agent大概率是没有任何泛化能力的
另一个问题是对于连续动作空间的multi-modal policy,Sergey Levine在上CS294-112课程时曾经给出一张非常形象生动的图片来说明这个问题
网上很多人吐槽过王者荣耀的AI会在塔前有规律地反复徘徊,凭借这点可以很轻松地判断出一个player是AI还是人类——这个问题很大程度上就来源于multi-modal policy。连续空间的regression会倾向于学习到训练数据中的均值,然而mutli-modal policy下均值可能并不是一个好的policy
那么是否可以通过把连续的动作空间强行切成离散的来避免这个问题呢?In theory,这样做会破坏掉MDP中action
space本来的性质,其次这样的做法可能会带来额外的高方差 [参见另一篇blog],但是in practice这样的做法其实效果不差
此外一个根深蒂固但大部分时间里都被RL研究者们无视的问题是与environment交互的成本与效率问题,我们在gym或Atari上做实验的时候可以无限采样,效率低就开多线程或者多进程跑,然而现实中很多场景下,agent与environeent交互都是受制于各种成本的。目前为止几乎所有的方法都必须要和environment去做交互,才可以保障agent的稳定训练。在此基础上,2018年AILab发在NIPS的文章Exponentially Weighted Imitation Learning for Batched Historical Data另辟蹊径地提出了一个问题:如果我们有很多的triplet形式的historical data ,但无法与environment做交互,是否还可以做imitation learning呢?
如果我们用behavior cloning的方法直接训练,实际上很大程度上浪费掉了训练数据中reward signal中包含的信息,这篇文章的方法是用来对每条训练数据加权,从直觉上来讲,这样的做法会鼓励模型去更多地学习带来带来高advantage值的动作。不可思议的是,这么简单一个方法居然有theoretical improvement guarantee
文章最后提到这种方法也可以用来做纯RL模式的学习,即没有人类数据的情况下,用agent与环境交互的数据训练agent,然后再把agent放到环境里交互,这种方法是纯off-policy的,我没有看出来这种off-policy的方法比SAC,IMPALA之类的方法好在哪里
Imitation learning中另一类不得不提的方法是GAIL,这个方法自从被提出之后一直在research中备受关注,其中一个原因在于其理论框架非常有美感:原始GAIL文章中,作者针对inverse RL需要在学习reward的内循环中训练RL agent问题,理论证明了是occupancy measure matching的对偶问题,因而imitation learning可以直接套用GAN的框架,通过交替迭代policy与discriminator来优化;后续AIRL中又证明了当特定参数化形式的discriminator下(类似于reward shaping的形式),AIRL可以在训练中逐渐恢复出真正的reward+一个constant;2017年大热的WGAN和WGAN-GP也为GAIL类方法的训练不稳定问题提出了新的解决方案;继info-GAN之后的info-GAIL结合了PGM与GAIL,为unsupervised inference of expert demonstration提供了信息论基础
然而真正落地的application中,据我所知完全没人用这类看起来很高大上的方法,原因在于:
第一,这类Imitation learning方法几乎从未outperform hand-crafted reward,哪怕有时这种hand-crafted reward很粗糙。在ICLR-2019的variational information bottleneck文章中,作者总结
One advantage of adversarial methods is that by leveraging a discriminator in
place of a reward function, they can be applied to imitate skills where reward functions can be
difficult to engineer. However, the performance of policies trained through adversarial methods still
falls short of those produced by manually designed reward functions.
第二,GAN本身就是出了名的不稳定难训练,而这种不稳定再加上RL的高方差、高样本复杂度问题,可以说是把近年来机器学习领域内最令人头疼的问题汇集到了同一套算法中。在此基础上加时序套RNN是一个简单但通用的思路
TODO:
补references
第三,representation问题
Hybrid action space
- Hierachical RL: unsupervised inference of macro-strategy from micro-policy
- Representation of state space
- Action embedding?
这点上MOBA-games与mujoco有点类似:action space不是一个动作,而是很多个动作的组合。例如在王者荣耀中某一时刻下的action,有的维度代表的是放哪个技能,有的维度代表的是方向型技能的施法方向,有的维度代表的是当前英雄的移动方向
Reward
Long term delayed reward
如果用类似AlphaGo的方式,只采用最后输赢作为binary reward,每个trajectory将会非常非常长,可以参考OpenAI这篇blog,里面有提到他们用这种binary reward来训练1v1的bot
We ran an experiment where we only rewarded the agent for winning or losing, and it trained an order of magnitude slower and somewhat plateaued in the middle, in contrast to the smooth learning curves we usually see.
[站外图片上传中...(image-edd554-1560067740451)]
与之对立,图中橙色dense的曲线对应的方法是人工定义reward。虽然我目前还没做过这方面的工作,想来应该是非常琐碎复杂的——因为reward是RL最终优化的目标,reward稍微改变一点点都可能会完全改变MDP优化的整体结构
Adversarial robustness
OpenAI有关他们Dota2项目的blog里面提到了若干他们的方法中用到的trick,其中值得一提的是他们的agent在1v1比赛中击败人类的过程:
In March 2017, our first agent defeated bots but got confused against humans.
很容易想到,传统的脚本AI会输给人类的主要原因就在于AI的行为模式是比较单一的,由于人类更擅长从AI的行为模式中总结与推理,一旦人类玩家摸清楚了AI的行为规律,接下来的时间里就可以轻松打败AI
To force exploration in strategy space, during training (and only during training) we randomized the properties (health, speed, start level, etc.) of the units, and it began beating humans. Later on, when a test player was consistently beating our 1v1 bot, we increased our training randomizations and the test player started to lose.
OpenAI还指出这种randomization的技巧也被他们的机器人团队广泛采用
经验上考虑的话,这种方法的有效性是值得商榷的,因为这意味着我们要在高维连续的空间中进行各向同性的随机搜索,意味着通过这样的randomization的得到state,势必有很多都是无效的,不属于问题本来所处的MDP空间里。对“各向同性”进行修正的话,一个思路是结合adversarial training,举个例子,原本的RL目标可以写成discounted future state distribution下对reward的数学期望:
那么distributional adversarial learning的思路是在一个probability metric space中允许discounted future state distribution在一个bounded subset中最小化reward
其中 为任意符合距离定义的distance measure,因此我们会关心在什么样的distance measure下上面的minimax问题为tractable,可以考虑的两个思路
- Jensen Shannon divergence:或许需要引入FIM来解决一些问题,配合PPO类的方法或许会有新的insight出现
- Wasserstein distance:这个确定是可以推出可行解的,我们可以比较容易地在Sinha et al. 给出的结果上引申:
其中 为Wasserstein distance中的cost function,约等号的形式可以由TRPO中的 monotonic improvement lower bound 推出
但这个优化在应用的时候存在一个问题:我们采用优化的方式而不是纯随机化,是为了让模型在explore MDP中的未知世界时,对那些会对自身造成很大影响的state做专门的优化;但问题在于RL问题中,我们实际上并没有direct access to the discounted future state distribution,实际的adversarial RL问题中,并不会自己改变,真正会改变的因素包括
- Oppnent strategy: 如果对手是人类玩家,人类玩家会从你的policy中推理与总结,并根据你的policy动态地调整policy
- The bias between the game simulator and reality: 常见于robotics问题中,做robotics的人有时会遇到的一个问题是模型在simulator上跑的很好,但在现实世界中效果却不尽人意
- Non-stationary MDP: 常见于推荐系统场景,虽然现在用RL做推荐的组很多,也有很多模型已经上线,但其实真正应用场景下的transition与训练时的transition大部分情况下是不相同的,推荐场景下的state distribution一般是会动态变化的
总结,以上三种情况的数学本质,是MDP中的transition kernel 会变,而RL问题的基本假设决定了我们无法直接获取任何 transition kernel 的知识(不考虑mode-based RL)
这种情况下,通过优化discounted future state distribution的minimax对偶,以此期望模型可以更加鲁棒,这种做法类似于隔靴搔痒
那么怎样做可以使得Wasserstein distance中的 cost function更有意义呢?