安全强化学习
动机
在现实世界应用中,最大化回报不是唯一目标——策略还必须满足安全约束。例如:
- 自动驾驶:不能撞到行人
- 机器人手术:不能超过力矩阈值
- 金融交易:不能超过风险预算
- 电力系统:不能违反运行限制
安全强化学习(Safe RL)研究如何在约束条件下优化策略。
约束马尔可夫决策过程(CMDP)
定义
CMDP在标准MDP基础上增加了约束:
\[\max_\pi J(\pi) = \mathbb{E}_\pi\left[\sum_{t=0}^\infty \gamma^t r(s_t, a_t)\right]\]
\[\text{s.t.} \quad J_{c_i}(\pi) = \mathbb{E}_\pi\left[\sum_{t=0}^\infty \gamma^t c_i(s_t, a_t)\right] \leq d_i, \quad i = 1, \ldots, k\]
其中:
- \(c_i(s, a)\):第 \(i\) 个代价函数(cost function)
- \(d_i\):第 \(i\) 个约束的上界
- \(k\):约束数量
与多目标奖励的区别
| 特性 | 多目标奖励 | CMDP |
|---|---|---|
| 安全保证 | 无硬保证 | 约束必须满足 |
| 权重调节 | 需手动调权重 | 约束阈值有明确含义 |
| 策略空间 | 全策略空间 | 可行策略子集 |
拉格朗日方法
基本思想
将约束优化转化为无约束的鞍点问题:
\[\mathcal{L}(\pi, \lambda) = J(\pi) - \sum_{i=1}^k \lambda_i (J_{c_i}(\pi) - d_i)\]
\[\max_\pi \min_{\lambda \geq 0} \mathcal{L}(\pi, \lambda)\]
原始-对偶更新
交替更新策略参数和拉格朗日乘子:
策略更新(梯度上升):
\[\theta \leftarrow \theta + \alpha_\theta \nabla_\theta \mathcal{L}(\pi_\theta, \lambda)\]
乘子更新(梯度下降,投影到非负域):
\[\lambda_i \leftarrow \max\left(0, \lambda_i + \alpha_\lambda (J_{c_i}(\pi) - d_i)\right)\]
实现细节
class LagrangianSafeRL:
def __init__(self, cost_limit, lr_lambda=0.01):
self.cost_limit = cost_limit
self.log_lambda = torch.zeros(1, requires_grad=True)
self.lambda_optimizer = torch.optim.Adam([self.log_lambda], lr=lr_lambda)
def compute_loss(self, reward_loss, cost_value):
# 策略损失 = 原始目标 - λ * (约束值 - 阈值)
lambda_val = self.log_lambda.exp().detach()
total_loss = reward_loss - lambda_val * (cost_value - self.cost_limit)
return total_loss
def update_lambda(self, cost_value):
# 更新拉格朗日乘子
lambda_loss = -self.log_lambda.exp() * (cost_value - self.cost_limit)
self.lambda_optimizer.zero_grad()
lambda_loss.backward()
self.lambda_optimizer.step()
优缺点
优点:
- 实现简单,与任何RL算法兼容
- 理论保证(在凸约束下收敛)
缺点:
- 训练过程中可能暂时违反约束
- 乘子更新可能振荡
- 对超参数(乘子学习率)敏感
CPO(Constrained Policy Optimization)
动机
Achiam et al. (2017) 提出CPO,保证每次策略更新都满足约束。
核心思想
在TRPO的信赖域框架内加入约束:
\[\max_\pi \; \mathbb{E}_{s \sim d_{\pi_{\text{old}}}} \left[\frac{\pi(a|s)}{\pi_{\text{old}}(a|s)} A^{\pi_{\text{old}}}(s, a)\right]\]
\[\text{s.t.} \quad \bar{D}_{\text{KL}}(\pi \| \pi_{\text{old}}) \leq \delta\]
\[\quad \quad J_{c_i}(\pi_{\text{old}}) + \frac{1}{1-\gamma} \mathbb{E}_{s \sim d_{\pi_{\text{old}}}} \left[\frac{\pi(a|s)}{\pi_{\text{old}}(a|s)} A^{\pi_{\text{old}}}_{c_i}(s, a)\right] \leq d_i\]
求解方法
通过对偶问题求解,在满足KL约束的椭球内找到同时满足代价约束的更新方向:
- 计算回报优势和代价优势
- 在满足KL和代价约束的可行域内搜索最优方向
- 使用线搜索确保约束满足
与TRPO/PPO的关系
| 方法 | 约束类型 | 安全保证 |
|---|---|---|
| TRPO | 仅KL散度 | 无 |
| PPO | 裁剪比率 | 无 |
| CPO | KL散度 + 代价约束 | 每步保证 |
安全层(Safety Layer)
概念
Dalal et al. (2018) 在策略网络输出后添加一个安全校正层:
\[a_{\text{safe}} = \arg\min_{a'} \|a' - a_{\text{RL}}\|^2 \quad \text{s.t.} \quad g(s, a') \leq 0\]
将RL输出的动作投影到安全约束集合中。
线性化近似
当约束函数 \(g\) 复杂时,使用一阶泰勒展开近似:
\[g(s, a') \approx g(s, a_{\text{RL}}) + \nabla_a g(s, a_{\text{RL}})^T (a' - a_{\text{RL}})\]
转化为线性约束下的QP问题,可以高效求解。
优势
- 可以与任何RL算法组合
- 在推理时也提供安全保证
- 不需要修改RL训练算法
屏蔽方法(Shielding)
形式化验证屏蔽
基于形式化方法(如时态逻辑)定义安全规范,在运行时验证并阻止不安全动作:
安全规范:使用线性时态逻辑(LTL)表达
\[\varphi = \Box(\neg \text{collision}) \land \Diamond(\text{goal})\]
即"永远不碰撞,最终到达目标"。
屏蔽机制:
- 预计算或在线计算安全状态集合
- 在每一步检查RL策略建议的动作
- 如果动作会导致离开安全集合,替换为安全动作
反应性屏蔽(Reactive Shield)
- 在线运行,延迟低
- 只考虑短期安全
- 可能过于保守
预测性屏蔽(Predictive Shield)
- 考虑未来多步的安全性
- 使用模型预测
- 平衡安全性和性能
仿真到真实的安全迁移
挑战
仿真中的安全策略迁移到真实世界时面临:
- 动力学差异:仿真器不完美
- 传感器噪声:真实传感器有噪声
- 未建模干扰:真实环境中存在未知因素
鲁棒安全方法
域随机化(Domain Randomization):
在仿真中随机化物理参数,学到的安全约束更鲁棒。
鲁棒CMDP:
\[\max_\pi \min_{P \in \mathcal{P}} J(\pi, P) \quad \text{s.t.} \quad \max_{P \in \mathcal{P}} J_c(\pi, P) \leq d\]
在最坏情况的转移动力学下优化和满足约束。
安全裕度:
为约束添加保守的安全裕度,补偿仿真到真实的差距。
相关内容
实践建议
| 需求 | 推荐方法 |
|---|---|
| 简单约束,快速实现 | 拉格朗日方法 |
| 每步安全保证 | CPO |
| 与现有RL兼容 | 安全层 |
| 可证明安全 | 形式化屏蔽 |
| Sim-to-Real | 鲁棒CMDP + 安全裕度 |
参考文献
- Altman, "Constrained Markov Decision Processes" (1999)
- Achiam et al., "Constrained Policy Optimization" (ICML 2017)
- Dalal et al., "Safe Exploration in Continuous Action Spaces" (2018)
- Alshiekh et al., "Safe Reinforcement Learning via Shielding" (AAAI 2018)
- Ray et al., "Benchmarking Safe Exploration in Deep Reinforcement Learning" (2019)
- Tessler et al., "Reward Constrained Policy Optimization" (ICLR 2019)