跳转至

安全强化学习

动机

在现实世界应用中,最大化回报不是唯一目标——策略还必须满足安全约束。例如:

  • 自动驾驶:不能撞到行人
  • 机器人手术:不能超过力矩阈值
  • 金融交易:不能超过风险预算
  • 电力系统:不能违反运行限制

安全强化学习(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约束的椭球内找到同时满足代价约束的更新方向:

  1. 计算回报优势和代价优势
  2. 在满足KL和代价约束的可行域内搜索最优方向
  3. 使用线搜索确保约束满足

与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})\]

即"永远不碰撞,最终到达目标"。

屏蔽机制

  1. 预计算或在线计算安全状态集合
  2. 在每一步检查RL策略建议的动作
  3. 如果动作会导致离开安全集合,替换为安全动作

反应性屏蔽(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)

评论 #