安全层方法

人工智能 / 2022-10-23

Safe Exploration in Continuous Action Spaces

**简单介绍CMDP:**在 MDP 的基础上,CMDP 设置了一系列约束回报函数,并类似 MDP 的回报函数,CMDP 对每个约束回报进行了折现,要求所有策略的这些折现值不超过对应的阈值。至于最优化目标,CMDP 依旧是采用的 MDP 的折现回报最大化。

一、研究背景

​ 在某些RL的训练场景下,存在一些绝不能违背的约束条件,往往需要从一开始部署就避免危险操作。

二、目标问题

​ 该论文的目标是在连续行为空间上,实现一个不违反任何约束的带约束强化学习算法。而这个目标在离散的动作空间中比在连续的行为空间中更容易实现。

​ 在物理问题中,通常会遇到观测量局限于安全范围的问题,比如数据中心采集到的温度与气压数据总是低于阈值,这类数据被称为安全信号 safety signals(也就是约束回报函数的值),需要探索出它们的平滑性(从安全状态渐渐逼近阈值的变化趋势),来避免危险行为。

​ 通常,安全的探索过程需要使用一系列已知的长期经验(long-term consequences)进行预训练。如何在外部经验不充足的条件下训练一个安全的强化学习模型,也是该论文的研究重点。

​ 本文是第一个在策略层面直接解决状态安全性问题的工作,而且可以使用任意日志数据进行训练,能够应用于连续的控制算法中,也不受特定的算法局限(不仅可以用于 RL 中)。

三、核心方法

简单来说,该论文就是训练了一个神经网络来预测某种策略是否满足约束,并用它来构造一个安全层,通过安全层来调整可能超出约束的行为。

​ 除了 CMDP 最基本的元组 $ (\mathcal{S}, \mathcal{A}, P, R, \gamma, \mathcal{C}) $ 外,作者定义了一组安全信号 $ \overline{\mathcal{C} }=\left{\bar{c}{i}: \mathcal{S} \rightarrow \mathbb{R} \mid i \in[K]\right} $,是对 C={ci:S×ARi[K]}{\mathcal{C} }=\left\{ {c}_{i}: \mathcal{S} \times \mathcal{A} \rightarrow \mathbb{R} \mid i \in[K]\right\} 的简写,有 $ \bar{c}\left(s^{\prime}\right) \triangleq c_{i}(s, a) $。

a)线性安全信号模型

​ 在没有先验知识的情况下,智能体会在训练前期使用随机策略来选择行为以进行探索,这是很难满足约束要求的。然而用先验知识训练智能体是非常低效且不稳定的,本文作者选择使用预先采集的单步经验来对安全信号进行学习。并且,作者使用了一种更加优雅的构造方式:

cˉi(s)ci(s,a)cˉi(s)+g(s;wi)a\bar{c}_{i}\left(s^{\prime}\right) \triangleq c_{i}(s, a) \approx \bar{c}_{i}(s)+g\left(s ; w_{i}\right)^{\top} a

​ 其中 wiw_i 是神经网络的权重,网络 g(s;wi)g(s;w_i) 使用状态 ss 作为输入,并输出一个与行为 aa 同样维度的列向量。该表达式可以看作对 ci(s,a)c_i(s,a)aa 下的一阶展开近似,能够表示行为 ss 的安全信号 cic_i 对行为 aa 的敏感性。该预测层可以被表示为下图:

img

​ 在论文中,作者用来训练该网络的数据甚至是通过让智能体随机行动获得的:让智能体处于一个随机的状态,并进行随机的行为,如果行为满足约束要求,就直接把这个 (s,a,s)(s,a,s') 元组放入先验经验池 DD 中。网络 g(s;wi)g(s;w_i) 的训练过程只需要求解以下优化方程即可:

argminwi(s,a,s)D(cˉi(s)(cˉi(s)+g(s;wi)a))2\underset{w_{i}}{\arg \min } \sum_{\left(s, a, s^{\prime}\right) \in D}\left(\bar{c}_{i}\left(s^{\prime}\right)-\left(\bar{c}_{i}(s)+g\left(s ; w_{i}\right)^{\top} a\right)\right)^{2}

​ 网络 g(s;wi)g(s;w_i) 除了必须在预训练阶段进行学习外,也可以选择在 RL 算法的训练过程中不断强化,但实验表明只进行预训练也并不会有任何劣势。

b)安全层指导 DDPG 解决 CMDP 问题

​ 该论文的思想可以应用在所有的连续 RL 算法中,文中使用了最经典的 DDPG 进行示范。RL 算法的改造过程如下图所示,作者在原始 DDPG 网络的最后加入了一个安全层

img

​ 该安全层其实就是在求解一个约束优化问题,其目标是在满足约束的情况下尽可能少地影响策略输出的行为:

\underset{a}{\arg \min } \frac{1}{2}\left\|a-\mu_{\theta}(s)\right\|^{2} \\ s.t. $ c_{i}(s, a) \leq C_{i} \quad \forall i \in[K]

​ 通过使用前述线性模型来替换安全信号,得到下式:

a=argmina12aμθ(s)2 s.t. cˉi(s)+g(s;wi)aCii[K]\begin{aligned} a^{*}=& \underset{a}{\arg \min } \frac{1}{2}\left\|a-\mu_{\theta}(s)\right\|^{2} \\ & \text { s.t. } \bar{c}_{i}(s)+g\left(s ; w_{i}\right)^{\top} a \leq C_{i} \quad \forall i \in[K] \end{aligned}

​ 该式很明显目标方程是二次正定的,而约束是线性的,很容易求解该凸优化问题的全局最优解。进一步地,作者基于同一时刻不会有多于一个约束被激活的假设(如果有,则可以构造 joint model 来用一个约束描述多个),对上式进行近似:

λi=[g(s;wi)μθ(s)+cˉi(s)Cig(s;wi)g(s;wi)]+\lambda_{i}^{*}=\left[\frac{g\left(s ; w_{i}\right)^{\top} \mu_{\theta}(s)+\bar{c}_{i}(s)-C_{i}}{g\left(s ; w_{i}\right)^{\top} g\left(s ; w_{i}\right)}\right]^{+}

a=μθ(s)λig(s;wi)a^{*}=\mu_{\theta}(s)-\lambda_{i^{*}}^{*} g\left(s ; w_{i^{*}}\right)

​ 其中 λi\lambda_i 是第 ii 个约束的拉格朗日乘子,$ i^{}=\arg \max {i} \lambda^{} [x]^+$ 表示 max(0,x)max(0, x)。这两个表达式来源于对激活单个约束(只有一个约束正好取等)的情况的特殊讨论,因此需要之前的假设。该表达式的意义是,找到一个满足约束的基本可行解,且该基本可行解距离 DDPG 网络输出的结果尽量接近。不过这个非常简单的表达式只能应用于最多一次激活一个约束的条件。

四、性能指标

img

​ 上面四个的纵坐标是优化目标,下面的纵坐标是违反约束的次数,横坐标都是游戏的局数(一局游戏在 违约/超时/到达目标 时结束)。作者在四种游戏中对比了原始 DDPG、使用约束修改回报函数值的 DDPG、以及带安全层的 DDPG 算法,容易发现,安全层能够帮助算法使用更少的局数进行收敛(根据我的经验,局数少不一定时间就少,我本科毕设使用 CMDP 降低了收敛步数,但每一步耗时贼久;但是安全层的一局游戏时间影响不大),且安全层在几种游戏中完全没有违约,哪怕在前几次的随机探索中都能满足约束。

​ 然而安全层需要事先对神经网络进行预训练,不一定说他就比较省时省力,且我个人认为安全层和 reward shaping 本就不是同一个起跑线,它更应该和使用历史长期经验进行预训练后的 reward shaping 进行对比。

五、算法评价

(以下为我的评价,仅供参考)

​ 作者对比了与 CPO 之间的区别,并指出 CPO 的做法从一开始就不能保证每一步更新都能到达一个安全的范围,而本论文给出的方案可以让智能体从刚开始探索就限制在约束区域内

​ 该论文用来预测约束函数值(论文中的“安全信号”)的神经网络非常值得借鉴,本质上就是在新策略执行前就预先通过神经网络判断这个行为是否满足约束。不过它的应用方法值得商榷,毕竟通过特殊构造方法让约束能够一次只有一个被激活还是蛮复杂的,如果不这么构造约束就无法真正实现完全满足约束的 RL 算法。可以换一种思路来应用这个神经网络,或许能够更加简单低满足工业需求!

​ 不过,神经网络预测约束值也存在一个问题:训练到什么程度的神经网络才能确保它能精准预测阈值?如果不解决这个问题,就不能保证所有探索都满足约束条件!

​ 作者在论文中也提到,现实中采集到的数据往往都在安全阈值以下,也就是说用来训练神经网络的数据集往往是片面而局限的!作者给出的方法是利用神经网络的线性特征,通过已有的数据集来“猜”出违约部分的变化规律。原文中给出的安全层方法,是建立在能够判断是否违约基础上的,只要能保证神经网络训练出准确的约束阈值,哪怕在超出阈值部分的预测效果很差也不影响大局。因为安全层会将超出约束阈值的行为拉进阈值内,这种思路的算法只需要保证阈值的有效预测就可以了。我认为在这种情况下,如果数据集不够有效,我们不妨将阈值预测的保守一点,比如要求预测出的阈值距离数据集中满足约束且最逼近阈值的样本点不超过一个距离 dd。这样虽然 RL 算法的收敛效果可能差一点点(毕竟全局最优点一般收敛在约束条件上),但能提高安全性

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