Safe Reinforcement Learning

人工智能 / 2022-10-23

Safe Reinforcement Learning


一、问题背景

为什么需要安全?

安全探索问题:在强化学习的探索过程中,智能体可能会尝试导致严重错误的危险行为。

​ 强化学习的训练过程本质是在不断试错,以找到一个最佳的行动策略。如果深度强化学习应用于现实世界,拥有即使在学习的探索过程中也安全的算法将非常重要——就像自动驾驶汽车可以在没有实际经历的情况下学习避免事故。

​ 考虑一个在工厂使用RL来学习如何组装部件的自动机械臂的例子。刚开始训练的时候,机械臂可能会随机乱打,毕竟它还不知道该做什么,但这可能会对在附近工作的人类造成安全风险,因为他们可能会被击中。

​ 对于像机械臂这样简单的例子,我们可以想出一些简单的方法来确保人类不受伤害,比如让他们远离伤害源:当人类离机械臂太近的时关闭机械臂,或者在机械臂周围设置一个物理屏障。但在更为一般的系统中,简单的物理干预并不总是可行的,我们需要考虑一些让智能体进行安全探索的方法。

如何保证安全?

带约束的强化学习:在普通强化学习的基础上,环境中除了智能体希望最大化的激励函数(Reward Function),还有智能体需要去约束的成本函数(Cost Function)。

​ 在一般的 RL 中,智能体学会的一切行为都基于激励函数的设计,而激励函数从根本上就很难针对一些需要权衡(trade-off)的因素进行设计。比如在 Safe RL 的问题中,我们很难定量地对优化目标安全性约束进行权衡,即无法给出二者在激励函数中的权重值。而带约束的 RL 算法能自动找出目标与约束间的权衡,在这类问题中比传统 RL 更优。

​ 考虑智能体控制一辆自动驾驶汽车,我们希望激励这个智能体从 A 点尽可能快地到达 B 点。但通常,我们也希望限制智能体的驾驶行为,以符合交通安全标准。

​ 不妨假设这辆车每完成一次驾驶任务就能赚一些钱,而每次交通事故都要缴纳罚金。在一般的 RL 中,一旦完成驾驶的奖励足够丰富,智能体甚至会选择无视部分事故风险,只为了尽可能快地完成任务。而在带约束的 RL 中,我们可以在训练开始时选择一个可接受的事故率,并不断调整事故罚款直到智能体可以满足该要求。


二、数学模型

​ 前面引入安全约束的方法其实就是把问题建模成了带约束的马尔可夫决策过程(Constrained Markov Decision Process,CMDP),因此 safe RL 的数学模型首先是从 CMDP 出发的。CMDP 的目标是使长期回报收益最大化,同时控制某些成本保持在它们的约束条件下,这里的成本通常指某一约束变量。

a)CMDP 模型

MDP 问题可以被定义为元组 (S,A,R,P,μ,γ)(S, A, R, P, \mu, \gamma),其中 SS 是状态集合,AA 是动作集合,RR 是回报函数,PP 是状态转移函数,μ\mu 是初始状态分布,γ\gamma 是对未来回报的折扣因子。在 MDP 中,智能体的行动策略 π\pi 可以被表示为在特定的状态 ss 下选择不同动作的概率分布,我们用 π(atst)\pi(a_t|s_t) 表示在 tt 时刻的状态 sts_t 下选择动作 ata_t 的概率。MDP 的目标是找到一个策略 $ \pi_{\theta} $,使得累积折扣回报取得最大值:

maxθJRπθ=Eτπθ[t=0γtR(st,at,st+1)]\max _{\theta} J_{R}^{\pi_{\theta}}=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=0}^{\infty} \gamma^{t} R\left(s_{t}, a_{t}, s_{t+1}\right)\right]

​ 其中 $ \tau=\left(s_{0}, a_{0}, s_{1}, a_{1} \ldots\right) $ 代表智能体的一条行动轨迹(trajectory), $ \tau \sim \pi_{\theta} $ 表示从 $ \pi_{\theta} $ 采样出的轨迹(智能体使用策略 $ \pi_{\theta} $ 进行决策时生成的行动轨迹,可以看作随机变量)。

CMDP 问题可以被定义为元组 $ (S, A, R, C, P, \mu, \gamma) $ - 使用了成本函数集合 $ C $ 来扩展 MDP(注意回报函数 RR 代表单个映射,成本函数集合 CC 是映射的集合,含有多个约束对象)。取决于不同的约束类型,成本函数 $ C_{i} \in C $ 被进行了某种方式的限制。当一个动作 $ a \in A $ 满足约束时,我们称之为可行的。CMDP 的目标就是找到一个策略 $ \pi_{\theta} $,让累积折扣回报取得最大值的同时,又能满足所有约束条件:

\max _{\theta} \ \ J_{R}^{\pi_{\theta}} \ , \\ s.t. \ \ a_{t} \ is \ feasible. \ \ \ \ \ \ \ \ \ \ \ \ \ \

​ 在最新的综述中,CMDP 问题被划分成了累积约束(Cumulative)与瞬时约束(Instantaneous)两类:

  • 累积约束是从开始游戏到当前时刻的所有成本的累加值或均值需要满足的约束条件;
  • 瞬时约束是每一步动作都需要保证的约束条件。

​ 这里引用上述综述中的图,可以看到对 CMDP 问题类型的清楚划分:

b)累积约束模型

累积约束要求成本函数值的累加值或均值限制在给定的范围内,其中累加值或均值是从开始游戏一直计算到当前时刻的。在这种问题中,一般考虑两类约束:一类是关于成本函数值的期望,另一类是关于成本信号的概率

关于期望的约束又可以分为折现累积约束和平均累积约束,二者的约束表达分别如下:

JCiπθ=Eτπθ[t=0γtCi(st,at,st+1)]ϵiJ_{C_{i}}^{\pi_{\theta}}=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\sum_{t=0}^{\infty} \gamma^{t} C_{i}\left(s_{t}, a_{t}, s_{t+1}\right)\right] \leq \epsilon_{i}

JCiπθ=Eτπθ[1Tt=0T1Ci(st,at,st+1)]ϵiJ_{C_{i}}^{\pi_{\theta}}=\mathbb{E}_{\tau \sim \pi_{\theta}}\left[\frac{1}{T} \sum_{t=0}^{T-1} C_{i}\left(s_{t}, a_{t}, s_{t+1}\right)\right] \leq \epsilon_{i}

关于概率的约束考虑的是累积约束违反约束的可能性,限制累积的成本信号超出阈值的概率低于某个极小值:

JCiπθ=P(tCi(st,at,st+1)η)ϵiJ_{C_{i}}^{\pi_{\theta}}=P\left(\sum_{t} C_{i}\left(s_{t}, a_{t}, s_{t+1}\right) \geq \eta\right) \leq \epsilon_{i}

​ 在有累积约束的 CMDP 问题中,我们的目标是在满足这些累积约束条件的情况下,找到使折现回报函数值最大化的策略:

maxθJRπθs.t.JCiπθϵi\max_{\theta} \quad J_{R}^{\pi_{\theta}} \\ s.t. \quad J_{C_{i}}^{\pi_{\theta}} \leq \epsilon_{i}

c)瞬时约束模型

瞬时约束要求在每一步行动中,智能体的动作、状态或成本函数值都能满足约束条件。它可以被分为显式隐式两种约束。显式约束就是指约束条件有闭合的数学表达式,这类约束可以针对具体的动作进行量化隐式约束是指约束条件无法用精确的表达式来建模,通常是因为系统过于复杂,它们通常考虑的是动作被执行后的影响

​ 这类问题可以直接被建模为:

maxθJRπθs.t.Ci(st,at,st+1)ωi\max _{\theta} \quad J_{R}^{\pi_{\theta}} \\ s.t. \quad C_{i}\left(s_{t}, a_{t}, s_{t+1}\right) \leq \omega_{i}


三、研究方向

a)修改回报函数

​ 这类方法最基本思想的就是 Reward Sharping,它证明了向回报函数中加入某种形式的额外项不会影响收敛目标,并且通过合适的调参还能优化收敛性能。最简单的 CMDP 求解思路就是向回报函数中加入关于约束的惩罚项,用 $ r_{new} = r - \alpha * c$ 作为 RL 算法的奖励,不过通常 Reward Shaping 方法差到只能作为 Baseline 来使用

Reward Constrained Policy Optimization(RCPO)基于 Actor-Critic 网络,粗略看上去就是将关于约束的惩罚加到了回报函数中,但它使用了更加靠谱的方法来确定惩罚项的系数。RCPO 将 CMDP 对偶方程的对偶变量 λ\lambda 作为惩罚项的系数,并设计了 λ\lambdaθ\theta 的更新策略。在每一次迭代中,RCPO 用 θ\theta 的更新策略来更新 Actor 网络,同时更新 Critic 网络,等到一局游戏结束时,还会更新一次 λ\lambda 参数,以自动调整惩罚项的系数。需要注意的是,满足 Crtic 网络的更新步伐 > θ\theta 的步伐 > λ\lambda 的步伐,算法才能有效收敛。

b)外部辅助

Safety Layer

Safe Exploration in Continuous Action Spaces 使用一个神经网络来预测新策略的成本值,从而能够在不对策略进行采样的情况下预知它对约束的满足情况,然后基于该神经网络建立了一个安全层,以修正新策略中可能导致违约的部分。安全层的修正方式是在一次只有一个约束被激活(约束条件取等)的假设下,将对偶式进行简单变换得到的。

Resource Constrained Deep Reinforcement Learning 讨论的是显式瞬时约束问题的一种特例,通常用在资源分配问题中。它使用一种修改后的 softmax 函数作为安全层,能够直接将根据策略产生的动作映射到可行空间内,如果应用在 DDPG 等神经网络中,该安全层将参与神经网络学习过程中的反响传递。同时,该论文也提出了一个近似的 OptLayer 方法,通过加入 ApprOpt 层来一次性处理多组不同约束,并且十分高效。

​ 不同于其他方法,上述两个安全层算法针对的是瞬时约束(Instantaneous Constraints)的情况,也就是要求每一步动作都满足约束条件,而 CPO 等常用算法针对的是累积约束(Cumulative Constraints)

人工干预

Trial without error: Towards safe reinforcement learning via human intervention 训练了一个 imitation learner 来模仿人类监督智能体训练的过程,不过需要有人事先定期监督一个模型训练、并及时制止危险行为,需要从人类的行为中获取监督者的数据集,难以应用在复杂环境中。

寻找安全状态集合

Safe Exploration in Finite Markov Decision Processes with Gaussian Processes 将 cost 函数值视作状态 ss 下的随机样本,该样本值服从高斯分布,因此可将一个 trajectory 的 cost(s)cost(s) 函数值看做高斯随机过程(Gaussian Processes)。对于不仅受状态 ss 影响的 函数 cost(s,a)cost(s, a),本文作者提出了一种解决方案,将状态转移构造成 ssass \rightarrow s_a \rightarrow s' 的形式,从而把惩罚项转化成 cost(sa)cost(s_a)。该文章的核心思路就是在探索中找到一个不违背约束、能过单步到达其他状态、能够单步返回安全状态的安全状态集合。其重点是通过一套基于高斯过程的探索策略,来安全地找到所有能够满足上述条件的安全状态,但并没有论述如何去使用获得的状态集。并且,该文章的状态转移函数是已知且确定的这种安全状态集合的方法本质上和前面的安全层是一样的,它们都是在探索什么样的状态是安全的。不同在于,但是这篇文章把 cost(s)cost(s) 函数值看做随机变量,它根据已知的状态转移方程进行安全状态集合的扩充;安全层算法把整个环境都看做黑盒子,用神经网络来拟合  cost(s,a)cost(s, a) 函数。

c)求解替代问题

Lagrangian

​ CMDP 模型往往十分复杂,但其拉格朗日对偶问题总能保证是凸的,因此借助对偶工具进行求解是一个重要的研究方向。

Constrained Markov decision processes 一书中首先在 1999 年提出了基于拉格朗日的求解累积约束 CMDP 的方法。拉格朗日松弛的一般形式是通过拉格朗日乘子将问题简化为无约束问题,但这种方法对初始的拉格朗日乘子和学习率(Learning Rate,lr)十分敏感,求解速度也慢。前文提到的 RCPO 使用一种自动学习朗哥朗日乘子的方法,解决了拉格朗日方法的收敛性问题。除此之外,近年来也有很多学者在该方向进行着改善,是一个比较热门的研究方向。

Value constrained model-free continuous control 提出了一种求解瞬时约束 CMDP 的拉格朗日松弛方法。在每个步骤中,回报函数值都是由拉格朗日乘子加权的约束惩罚值的总和组成。说人话,就是一种特殊的 Reward Shaping,它不靠 DRL 来学习惩罚,而是直接在每一步求解一个最大化 Reward 的优化方程,显然有非常大的复杂度。并且,该方法和 Reward Shaping 一样在训练过程中有严重的违约问题。

Lyapunov

​ Lyapunov 是一种应用于控制论的方法,其探讨的是系统的稳定性。Lyapunov Optimization 方法能够有效权衡约束与目标之间的关系,并得到不错的求解效果。其目标就是找到一个趋于平稳的状态,同时最小化约束开销:$min \ \Delta L(t)+V p(t) $。

A Lyapunov-based Approach to Safe Reinforcement Learning 是 Lyapunov 方法在 Safe RL 中的典型应用,该作者还有其他几篇基于 Lyapunov 的文章。该文章的约束条件是 trajectory-based 的,也就是累积约束。不过该文章不是关于 Lyapunov Optimization 的,而是基于控制论中的 Lyapunov 方法,通过数学推导得出一种特殊构造的 Lyapunov 方程,再用该方程辅助进行 RL 的学习步骤。本质是在 RL 算法的基础上,修改了策略的迭代更新过程,让新策略能够向着满足约束的方向前进,同时考虑目标函数的上升方向。该论文数学过程十分复杂,我缺少前置知识看不太懂,目前只是研究了算法流程,之后有时间值得分析它的数学技巧。

Lyapunov Design for Safe Reinforcement Learning(2002)是第一篇在 Safe RL 领域使用 Lyapunov 方法的文章,不过直到前面那篇 2018 年的文章为止,都没有涉及使用 Lyapunov 方法对 CMDP 的约束进行显式建模,并且 2018 年的那篇文章第一次为 Lyapunov 方程设计了一个 principled guidelines,之前的文章都是在特定的问题中“纯手工”制造对应的方程。

Backward Value Function

Constrained markov decision processes via backward value functions(BMC)针对的是累积约束模型,但使用的是瞬时约束模型的求解方法(安全层法)。该算法将一整个 trajectorytrajectory 的累积约束函数在当前状态 xtx_t 进行了拆分,使用 xtx_t 点的反向约束值函数、正向约束值函数、约束函数作为累积约束函数的上界,只要保证该上界在约束范围内即可保证策略的安全性。值得注意的是,这种做法要求智能体在每一步都对下一个状态进行判断,是一种瞬时约束模型的操作,很明显可以使用安全层算法来完成这部分工作。

EM(π)[k=0Td(xk)x0]Extηπ)[VDπ(xt)+VDπ(xt)d(xt)]d0\mathbb{E}_{\mathcal{M}(\pi)}\left[\sum_{k=0}^{T} d\left(x_{k}\right) \mid x_{0}\right] \leq \mathbb{E}_{x_{t} \sim \eta^{\pi} \cdot)}\left[\overleftarrow{V_{\mathcal{D}}^{\pi}}\left(x_{t}\right)+V_{\mathcal{D}}^{\pi}\left(x_{t}\right)-d\left(x_{t}\right)\right] \leq d_0

d)求解原问题

​ 近年来的一些方法并非直接关注原问题,而是利用了 Natural Policy Gradiants 中的单步更新公式:

J(π)J(π)11γEsdπaπ[Aπ(s,a)2γϵπ1γDTV(ππ)[s]]J\left(\pi^{\prime}\right)-J(\pi)\geq \frac{1}{1-\gamma} \underset{s \sim d^{\pi} \atop a \sim \pi^{\prime}}{\mathrm{E}}\left[A^{\pi}(s, a)-\frac{2 \gamma \epsilon^{\pi^\prime}}{1-\gamma} D_{T V}\left(\pi^{\prime} \| \pi\right)[s]\right]

基于信任空间

​ 这类方法往往伴随着 Surrogate Function(替代函数)使用。受 TRPO 算法启发,只要新旧策略的距离(KL 散度)保持在一个区间内(信任空间),就能用旧策略中采样出的样本去估计新策略,从而可以构造出与原问题优化方向一致的替代函数。这些替代函数往往更好求解(凸问题),所以能够更方便地搜索到原问题的最优解。在 RL 领域最基本的信任空间算法包括 TRPO 和 PPO,基于它们发展出了一系列的 Safe RL 算法。

Constrained Policy Optimization(CPO)受 TRPO 启发,使用原目标函数下界和原约束上界的替代函数,然后在迭代中不断优化这个替代函数,从而搜索到智能体的最优策略。它使用了信任空间的方法,从而可以用旧策略的采样近似新策略的优势函数值,只要保证新旧策略的 KL 散度不超过某阈值就行。CPO 具有训练过程中不能完全遵守约束、成本趋近于限制条件而不是最小化成本的问题。除此之外,CPO 最麻烦的一点在于其实现过程,求解 FIM 矩阵和逆矩阵的工作量十分庞大。

Projection-based Constrained Policy Optimization(PCPO)提供了一种“两步走”的思路:首先在无约束的情况下用 TRPO 最大化回报函数值的办法找到新策略,然后将得到的策略映射到最近的可行空间中(让新策略满足约束)。该算法复杂度和 CPO 有的一拼(因为 TRPO 的问题),后续很多优秀的工作都是基于 PPO 的。从 PCPO 的思路来看,他和前面使用外部辅助的方法类似,都是先放任 RL 算法学习,再用一些技巧把学到的策略映射到带约束的空间下。

Interior-point policy optimization under constraints(IPO)基于 PPO 算法,能够以 TRPO 信任空间的思路实现策略的单调提升。其核心思想就是在优化目标中加入了一组 log 惩罚项,该惩罚项在满足约束时取 0,违反约束时取负无穷。相比基于拉格朗日的算法,IPO 的超参数非常容易调整,比 CPO 更容易实现,并且在处理高维的累积约束问题时具有很好的性能。唯一的问题是 IPO 需要一个满足约束的初始点,该问题在 A constrained reinforcement learning based approach for network slicing 中得到解决。

实际上,上述很多方法都使用了替代函数的思想,c  与 d 的分类主要取决于是否针对目标问题进行了类似对偶的变换,并不代表只有 c 分类的算法就使用替代函数。除此之外,实际上 Safe RL 可以被直接分为求解约束优化问题避免采取危险行为两类,前者的典型是 [Reward Shaping](#reward shaping)、Lyapunov方法,后者则包括 CPO、[安全层](#safety layer)、安全状态集合 等。


四、Benchmark

​ OpenAI 设计了一系列用于评估 Safe RL 的环境 Safety Gym,并有文章 Benchmarking Safe Exploration in Deep Reinforcement Learning 进行介绍。该环境 Agent 可以选择:圆球、两轮车、机器狗;任务有:到达目标点、按按钮、推箱子;难度有三个等级(无障碍、少障碍、多障碍)…

五、一些个人想法

1. 关于用累积约束表示瞬时约束

​ 在处理瞬时约束模型时,一种容易产生的想法是用时间尺度只有 1 的累积约束模型来刻画瞬时的约束条件。这种思路是显而易见的:

JCiπθ = Eτπθ[1Tt=0T1Ci(st,at,st+1)]T=1= Ci(st,at,st+1)  ϵiJ_{C_{i}}^{\pi_{\theta}} \ = \ \mathbb{E}_{\tau \sim \pi_{\theta}}\left[\frac{1}{T} \sum_{t=0}^{T-1} C_{i}\left(s_{t}, a_{t}, s_{t+1}\right)\right] _{T=1} = \ C_{i}\left(s_{t}, a_{t}, s_{t+1}\right) \ \leq \ \epsilon_{i}

​ 然而在大部分累积约束模型的算法中,TT 代表的并非一段任意的时间尺度,而是一场游戏直到终止条件的整条 trajectorytrajectory 的时间长度。因此,大部分情况下并不能简单套用累积约束的算法去求解瞬时约束的问题

​ 相反,若希望使用瞬时约束的算法解决累积约束的问题,BMC 算法给出了一个可行方案。

一只学术咸鱼 _(:ᗤ」ㄥ)_