强化学习作为深度学习的一个强大分支成就卓然,在电子游戏和仿真机器人等诸多场景中,皆能见其身影;强化学习甚至在阿尔法狗横扫人类围棋世界冠军的对决中发挥了不可替代的作用。但是一块「安全性」的乌云正降临在强化学习之上。有鉴于此,UC Berkeley 近日在其官方博客上发表了一篇题为《Constrained Policy Optimization》的文章,提出了一种提高强化学习安全性的新算法:约束型策略优化(CPO),希望能为强化学习走出实验室,安全可靠地迈向现实世界贡献一份价值。
深度强化学习已经在很难的控制问题上取得了卓越的成就:借助深度强化学习(deep RL),智能体(agent)已经学会了通过分析每个像素来打电子游戏,控制仿真实验和现实世界中的机器人,从示范中学习对象控制(object manipulation),甚至打败人类围棋冠军。我们希望能够在短期内把深度强化学习带出实验室,付诸实践,用于日常技术当中,比如无人机控制(UAV Control)和家用机器人。但是在此之前,我们不得不解决最为重要的问题:安全性。
我们最近研发了一种原则性很强的方法来把安全性需求和其它约束直接并入到一整族最新型的深度强化学习算法中。我们的方法——约束型策略优化(Constrained Policy Optimization——CPO),可以确保智能体在学习过程中的每一步都满足约束条件。具体来说,我们尝试满足成本方面的约束:设计者会给智能体应该避免的每一个结果都分配一个成本(cost)和一个限制(limit),而且智能体则会学着去使它的所有成本都保持在限制之下。
此类约束型强化学习方法面世已久,而且甚至已经在伯克利引出了与之密切相关的研究——概率型安全策略迁移(probalistically safe policy transfer)。但是 CPO 是首个让深度强化学习得以应用于一般情况下的约束型环境中的算法——而且,它是有理论上的性能保证的。
在我们的论文中,我们描述了一个运行 CPO 的高效方法,并且展示了在真实的机器人仿真中,当满足任务中的约束条件时,CPO 可成功训练神经网络智能体实现奖励(reward)最大化。
如果你有兴趣把 CPO 应用到你的约束型强化学习问题当中,我们的开源代码正应所需:https://github.com/jachiam/cpo
为什么我们需要安全性约束?
强化学习智能体的训练目标是最大化奖励信号,人类必须事先指定设计这一过程的范围。如果奖励信号没有被正确设计,智能体就会去学习非计划中的甚至是有害的行为。如果设计奖励函数很容易,这将不是问题,但不幸的是从根本上来讲,奖励函数设计很有挑战性;这就是采用约束(constraint)的关键动机所在。
让我们用一个基于真实用例的简化案例来说明:一个移动式机器人理应在一个安全区域内完成一些任务(比如说绕圈跑)。如果它离开安全区域的频率小于一定的预选阈值(pre-selected threshold),我们就认为机器人是「安全」的,否则为「不安全」。
只考虑奖励(为了跑得尽可能快)和约束(离开安全区域的频率),在约束型强化学习环境中描述此类问题并不难。但是对于标准的强化学习来讲,由于我们不得不单独通过奖励函数设计所有的行为,问题将会变得很难。错误的奖励设计也能够导致智能体过于畏首畏尾,
导致无效;或者过于风险偏好,
并因此导致危险(这里的「安全」区域在两个蓝色挡板之间)。
还有另外一个角度解释为什么标准强化学习方法不利于安全性:强化学习智能体是通过试错来进行学习的,他们在收敛前会探索很多不同策略。所以,即使我们设计了一个可在最优情况下引导智能体通向安全策略的奖励函数,还是可能会在训练过程中导致不安全的探索行为。
像例子中的那样,如果失效模式极少,而且发生频率比预选频率低,现实当中的自主系统(autonomous systems)通常就会被认为是安全的。这也促进了约束型强化学习的形成,即以自然方式把安全性并入强化学习。此外,我们也想保证每一个探索策略都是满足约束(constraint-satisfying)的。CPO 的设计就是用来满足这些需求的。将 CPO 用于上述例子的效果如下:
CPO:约束型强化学习的本地策略搜索
本地策略搜索是一个学习策略的标准方法,我们对策略进行迭代改善,直到其收敛于最优值。这种搜索之所以叫做「本地」(local)是因为在某种意义上每个新策略都被要求与旧策略相似。举个例子,策略梯度(policy gradient)方法是一种依靠仅在性能梯度方向上走小步从而使策略保持相似的本地策略搜索算法。
如果你对策略梯度不熟悉,这里有一个 Andrej Karpathy 的精妙介绍 :http://karpathy.github.io/2016/05/31/rl/。
信任区域方法(Trust region method)是另一种本地策略搜索算法。它们也使用了策略梯度,但是针对策略更新方式其制定了一个特殊要求:每一个新策略都必须在平均 KL -散度(average KL-divergence)上靠近旧策略。KL -散度是一种用来衡量两种概率分布间存在多大差别的标准,而且由于策略输出的是行为的分布,KL -散度是一种测量策略间「距离」的自然方式。
事实上,信任区域方法在训练神经网络策略时可以有极佳表现,并且可以避免标准策略梯度方法有时会遭受的性能崩溃的问题(见 Duan et al., 2016)。
CPO 是一个用于约束型强化学习的信任区域方法,它在每一次策略更新中都近似地强制执行约束条件。它使用约束的近似值来预测,在任意给定的更新之后,约束成本会改变多少,接着选择会最大化提升性能并能够将约束成本保持在其限制之下的更新方式。
在上图中,我们说明了在 CPO 的实现中都发生了什么。我们从当前一次策略迭代开始,即图中那颗星的位置。策略梯度(深蓝色箭头)指向奖励增加的方向。在考虑安全性约束之前,最佳步骤在 KL 信任区域(蓝色椭圆形)的边缘上。但是我们只想涉足满足约束条件的区域(浅绿色半区),因此这一次我们仍然尽可能多地增加奖励,只不过同时保证安全。CPO 更新之后我们的新策略是最后的那颗星。
我们也有一些不错的理论成果来补足实践的算法:我们推导出了一个平均 KL -散度近似值质量的新界限。这使得我们得以证明一般性信任区域方法有效性,解释了其效果有多好,并使我们确定了在 CPO 更新之后有可能发生的约束违规的下限。
关于实际性能:我们发现 CPO 卓有成效。同时在圆圈任务(上文已讨论)和一个更复杂的收集任务中(其中智能体要收集绿色苹果,并被约束以避开红色炸弹),CPO 学到了很好的策略,并在整个训练中都近似地满足约束。
CPO 学习到了一个策略,可以尽可能多地搜集绿色苹果,同时被约束不得在每条轨迹上搜集多于平均 0.1 个红色炸弹。
下一步
我们希望 CPO 能为强化学习走出实验室,安全可靠地迈向现实世界贡献一份价值。在我们开展新研究时,出现了大量关于如何应用 CPO 的有趣想法,我们也邀请了更大范围的研究社区参与讨论并扩展应用景。例如:
- 把 CPO 用于安全性迁移学习,从而把在模拟中习得的策略推进到现实世界。
- 使用 CPO 从不安全的示范中学习安全性策略。
- 提升 CPO 的样本效率以最小化智能体所犯错误的数量(需存在一定错误,否则智能体无法学习)。
参考文献
[1] Asynchronous Methods for Deep Reinforcement Learning:https://arxiv.org/abs/1602.01783
[2] Trust Region Policy Optimization:https://arxiv.org/abs/1502.05477
[3] Sensorimotor Deep Learning:http://rll.berkeley.edu/deeplearningrobotics/
[4] Robots that Learn:https://blog.openai.com/robots-that-learn/
[5] Mastering the game of Go with Deep Neural Networks & Tree Search:https://deepmind.com/research/publications/mastering-game-go-deep-neural-networks-tree-search/
[6] Constrained Markov Decision Processes:http://www-sop.inria.fr/members/Eitan.Altman/TEMP/h.pdf
[7] Probabilistically Safe Policy Transfer:https://arxiv.org/abs/1705.05394
[8] Constrained Policy Optimization:https://arxiv.org/abs/1705.10528
[9] Faulty Reward Functions in the Wild:https://blog.openai.com/faulty-reward-functions/
[10] Trust Region Policy Optimization:https://arxiv.org/abs/1502.05477
[11] Kullback–Leibler divergence:https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence
[12] Benchmarking Deep Reinforcement Learning for Continuous Control:https://arxiv.org/abs/1604.06778