转自 知乎 YukiRain
当今RL的问题很多,诸如收敛看运气效果看天命之类的,之前有很多大佬也有吐槽过,本渣也在某个回答里吐槽过(https://www.zhihu.com/question/369263409/answer/995669697)。根据个人经验来讲,目前大部分RL paper使用的主要benchmark,比如MuJoCo或者Atari,实际上都是偏弱的(更不用说前两年MARL用的multiagent-particle-envs),在偏弱的实验环境里,模型训练出来在那边跑一跑,看起来结果尚可,实际很多模型的本质问题暴露的不明显,暴露得不明显就不会引起community的广泛关注,相关的研究也就会比较少,难成体系。
很不幸,本文要讨论的RL泛化能力问题,就是这样的一个问题。
为啥RL需要泛化?
绝大多数RL的基础都是MDP,MDP和supervised learning最本质的区别,就是前者解决的是一个满足Markov性质的环境上的reward最大化问题,所以一开始问题的前提假设中就只有一个固定的环境,听起来,泛化能力问题似乎应该是一个独属于supervised learning的问题,至少在RL的理论层面,是不存在测试环境与训练环境不同的问题的。
但实际上,只要你尝试在真正的应用场景中尝试过RL,就会发现这是一个无法回避的问题,我去年在公司实习期间,很多实际做过RL应用的同事都会讲到的一个重要经验就是:RL真的很容易过拟合。由于学术界相对研究比较少,应用中就会出现五花八门的问题,随之而来五花八门的解决方案:
案例一,众所周知DeepMind和OpenAI都做游戏AI,一个做星际一个做Dota,为了训练出一个超过人类水平的AI,两家共同的思路就是self-play,但是实际上self-play会遇到训练时过拟合于对手策略的问题,因为实际部署时会遇到各种各样奇葩的对手策略,训练时从来没有见过奇葩对手的模型会严重翻车
- DeepMind早早地就预见到了这个问题,在17年 A Unified Game-Theoretic Approach to Multiagent Reinforcement Learning 这篇文章里面就指出,即使是在非常简单的环境,self-play训练出的模型也会严重过拟合于对手策略,所以做星际的时候他们压根就没想过要用一个模型解决所有问题,而是要引入game theory去做一个zero-sum Markov game中找Nash equilibrium的优化,后续这个思路在另一篇ICML的文章 Open-ended Learning in Symmetric Zero-sum Games 又进一步得到了补全;所以后来AlphaStar的训练中,他们用了数量惊人的算力资源,搞了一个AlphaLeague,用类似population-based training的方式分阶段训练——考虑目前绝大多数公司的算力情况,暂时,这套方法对其他公司的实践不具有太大的指导意义
- 在 这篇OpenAI Five 的博客中,OpenAI表示2017年,他们在模型训练的过程中加入了环境参数的随机化后,模型开始在1v1场景下超越人类水平,后续这种随机化技巧广泛使用在他们的5v5模型,甚至是机器人模型的训练中
案例二,robotics训练,因为机器人机械臂有使用寿命的限制,目前常用的一种方式是在物理仿真模拟环境中训练,模型收敛后部署到现实世界中,然而模拟器不大可能建模出现实世界中所有的变量,实际上模拟器中表现良好的模型,在现实世界的表现会有所下降。目前主要考虑两种解决方案:一是在训练期在模拟器中加入随机化,二是认为从模拟器到现实是一个迁移学习的问题,以sim2real为关键词搜索,这方面的研究非常多,这里简单列举两篇
- Tzeng E, Devin C, Hoffman J, et al. Towards adapting deep visuomotor representations from simulated to real environments[DB/OL]. arXiv:1511.07111.
- Peng X B, Andrychowicz M, Zaremba W, et al. Sim-to-real transfer of robotic control with dynamics randomization[C]. IEEE International Conference on Robotics and Automation, 2018: 1-8.
- Gupta A, Devin C, Liu Y X, et al. Learning invariant feature spaces to transfer skills with reinforcement learning[DB/OL]. arXiv:1703.02949.
案例三,环境动态表现出高度non-stationary特性的任务,如推荐系统、定价系统、交易系统等(应该是没有哪个公司真的在交易系统里上RL的吧),这些任务的一个共同特点是业务敏感,绝对不会真的让模型在训练时与环境交互,一般的做法是线上开一个子进程去收集样本回来做完全意义上的off-policy训练(就此延伸出去的一个研究方向叫batch reinforcement learning,不过这已经不在本文讨论范围内了)。由于环境动态高度非平稳,三个月前训练的模型可能现在已经不work了,据我了解到的一点点情况,目前工业界没啥太好的办法,唯不停地重新训练而已
缺乏泛化表现在哪些方面?
基本上大多数研究RL generalization或robustness的文章里都会涉及到,举一些代表性的例子:
过拟合于状态特征Observational Overfitting in Reinforcement Learningarxiv.org
动作空间的随机性Action Robust Reinforcement Learning and Applications in Continuous Controlarxiv.org
连续控制任务上的过拟合A Dissection of Overfitting and Generalization in Continuous Reinforcement Learningarxiv.org
死记硬背型过拟合A Study on Overfitting in Deep Reinforcement Learningarxiv.orgQuantifying Generalization in Reinforcement Learningopenai.com
DRL的过拟合是一个属于RL的问题还是一个属于DL的问题?
就目前的一些研究结果来看,答案可能是both。有关RL的过拟合,上面列举的一些文献已经能够一定程度上说明问题,这里主要说说DL。
传统machine learning中人们就常用各种正则项来抑制过拟合,最典型的应该是L2正则,而近些年RL领域中也有若干paper研究正则项的影响,比如今年ICLR Regularization Matters in Policy Optimization 作者称L2可以起到比entropy regularization更好的效果,DL里常用的dropout可以为off-policy训练带来一些正面的效果(虽然最后被reject掉了);而 Generalization and Regularization in DQN 一文中作者称,模型训练到后期,训练环境上模型能力的上升同时也意味着泛化能力的下降,而L2正则可以找到一个较好的平衡点,类似于supervised learning里面L2与early stop的等价关系。
Does robust optimization work for RL generalization?
学术界中,robust optimization(以下简称RO)是一个比较容易想到的解决方案,在早期RL研究者们还聚焦于各种MDP数学意义上的tractability的时候,就已经有一些工作研究在不完美、或者包含uncertainty的环境动态的基础上进行优化,就此延伸出包括robust MDP、risk sensitive等思路:
- Bart van den Broek, Wim Wiegerinck, and Hilbert J. Kappen. Risk sensitive path integral control. In UAI, 2010.
- Arnab Nilim and Laurent El Ghaoui. Robust control of markov decision processes with uncertain transition matrices.Operations Research, 53(5):780–798, 2005
- Wolfram Wiesemann, Daniel Kuhn, and Berc Rustem. Robust markov decision processes. Mathematics of Operations Research, 38(1):153–183, 2013.
- Yun Shen, Michael J Tobia, Tobias Sommer, and Klaus Obermayer. Risk-sensitive reinforcement learning. Neural computation, 26(7):1298–1328, 2014.
- Yinlam Chow, Aviv Tamar, Shie Mannor, and Marco Pavone. Risk-sensitive and robust decision-making: a cvar optimization approach. In Advances in Neural Information Pro-cessing Systems, pages 1522–1530, 2015.
进入深度学习时代以后,最早的代表性工作应该是RARL,其优化目标是total reward的CVaR,最终在训练中引入了zero-sum Markov game来提升robustness,总体来说是比较漂亮的一个方法,后来的很多文章都沿用了RARL的框架Robust Adversarial Reinforcement Learningarxiv.org
如果想让模型对环境动态具有一定的robustness,那么就应该针对环境动态设计uncertainty set来做RO,比如(第一篇被reject过)Wasserstein robust reinforcement learningarxiv.orgRobust Reinforcement Learning for Continuous Control with Model Misspecificationopenreview.net
有从RO角度做的,就一定会有从Distributionally Robust Optimization的角度做的(这篇技术上是用DRO做的,但最终做的任务是safe exploration,个人认为也可以算到RO的工作类别中,此外这篇是workshop)Distributionally Robust Reinforcement Learningopenreview.net
sim2real、环境随机化与CVaR大杂烩的思路EPOpt: Learning Robust Neural Network Policies Using Model Ensemblesarxiv.org
以及今年ICLR一篇在RARL基础上做改进的文章,最终惨遭rejectRobust Reinforcement Learning via Adversarial Training with Langevin Dynamicsopenreview.net
说到RO,大概会有些人动supervised learning里面adversarial examples的主意,但是将adversarial examples的思路直接引入RL并不一定是trivially correct的,目前有数量较少的几篇文章在这个思路上做了简单尝试,个人对这个思路的尝试报怀疑态度
- Sinha A, Namkoong H, Duchi J. Certifying some distributional robustness with principled adversarial training[DB/OL]. arXiv:1710.10571.(DRO优化的文章,思路可以看看,但只在最后一小节提到可以用于robust MDP,个人做实验发现对复杂任务完全不work)
- Pattanaik A, Tang Z, Liu S, et al. Robust deep reinforcement learning with adversarial attacks[C]. International Joint Conference on Autonomous Agents and Multi-agent Systems, 2018: 2040-2042.(提出了一种将对抗样本引入DDPG训练的思路,相当于采用经对抗扰动后最差的policy做off-policy训练,导致收敛速度非常慢)
- Huang S, Papernot N, Goodfellow I, et al. Adversarial attacks on neural network policies[J]. arXiv preprint arXiv:1702.02284, 2017.(虽然作者列表大神云集,但个人认为这篇没有带来什么新的insight,不推荐)
- Ilahi I, Usama M, Qadir J, et al. Challenges and Countermeasures for Adversarial Attacks on Deep Reinforcement Learning[J]. arXiv preprint arXiv:2001.09684, 2020.(最近挂上ArXiv的一篇survey)
解决方案归类?
总结一下上面提到的几类方法
- Robust optimization
- environmental randomization
- heuristic regularization
- sim2real (only applicable for robotics)
目前学术界对RL泛化问题的研究实际上很难完全分类,因为目前鲜有能构成体系的研究工作,提出的各种解决方案颇有东一榔头西一棒槌之感,下面列两篇无法分类到以上任何类别的工作Improving Generalization in Meta Reinforcement Learning using Neural Objectivesopenreview.net
第一篇的motivation很有意思,传统的policy gradient类方法都致力于直接优化最终的total reward目标函数,而作者认为在单独一个环境中优化目标函数来提升policy会产生过拟合,所以作者引入了一个meta-learner来针对不同的环境来学习目标函数,针对meta-learner来分别优化每个环境上的policy,这样就可以做到完全解耦合目标函数与policy;此外本文也是目前为止很少见的在完全不同的环境动态上泛化的文章On the Generalization Gap in Reparameterizable Reinforcement Learningarxiv.org
第二篇是RL泛化问题上为数不多的理论文章之一,用finite sample analysis做分析的,值得一读,缺点是只能用于on-policy和reparameterizable state的情况
你说的这个环境随机化,它香吗?
目前的工业应用中,环境加随机化可能是使用最广泛的解决方案,在18年 Assessing Generalization in Deep Reinforcement Learning 一文中,作者基于若干组MuJoCo的实验,声称环境加随机化是目前为止提升泛化能力最有效的方法;但 A Study on Overfitting in Deep Reinforcement Learning 在迷宫环境上的实验则得出了完全相反的结论,作者称RL训练出的模型会死记硬背,随机化技巧无法避免RL模型的过拟合
那么,这个环境随机化,它真的那么香吗?
首先一个比较容易想到的问题,环境复杂度的问题:加入随机化后环境的数量会随随机变量数量的上升而指数上升,今年ICLR就有审稿人提出了这一质疑:
If there are, e.g., 20 parameters, and one picks 3 values for each, there are 3^20 variations of the environment. This exponential growth seems problematic, which is also mentioned by R3.
环境复杂度的问题会进一步提升训练的复杂度:加入环境随机化后,模型训练达到收敛所需的样本量实际上也显著上升了,由于其他论文里都不怎么提,这里以TD3为baseline放一点点自己的实验图作为证据(忽略绿色曲线),这里可以看到HalfCheetah-v2环境上,加入了环境随机的模型用了大约三倍的iteration才达到了原始版本TD3的水平
从上面的图中还可以看出一个新的问题:方差问题。加入环境随机化以后,模型表现无论是在训练环境中,还是测试环境中,表现出的方差要大于在单一环境上训练,这也与本渣渣去年在公司实习期间的一些实验结论一致,当时的结论是随机化训练的方差会比只在一个固定环境上训练高出若干个数量级
对于加入随机化以后过度探索的问题,OpenAI提出过一个不错的解决思路(感谢评论区大佬提醒)Solving Rubik’s Cube with a Robot Handopenai.com
Difficulties
理论层面,由于RL本身的理论建模中不存在泛化问题,目前学术界的研究大部分都是empirical的工作,理论性文章很少,上面列举的唯一一篇理论paper的假设条件还离实践比较远。
实践层面,最大的困难来自于当前model-free RL高方差的尿性,开篇已经提到过,MuJoCo和Atari一类的环境对于RL泛化问题是比较弱的,如果你有机会在企业级别的场景下做RL实验,那么一定会在泛化方面有更深刻的体会
因此,在MuJoCo、Atari、或者是之前有作者用过的随机迷宫之类的环境中,如果你做出了某种提升,可能提升的幅度还不如代码层面优化换random seed或者reward scaling来的明显,今年ICLR就有一篇讲RL的code-level optimization的文章工作被accept,足以说明现在的RL研究者对reproducibility的殷切期盼Implementation Matters in Deep RL: A Case Study on PPO and TRPOopenreview.net
众所周知model-free RL换个seed或者做个reward scaling就可能让模型的表现从地下到天上,那么除非你的方法表现可以全方位碾压各种baseline,否则如何说明这种影响不是来源于seed之类的无关影响因素呢?