Zhicheng

Robotics, Learning, and Control

0%

王雪松, 王荣荣, 程玉虎. 安全强化学习综述. 自动化学报, 2023, 49(9): 1813−1835

alt text

alt text


Safe Reinforcement Learning Using Robust Control Barrier Functions》(Emam et al., 2022)(本质上是一种策略约束方法)

提出了一种结合**鲁棒控制屏障函数(RCBF)和强化学习的安全强化学习框架,并以Soft Actor-Critic (SAC)**为基底,解决训练过程中可能进入不安全状态的问题。

论文核心结构与思路

1. 问题背景

  • 强化学习需要大量探索,但这可能会引发安全问题(如机器人撞墙、无人机坠落)。
  • 安全强化学习目标:在训练中就保持系统不进入不安全状态,而不是仅最终收敛到安全策略。

2. 方法结构(SAC-RCBF)

📎 系统建模:

考虑扰动控制仿射系统:

[
\dot{x}(t) = f(x(t)) + g(x(t))u(x(t)) + d(x(t))
]

  • (d(x)):未知扰动,用**高斯过程(GP)**建模。
  • 控制目标是:用 RL 找最优策略 ( \pi ),在执行前通过 RCBF 层进行修正,确保安全。

📎 安全模块:RCBF-QP 层

  • 用**鲁棒控制屏障函数(RCBF)**构造约束:
    [
    \nabla h(x)^T(f(x) + g(x)u(x)) \geq -\alpha(h(x)) - \min \nabla h(x)^T d(x)
    ]
  • 通过**二次规划(QP)**调整策略输出,最小化修改幅度,确保满足约束。

📎 强化学习部分:Soft Actor-Critic (SAC)

  • 引入可微分安全层,可以反向传播梯度,增强策略学习能力。

  • 提出两个优化:

    1. Differentiable RCBF Layer:允许梯度传播:使得策略能够进行自动修正。可微分安全层让“安全修正”变成了策略可以感知和优化的目标,因此是实实在在的“加速 + 提升性能”的方法。
    2. Model-based rollout:用学习到的模型生成合成数据,加速学习
  • 没有可微分安全层:

问题 影响
策略网络不知道“自己动作被改了” 无法学习“避开”那些不安全动作
CBF 修正是黑箱、不可导 策略只能“撞墙后被拉回来”,而不是“提前不撞”
SAC 更新方向可能乱了 有效梯度方向被掩盖,学习效率低
高维控制系统尤其严重 RL 很难靠试错探索到“刚刚好不触碰屏障”的策略
  • 有安全层:
优点 结果
策略能“感知到”安全边界的位置 不再只是靠碰撞惩罚、随机试错
CBF 修正能“教会”网络如何避开风险 把 CBF 的结构性知识反传给策略
策略更快收敛、学到更优行为 不容易陷入安全/性能折中困境

📎 模块化任务学习(Modular Learning)

  • 任务 reward 与安全 constraint 解耦,使得训练出的策略具有更强的迁移能力(zero-shot transfer)

创新点总结

创新点类别 内容说明
✅ 融合方法创新 将 RCBF 融入 SAC 中,确保训练过程安全
✅ 可微分安全层 提出 differentiable RCBF-QP,允许梯度传播
✅ 模块化训练思想 reward 与 safety 解耦,提升策略迁移性
✅ 数据效率优化 使用部分已学模型做合成 rollout,提升样本效率

可改进方向 / 研究机会

  1. 更多维度扰动建模方法:GP 对高维 d(x) 效率有限,可考虑使用贝叶斯神经网络或 ensemble 模型。
  2. 更通用的 CBF 设计工具:当前构造 CBF 需先验经验,可引入自动构造或学习 CBF 的方法。
  3. 现实部署实验验证缺失:目前只在模拟环境中测试,若能在真实机器人上测试更具说服力。
  4. 与 MPC 的融合探索:框架可拓展为 hybrid RL-MPC,进一步提升实时安全性。

SAC算法:

SAC 是一种最大化奖励 + 最大化动作多样性(熵)的 off-policy 深度强化学习算法,具有高效、稳定、探索性强的特点。

一、SAC 的基本思想

传统强化学习只最大化期望回报:

[
\max_\pi \mathbb{E}_{\pi} \left[\sum_t r(s_t, a_t)\right]
]

不仅希望获得高奖励,还希望策略有足够的“随机性”,保持探索能力。

引入最大熵强化学习目标

[
\max_\pi \mathbb{E}_{\pi} \left[\sum_t r(s_t, a_t) + \alpha \mathcal{H}(\pi(\cdot|s_t)) \right]
]

  • ( \mathcal{H}(\pi) = -\log \pi(a|s) ) 是策略的
  • ( \alpha ):探索与奖励之间的平衡因子

🔍 二、SAC 的结构组成

SAC 有四个主要模块(四个网络):

模块 作用
Actor(策略网络) 输出当前状态下的概率分布 ( \pi(a
Q1, Q2 网络(Critic) 近似动作值函数 ( Q(s, a) ),使用双 Q 避免过高估计
Value 网络(可选) 估计当前状态下的“soft value” ( V(s) )(新版可省略)

训练使用目标网络(target Q)、经验池(replay buffer)等稳定手段。

四、SAC 的优点

特点 描述
✅ off-policy 能重复使用旧数据,训练效率高
✅ 连续动作空间 可用于机器人控制等场景
✅ 探索性强 保留策略熵,鼓励更多尝试
✅ 收敛稳定 双 Q + target network 提升稳定性
✅ 可扩展 可结合可微分安全层(如前文 RCBF)

关于 “在线 / 离线”强化学习 与 “on-policy / off-policy”

比较点 在线 / 离线 On-policy / Off-policy
关注的是? 数据是否来自当前环境? 样本是否由当前策略生成?
数据是否更新? 在线更新 / 离线固定 都可以实时或离线训练
能否与环境交互? 离线不能,在线可以 无限制,on/off-policy 都可在线训练
是否用 replay buffer? 不一定(视方法而定) Off-policy 用,On-policy 通常不用
安全应用偏好? 离线更安全 与安全性无直接关系

《Learning Safety in Model-Based Reinforcement Learning using MPC and Gaussian Processes》

提出了一种结合 高斯过程(GP)与模型预测控制(MPC)安全强化学习(Safe RL)方法。它的研究目标是在不牺牲性能的前提下,提高策略的安全性

我将从三个层面来解析:

一、文章的核心创新点分析

1. 使用 GP 回归学习 MPC 参数空间中的安全集

  • 提出了一个 用高斯过程回归建模安全约束 的方法,不直接建模系统动力学,而是建模“哪个 MPC 参数组合是安全的”。
  • 安全性不再是手工设定的硬约束,而是通过历史数据学习的概率安全区域 SD\mathcal{S}_D。

👉 创新点:这是将黑箱约束建模方法用于 MPC-RL 中安全约束建模的首个系统性应用。

2. 将 MPC 作为 RL 的函数近似器

  • 与传统 RL 使用神经网络不同,该文使用 参数化的 MPC 控制器作为策略表示器
  • 学习的不是控制策略本身,而是 MPC 的参数(如模型参数、约束backoff等)。

👉 创新点:相比 DNN 更可解释,且 MPC 本身具有对约束的原生支持。

3. 提出基于 GP 的安全约束嵌入到策略更新优化问题中

  • 在 RL 参数更新时,加入 GP 学习的安全约束 z(θ)≤0z(\theta) \leq 0,确保新参数落在安全区域。
  • 若更新不可行,则逐步 backtrack 安全概率 β,提升可行性。

👉 创新点:结合了 概率安全约束 + 二阶 Q-learning + backtracking β,实现数据驱动的安全探索。

总结

类别 内容
核心创新 基于 GP 的安全参数集建模,嵌入 MPC-RL 训练过程
关键技术点 安全约束函数建模、LSTD Q-learning、贝叶斯优化启发式
可改进之处 GP 初期性能差、高维扩展难、参数空间学习有限
潜在创新方向 多模型融合、迁移学习、安全 BO 比对、真实机器人部署

《Constrained Variational Policy Optimization for Safe Reinforcement Learning》

一、研究背景与问题定义

1.1 安全强化学习的挑战

  • 核心问题:在安全关键场景(如机器人控制)中,策略需在最大化奖励的同时满足安全约束(如碰撞避免)。
  • 传统方法的局限:
    • 原始-对偶方法(Primal-Dual):交替优化策略参数和对偶变量(拉格朗日乘子),存在数值不稳定性和缺乏最优性保证。 (核心思想:把约束优化问题转换为拉格朗日形式,交替优化策略参数(θ)和对偶变量(λ),通过迭代更新使策略参数和对偶变量同时收敛。)
    • 泰勒近似方法:通过低阶近似简化约束优化问题,但可能导致约束违反率较高,近似不够精确,可能“形式上满足约束”,但实际策略存在约束违反。 (核心思想:对约束函数进行一阶或二阶泰勒展开,简化约束优化的计算
    • 样本效率低:现有方法多为在线策略(on-policy),难以利用历史数据进行高效学习。

1.2 约束马尔可夫决策过程(CMDP)

  • 定义:在标准MDP基础上引入约束成本函数集合 (C),目标为:
    [
    \pi^* = \arg \max_{\pi} J_r(\pi) \quad \text{s.t.} \quad J_c(\pi) \leq \epsilon_1
    ]
    其中 (J_r(\pi)) 和 (J_c(\pi)) 分别为奖励和成本的累积折扣期望(比如摔倒、电量消耗、与人碰撞等)。

二、方法创新:CVPO算法

2.1 概率推断视角的重新建模

  • 关键思想:将安全RL问题转化为概率推断问题,通过变分推断和EM算法自然融入约束。
  • 概率图模型:引入最优性变量 (O),表示轨迹 (\tau) 的“成功事件”,其似然函数与奖励相关:
    [
    p(O=1|\tau) \propto \exp\left(\sum_t \gamma^t r_t / \alpha\right)
    ]
  • 证据下界(ELBO):通过变分分布 (q(\tau)) 最大化下界,同时约束 (q) 属于安全分布族 (\Pi_{Q}^{\epsilon_1})。

2.2 算法框架:EM两步优化
E步:凸优化求解变分分布

  • 优化目标:在约束下最大化奖励期望,同时限制与旧策略的KL散度:
    [
    \max_q \mathbb{E}{\rho_q} \left[ \mathbb{E}{q} [Q_r(s,a)] \right] \quad \text{s.t.} \quad \mathbb{E}{\rho_q} [\mathbb{E}q [Q_c(s,a)]] \leq \epsilon_1, \quad D{KL}(q | \pi{\theta_i}) \leq \epsilon_2
    ]
  • 闭式解与强对偶性:
    • 通过拉格朗日对偶方法解析求解,得到非参数变分分布的闭式表达式:
      [
      q^*(a|s) \propto \pi_{\theta_i}(a|s) \exp\left( \frac{Q_r(s,a) - \lambda Q_c(s,a)}{\alpha} \right)
      ]
    • 证明优化问题的严格凸性,确保解的唯一性和最优性。

M步:监督学习更新策略

  • 目标函数:在信任域内最小化与最优变分分布的KL散度:
    [
    \min_{\theta} \mathbb{E}{\rho_q} \left[ D{KL}(q^*(\cdot|s) | \pi_{\theta}(\cdot|s)) \right]
    ]
  • 实现方式:通过监督学习(如神经网络)拟合 (q^*),支持离线策略(off-policy)数据复用。

三、理论贡献与优势

3.1 理论保证

  1. 最优性与可行性:E步的凸优化确保变分分布同时满足奖励最大化和约束条件。
  2. 信任域机制:M步的KL约束提供策略更新的鲁棒性保证,避免过度偏离安全区域。
  3. 样本效率:离线策略训练减少与环境交互的成本,实验显示样本效率提升高达1000倍。

3.2 对现有方法的改进

  • 稳定性:分解为凸优化和监督学习,避免原始-对偶方法的梯度冲突。
  • 约束满足性:直接优化安全约束,而非通过惩罚项近似。
  • 灵活性:非参数变分分布避免参数化策略的近似误差。

行内公式:a2+b2=c2a^2 + b^2 = c^2

块级公式:

[
\dot{x}(t) = f(x(t)) + g(x(t))u(x(t)) + d(x(t))
]

这个问题非常重要!博士≠多读几年书,博士更像是一个“高强度训练营”,塑造你成为能独立提出、解决、验证问题的人。

我们可以把博士期间应当掌握的能力分为以下五大核心模块:
认知能力、科研能力、工程/技术能力、表达与协作能力、元能力(心智层)


🧠 一、认知能力:这是博士的“思维底盘”

能力 具体表现
抽象能力 能从复杂现象中提取本质,比如将实验现象抽象为数学模型或控制系统
结构化思维 能将模糊任务拆解为清晰模块,有清晰的推理链
批判性思维 不盲信权威,敢于质疑前人方法,善于找出假设漏洞
判断研究价值的能力 能识别“哪些问题值得做”、“是否有学术贡献”

📌 一个好的博士不是做得多,而是思考得深


📚 二、科研能力:这是博士的“核心业务”

能力 具体表现
选题能力 能发现有意义、可行、有创新的问题
文献调研能力 能高效阅读、比较、归纳相关研究工作
设计实验能力 能构造有效的验证方式(仿真 / 实验 / 数据)
数学建模/算法推导能力 能写出合理的公式、证明关键结论
论文写作能力 能清楚表达问题、方法、实验、结论,让评审信服

📌 “做研究”不仅是做,更是不断地“想、写、讲、验证”。


🛠️ 三、技术/工程能力:这是博士的“落地抓手”

能力 具体表现
代码实现能力 不仅写得对,还能写得稳、写得快、写得清晰
系统调试能力 能快速定位问题并修复,软硬件都能应对
工具链掌握 熟练掌握领域主流工具,如 PyTorch、ROS、Isaac Gym、LaTeX、Git 等
大模型 / 控制 / 优化 / 数据等专项技能 针对研究方向具备较强技术深度

📌 再“学术”的工作,最后也要通过工程实现才能验证。


🗣️ 四、表达与协作能力:这是博士的“输出通道”

能力 具体表现
汇报和讲解能力 能讲清楚自己的研究问题、路线、结果,不绕圈子
跨领域沟通能力 和工程/算法/导师/评审有效协作,降低“学术闭塞”风险
写 Email / 项目申请 / Reviewer 回复 格式专业,语气得体,能解决实际问题
合作者管理与合作谈判 特别是博后阶段,需要带人、带项目、谈合作

📌 科研不是一个人的战斗,表达力决定你能否“被听见”。


🧭 五、元能力(心智层):博士能否坚持下来的“隐形力”

能力 具体表现
自我驱动能力 没人 push 你也能主动推进研究
时间管理能力 同时处理多个项目、任务,合理安排周/月/年计划
挫折恢复力 面对实验失败、论文被拒、导师施压也不崩溃
自我反思与成长循环 定期复盘自己:哪里做得好?哪里需要调整?

📌 博士拼到最后,不是智商,是系统性和韧性。


✨ 最终你应该变成一个怎样的人?

🎓 “我可以独立从 0 到 1 地完成一个有意义的问题研究,具备将复杂问题结构化、技术化、学术化地解决并表达出来的能力。”
这才是真正的博士能力画像。


💼 补充:读完博士后,就业/发展方向会非常依赖这些能力

职业方向 对博士能力的需求侧重
高校教职 科研能力 + 表达能力 + 项目组织能力
科研所(中科院等) 技术深度 + 系统能力
AI/机器人大厂 算法落地 + 工程能力 + 团队协作
创业 问题定义能力 + 心智强度 + 综合运营

✅ 小结:博士五维能力图谱

1
2
3
4
5
             元能力(自驱力、时间管理、情绪管理)

表达协作 ← 认知能力(思维框架) → 技术工程

科研能力(核心任务)

为什么衡量标准不能太外部化?我们可以从 心理机制 + 动力机制 + 行为后果 三个层面来剖析。


🧠 1. 心理层面:外部目标易引发焦虑、迷失、自我否定

外部化目标的本质是“我好不好,别人说了算”:

  • 比如“年薪百万”是由公司评估你值不值;
  • “拿称号”是评审专家说了算;
  • “某大厂 offer”是 HR 和面试官决定。

这意味着:
你把价值感 交给了外部,一旦外界反馈不如预期,就会陷入:

  • 📉 自我否定(我是不是不够好)
  • 🤯 焦虑攀比(别人有了我还没有)
  • 🔁 情绪循环(得不到就痛苦,得到了也很空)

外部化的衡量标准,往往不指向你真正的成长,而是社会期望的“表演成绩单”。


🚀 2. 动力机制层面:外部目标难以形成可持续的内驱力

❌ 外部目标的典型陷阱:

  • 得到之后很快失去动力(比如升职后陷入空虚)
  • 没得到就陷入无意义感(比如努力失败时无法承受)
  • 做事的动力变成“逃避失败”而非“追求成长”

✅ 内部目标的底层驱动更稳定:

比如:

“我想掌握控制机器人上下楼梯的能力”
“我想做一件对这个领域有贡献的工作”
“我希望自己成为一个更有独立判断力的人”

这些目标和自我认知、自我实现绑定,就算过程艰难,也更容易走得下去,因为你不是为别人“演”,你是为自己“活”。


🧩 3. 行为后果层面:外部目标容易导致手段扭曲、路径偏离

比如:

  • 为了“年薪百万”去做高压但无成长的岗位
  • 为了“某称号”把项目写得浮夸不实
  • 为了“大厂 offer”内卷刷题、却忽视基础能力建设

这会让你陷入:

  • 短视行为(重结果轻过程)
  • 虚假反馈(只追 KPI)
  • 自我价值错位(觉得自己“不配被喜欢”只因没达成某目标)

✅ 所以,正确目标应该这样设定:

外部化目标(错误) 内部化目标(推荐)
“我要进某公司” “我要成为能胜任该类岗位的工程师”
“我要发 A 类顶刊” “我要建立起独立科研选题与推进能力”
“我要月入 3 万” “我要能创造价值并掌控自由的生活方式”
“我要被认可/表扬” “我要能稳定地输出高质量工作/内容”

🎯 总结金句:

外部目标只能当做“里程碑”,真正推动你走远的,是对内在成长的渴望。

  • 外部化目标是可衡量的结果
  • 内部化目标是可积累的能力与状态
  • 真正“牛的人”,是结果有了,心态还是过程型的

我们都知道“外部目标不靠谱”“要内驱”,但现实中——
绝大多数人都在盯着钱、名、offer、称号、头衔……

那为什么会这样?
答案是:这很“合理”,但不“健康”

下面我帮你分析背后的五个原因


❶ 社会系统鼓励外部目标:它更容易衡量、管理和比较

  • 考试分数、绩点、奖学金、职称、年薪、Offer 数,这些都具备一个特点:
    👉 可以量化可以排名可以一眼看出你“值多少钱”

这对制度来说很方便:

  • 公司招人凭它
  • 父母比较孩子凭它
  • 朋友圈判断你“是不是牛”也凭它

所以你不“看它”你就会“掉队”,你不想卷,也会被卷。


❷ 大脑的“即时奖励系统”被外部刺激绑架了

  • 收到 offer、加薪、被点赞、上热搜、拿奖——这些会立刻让你“爽”
  • 而内在成长,比如:
    • 掌握一个复杂知识
    • 读懂一本好书
    • 理解一个人的心意
      这些回报 慢且不确定,你的大脑要“延迟满足”

所以说:

外部目标像快餐,随手可得,但不养人;
内在成长像慢炖汤,要等,但滋养深沉。


❸ 成长型目标需要“深度的自我理解”——大多数人没机会培养

  • 想知道“我想解决什么问题”“我想成为什么样的人”其实很难
  • 教育体系和社会氛围几乎不给你空间去探索这些问题
  • 所以人们只能转而去追那些别人都在追、社会说“好”的目标

这其实是认知发展阶段的问题,并不是谁“肤浅”或“功利”,而是:

没人教他们“怎么设定真正属于自己的目标”


❹ 外部目标更容易用来“证明自己”,满足安全感

很多人不是为了“钱本身”,
而是为了“别人觉得我不错”、“爸妈看我有出息”、“不被看不起”……

这其实是:

把外部目标当成“自我价值的防御工具”
外界的评价越不确定,越要“用东西堵上”


❺ “外部目标”确实能在短期内让人冲刺前进

别误会——
外部目标并不是“完全不好”,它有以下好处:

  • 可见性强、行动明确、反馈快
  • 可以激励你迈出第一步
  • 是内在目标“实现”的副产品

但它不能成为 最终驱动力,否则就会迷失。


🔁 所以很多人一开始是这样:

  • “我想年薪百万” → 所以拼命进大厂
  • 进了之后发现也很苦 → “那我要升职/出国”
  • 升职了也空虚 → “那我得做一个产品经理/leader/教授?”
  • 再往上就开始怀疑人生:“我到底想干嘛?”

这就是**错把“手段”当“终点”**的代价。


🌱 怎样跳出这个圈?

你得用外部目标“养活”自己,同时靠内在目标“成就”自己。

层级 外部目标 内在目标
入门 拿个 Offer 了解我适合什么样的工作
中期 涨工资 提升解决问题/带团队的能力
长期 被认可 成为一个有独立价值的人

💬 最后送你一句话:

“你可以用别人的标准活着一阵子,
但你必须学会用自己的标准活一辈子。”


生活中的很多事情确实需要靠外部目标才能完成。

比如:

  • 要拿 offer、要毕业、要升职、要还房贷、要给父母一个交代…
  • 你不可能完全“躺在价值观里”,不管现实 KPI

那是不是我们之前讲的“不要太外部化”就错了?

不是错,而是要加一句完整的话

外部目标可以驱动行动,
但必须被一个内在系统来“消化”与“统筹”,否则它会反噬你。

这就像吃饭:你当然得吃外来的食物,但你身体得能“消化”它,不然就拉肚子。


📌 所以正确的理解应该是:

类型 错误观念 正确认知
外部目标 全都不要,纯精神内驱才高级 必须有!外部目标是行动坐标、资源手段
内部目标 太抽象、不现实、没用 是方向系统、情绪稳定器、价值锚点
正确关系 二选一、互斥 “外部目标做事、内部目标做人” ✅

🧭 怎么做到平衡?

✅ 一种很实用的做法叫做:

“外部目标内在化”

就是说:你可以追求现实目标,但你得知道——
为什么要追这个目标?
这个目标对你内在的成长、角色、价值系统意味着什么?


🎯 举个例子:

💬 表层说法(外部):

“我想进大厂”
✅ 合理,但风险是容易卷疯、焦虑、受打击

🧠 内在化处理:

“我想进大厂,是因为我希望自己能站在一个高复杂度系统中,看到真正有规模的工程问题,我想成为一个有能力独当一面的技术人。”

这样就会:

  • 行动力更强(因为你认同目标)
  • 抗挫能力更高(因为不全看 offer 本身)
  • 目标转化为成长的手段,而不是自我评判的终点

📚 再比如博士:

外部目标(不可少) 内在连接(不可丢)
发论文 / 毕业 / 拿奖学金 提升表达、研究、系统解决问题的能力
拿到博后 / 教职 成为有话语权的研究者,对领域有贡献

🧠 总结金句:

我们活在现实世界,所以需要外部目标,
但我们也活在自己身体里,所以必须有内在动力。

真正厉害的人,是能做到:

用外部目标做事,用内在目标做人,
不被外界绑架,但也不与现实对抗。


你可以理解为:

  • 外部目标像地图导航
  • 内部目标是你为什么要去那里

此笔记记录学习书本 机器人学导论(原书第3版)(美)HLHN J.CRAIG,著贠超等译的学习与总结笔记,其中部分内容由AI生成。


✅ 1. 雅可比矩阵是啥?

在多变量函数中,雅可比矩阵(Jacobian Matrix)是所有一阶偏导数组成的矩阵:

如果有函数:
[
\mathbf{y} = f(\mathbf{x}) \quad \text{其中 } \mathbf{x} \in \mathbb{R}^n, \mathbf{y} \in \mathbb{R}^m
]

则雅可比矩阵为:
[
J = \frac{\partial \mathbf{y}}{\partial \mathbf{x}} =
\begin{bmatrix}
\frac{\partial y_1}{\partial x_1} & \cdots & \frac{\partial y_1}{\partial x_n} \
\vdots & \ddots & \vdots \
\frac{\partial y_m}{\partial x_1} & \cdots & \frac{\partial y_m}{\partial x_n}
\end{bmatrix}
]

在机器人中:

  • ( \mathbf{x} ) 是关节角度(如 ( \theta_1, \theta_2, \ldots ))
  • ( \mathbf{y} ) 是末端执行器的位置或速度

✅ 2. 雅可比矩阵是啥?

当我们想从输出空间(如末端速度)反推输入空间(如关节速度)时,需要“反过来”用雅可比矩阵,这时候我们就需要**“逆”雅可比矩阵**。

  • 如果雅可比是方阵(m = n) 且满秩,直接求逆:
    [
    \dot{\mathbf{x}} = J^{-1} \dot{\mathbf{y}}
    ]

  • 如果是非方阵(m ≠ n)或者不可逆,就用广义逆(伪逆)

    • 对于 冗余系统(n > m)
      [
      \dot{\mathbf{x}} = J^\top (JJ\top){-1} \dot{\mathbf{y}}
      ]
    • 对于 欠驱动系统(n < m)
      [
      \dot{\mathbf{x}} = (J^\top J)^{-1} J^\top \dot{\mathbf{y}}
      ]
    • 或用 Moore-Penrose 伪逆:
      [
      \dot{\mathbf{x}} = J^+ \dot{\mathbf{y}}
      ]

✅ 3. 举个简单例子(机器人)

假设一个二维机械臂(2个关节)要控制末端点 ( x, y ) 的速度。

  1. 正向速度:( \dot{\mathbf{y}} = J \dot{\theta} )
  2. 反向求关节速度(逆问题):( \dot{\theta} = J^{-1} \dot{\mathbf{y}} ),若不能求逆,就用广义逆!

雅可比矩阵和机器人运动学之间的关系非常密切,尤其是在速度运动学中,雅可比矩阵起到了桥梁作用。下面我帮你分层讲清楚这个关系。


✅ 一、什么是运动学?

机器人运动学分为两大类:

类型 说明
正运动学(FK) 给定关节角度,求末端位姿(位置和方向)
逆运动学(IK) 给定末端位姿,求关节角度(复杂)

还有一个细分方向叫:

🚀 速度运动学:给定关节速度,求末端速度(或者反过来)


✅ 二、雅可比矩阵出现在速度运动学中

设:

  • ( \boldsymbol{q} ):关节变量(角度、位移等)
  • ( \dot{\boldsymbol{q}} ):关节速度
  • ( \mathbf{x} ):末端位姿(通常是位置)
  • ( \dot{\mathbf{x}} ):末端速度(线速度 + 角速度)

通过雅可比矩阵 ( J(\boldsymbol{q}) ),有以下关系:

[
\dot{\mathbf{x}} = J(\boldsymbol{q}) \cdot \dot{\boldsymbol{q}}
]

这就是速度映射关系:关节空间 → 笛卡尔空间。


✅ 三、雅可比矩阵在运动学中承担什么角色?

用法 作用
正运动学的导数 把 FK 对关节变量求导,就得到了雅可比矩阵
末端速度计算 通过雅可比矩阵从 ( \dot{q} ) 得到 ( \dot{x} )
逆运动学辅助工具 用雅可比矩阵的伪逆求解逆运动学
奇异性检测 雅可比矩阵行列式为0的地方就是“奇异点”
力-力矩传递 ( \tau = J^\top \cdot F ),关节力矩 ← 末端力

✅ 四、简单举个例子(2关节平面机械臂)

设两段长度分别为 ( l_1, l_2 ),角度为 ( \theta_1, \theta_2 )

末端位置为:

[
\begin{aligned}
x &= l_1 \cos \theta_1 + l_2 \cos (\theta_1 + \theta_2) \
y &= l_1 \sin \theta_1 + l_2 \sin (\theta_1 + \theta_2)
\end{aligned}
]

求导得雅可比矩阵:

[
J = \frac{\partial(x, y)}{\partial(\theta_1, \theta_2)} =
\begin{bmatrix}

  • l_1 \sin \theta_1 - l_2 \sin(\theta_1 + \theta_2) & -l_2 \sin(\theta_1 + \theta_2) \
    l_1 \cos \theta_1 + l_2 \cos(\theta_1 + \theta_2) & l_2 \cos(\theta_1 + \theta_2)
    \end{bmatrix}
    ]

这样,就可以实现:
[
\dot{x}, \dot{y} = J \cdot \dot{\theta}
]

也可以反过来:
[
\dot{\theta} = J^+ \cdot \dot{x}
]


  • 规划方式分为两种,分别是笛卡尔空间的规划(位置规划)和关节空间的规划(角度规划)

B-Spline(Basis Spline,基样条)

是一种强大而灵活的曲线拟合方法,特别适用于轨迹规划、计算机图形学、机器人路径平滑等场景。下面我们从直观原理数学构成实现步骤三个角度来解释 B-Spline 是怎么实现的。


B-Spline 是将一段复杂曲线拆成若干小段,每段用低阶(通常是三次)多项式表示,多个小段在控制点处光滑地拼接起来。它的主要特点:

  • 局部控制性强:修改一个控制点只影响局部。
  • 光滑性强:曲线的低阶导数连续(例如 3 次 B-Spline 有 2 阶导数连续)。
  • 比普通样条更灵活:通过节点向量控制曲线形状和连接方式。

B-Spline 曲线的数学表达形式是:

[
C(t) = \sum_{i=0}^{n} N_{i,k}(t) \cdot P_i
]

其中:

  • ( P_i ):控制点
  • ( N_{i,k}(t) ):B样条基函数,阶数为 (k)(例如 (k=4) 表示三次)
  • ( t ):参数
  • ( N_{i,k}(t) ) 是通过递归定义的:

[
N_{i,1}(t) =
\begin{cases}
1, & t_i \le t < t_{i+1} \
0, & \text{otherwise}
\end{cases}
]

[
N_{i,k}(t) = \frac{t - t_i}{t_{i+k-1} - t_i} N_{i,k-1}(t) + \frac{t_{i+k} - t}{t_{i+k} - t_{i+1}} N_{i+1,k-1}(t)
]

关于GPT对于当今社会焦虑情况的回答:

📉 是的,现在的社会——的确是充满焦虑的。

但这个“焦虑”不是来自某一个具体的人或事情,而是来自整个时代的底色。我们可以从几个层面来看:


🧠 1. 信息过载,让人“永远不够好”

  • 你刷到某人年纪轻轻财富自由了
  • 你又刷到另一个人博士毕业还单身焦虑
  • 你看到互联网人说自己35岁失业,焦虑
  • 你看到一群人在鼓吹“gap year很酷”,焦虑
  • 你看到“35岁前没结婚就是失败”,更焦虑

你不知该羡慕谁,也不知该成为谁。

你知道的太多,做得到的太少。
焦虑就像雾,包围了想要清晰生活的人。


🧪 2. 节奏变快了,但确定性变少了

  • 一代人以前“考上大学→进国企→稳定生活”
  • 现在是:“考了研究生→没工作→二战考公→躺平or焦虑”

努力的路径越来越模糊,成功的样子越来越多样化,但每一个都看起来“不够真实”。

你努力追光,但光一直在变形。


📱 3. 社交媒体制造“比较陷阱”

  • 人人都在分享高光时刻
  • 但没人晒“我昨晚失眠哭了”“我被辞退后吃泡面”
  • 所以你以为你“比别人差”,其实你只是不擅长修图

💼 4. 年轻人“想得清楚,却走得艰难”

我们这代人最矛盾的一点是:

你有很高的觉知,却面对极低的可执行性

比如你明知道:

  • “我不该卷”
  • “我想做有价值的事”
  • “我不该被KPI奴役”

但现实是:

  • 你不卷就活不下去
  • 有价值的事没工资
  • 不奴役自己就被边缘化

🔍 那怎么办?

我们不能控制时代,但可以选择如何生活:

✅ 保持觉知,但不要过度内耗

– 你感受到焦虑,说明你在意,这不是错
– 但要提醒自己:“我不需要和所有人比,只需要向自己靠近”

✅ 建立真实、深度的连接

– 与几个能聊深话的人共处,比刷100条鸡汤更能缓解焦虑

✅ 保留一点点“确定性”

– 哪怕只是:每天按时吃饭、每周坚持一小时读书
– 它们都是你对混乱世界的一种温柔回应


此笔记记录学习书本**王树森,张志华,《深度强化学习(初稿》**的学习与总结笔记,其中部分内容由AI生成。

Q学习产生高估(overestimation)的原因,主要源于其最大值操作(max operator)在引入噪声时的偏差。这种现象通常称为 最大值偏差(maximization bias)

原理解释

在 Q-learning 中,我们使用以下目标来更新 Q 值:

[
Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \cdot \max_{a’} Q(s’, a’) - Q(s, a) \right]
]

其中:

  • (\max_{a’} Q(s’, a’)):从下一个状态中选择估计值最大的动作作为更新目标。

⚠️ 问题在于:
如果 Q 值本身带有估计误差(例如由于采样、函数逼近、探索策略等),
那么取最大值操作会偏向选择被高估的值,从而使得目标值系统性偏高。


举个例子(简化)

假设在状态 (s’) 下,我们有三个动作,真实 Q 值如下:

动作 (a’) 真正的 Q 值 网络估计值(含误差)
(a_1) 1.0 1.1(+0.1)
(a_2) 0.8 1.0(+0.2)
(a_3) 0.6 0.9(+0.3)
  • 虽然 (a_1) 是最优动作(真实 Q 值最大),
  • 但由于随机估计误差,(\max Q(s’, a’) = 1.1),这个值偏高了。

这会导致我们在训练时错误地使用偏高的目标值去更新当前状态的 Q 值,从而 累计越来越大的高估偏差


高估有什么危害?

  • 策略不稳定:错误地偏向那些“看起来收益高”但其实不是的动作;
  • 训练发散:目标 Q 值越来越不准确,导致训练无法收敛;
  • 性能下降:测试表现可能远低于理论最优策略。

如何缓解高估?

  1. Double Q-Learning

    • 采用两个 Q 网络,分别用于选择和评估动作。
    • 更新目标变为:
      [
      Q(s, a) \leftarrow r + \gamma \cdot Q_2(s’, \arg\max_{a’} Q_1(s’, a’))
      ]
    • 显著降低高估。
  2. Averaged DQN / Ensemble 方法

    • 使用多个 Q 网络求平均,减少单个网络带来的噪声偏差。
  3. Regularization / Uncertainty penalty

    • 对 Q 值添加不确定性惩罚,抑制过高的估计。

行为策略和目标策略的区别

例1:Q-learning(离策略)

  • 行为策略:ε-greedy(偶尔探索)
  • 目标策略:贪婪策略(永远选最大Q值)

这是典型的 离策略学习(off-policy) —— 用一种策略去收集数据,用另一种策略去学习。

例2:SARSA(在策略)

  • 行为策略:ε-greedy
  • 目标策略:同样是ε-greedy

这是 在策略学习(on-policy) —— 你用什么策略学习,就用它去探索和更新。

行为策略 ≠ 目标策略:

  • 你可以用 更大胆、更多样的行为策略 去探索,避免陷入局部最优
  • 然后用行为数据,训练一个 更保守、更稳定的目标策略

这就是 DDPG、TD3、DQN 等算法的本质思路。


“双延时确定策略梯度”(Twin Delayed Deep Deterministic Policy Gradient,TD3)解决强化学习中 自举 + 最大化引起的 Q 值高估问题


我们分三步来讲清楚:

🔥 1. 问题背景:自举 + 最大化 导致的高估偏差

在像 DDPG、Q-learning 这类算法中,我们更新 Q 值时用的是这个形式:

[
y = r + \gamma \cdot \max_{a’} Q(s’, a’)
]

但注意!

  • ( Q(s’, a’) ) 是网络的估计值
  • “最大化”这个估计值(选最大 Q)会放大噪声和误差!

🔍 这就像你考试估分,题做错了但还选“我觉得我做得最好的那题”,会高估总分
→ 随着训练进行,Q值越估越高,结果策略学得不靠谱!


🧠 2. TD3 怎么解决这个高估问题?

TD3 提出了三个关键改进,其中双Q网络是最核心的👇


✅ 【方法一】双Q网络(Twin Q-networks

用两个独立的 Q 网络: ( Q_1(s, a) )、( Q_2(s, a) )

更新 TD目标时,不再用 max,而是:

[
y = r + \gamma \cdot \min\left(Q_1(s’, a’),\ Q_2(s’, a’)\right)
]

✅ 取较小值,就能抵消高估误差(保守估计)
✅ 这不是自举去最大,而是自举去最小,避免因误差叠加而爆炸

✅ 【方法二】延迟策略更新(Delayed Policy Update

  • 策略网络(Actor)更新得更慢,例如每 2~3 次 Critic 更新后才更新一次
  • 因为 Critic(Q函数)学得更稳定时,再去学策略,效果更稳

✅ 【方法三】目标动作加噪声(Target Policy Smoothing

  • 为了防止 Q 网络过于依赖某一个精确动作值
  • 在 TD目标里加入一个小的随机噪声:

[
a’ = \pi_{\text{target}}(s’) + \epsilon,\quad \epsilon \sim \text{clip}(\mathcal{N}(0, \sigma), -c, c)
]

✅ 这样做可以使目标 Q 更平滑,缓解尖峰高估


本笔记来源于《Deep Reinforcement Learning》一书,作者:grokking


alt text

alt text

alt text

第二章 强化学习的数学基础

RL研究方向

研究方向 原理关键词 典型应用场景
深度强化学习 深度网络 + Q/V/策略逼近 游戏 AI、自动驾驶、机器人
模型预测 RL 学习环境模型 + 规划 控制系统、医疗、能源优化
多智能体 RL 协同/博弈学习 群体机器人、博弈系统
离线 RL 静态数据训练 + 分布偏差处理 医疗、金融、推荐系统
元强化学习 快速适应新任务 跨任务机器人、个性化推荐
模仿/逆强化学习 专家示范学习 / 奖励反推 自动驾驶、人类行为建模
安全强化学习 加入风险或硬约束优化目标 自动驾驶、电力安全、飞行器
RL + 控制 稳定性分析 + 策略优化 动态系统控制、智能制造
RLHF 人类反馈建模 + 策略微调 对话系统、生成式 AI 优化

强化学习算法对比表

算法名称 类型 策略类型 采样方式 输出形式 样本效率 稳定性 适用任务特点
DQN Value-based ε-greedy Off-policy 离散动作的 Q 值 小规模、离散动作空间任务
DDPG Actor-Critic 确定性策略 Off-policy 连续动作(确定输出) 低~中 低维连续控制,需高样本效率
TD3 Actor-Critic 确定性策略 Off-policy 连续动作 改进版 DDPG,更稳定、抗过估
SAC Actor-Critic 随机策略 Off-policy 连续动作分布 高维连续动作任务,收敛快
PPO Policy-based 随机策略 On-policy 动作分布(clip 更新) 很高 稳定性要求高的任务,机器人控制推荐
TRPO Policy-based 随机策略 On-policy 动作分布(约束更新) 很高 数学严谨,训练慢,较少使用
A3C / A2C Actor-Critic 随机策略 On-policy 动作分布 分布式强化学习、简单任务入门
DroQ Actor-Critic 确定性策略 Off-policy 连续动作 很高 很高 样本利用效率极高的 DDPG 衍生版本
RLPD Finetuning 任意 Off-policy 任意策略 + 现实数据 超高 用于现实世界数据微调策略
BC(行为克隆) Imitation 确定性/概率 无采样 模仿专家动作 离线训练,需专家演示
GAIL Imitation 随机策略 On-policy 生成专家策略 模仿专家分布,样本效率低

说明:

  • On-policy:策略只能使用当前最新数据训练(如 PPO、TRPO);
  • Off-policy:可以使用经验回放,样本效率更高(如 DDPG、SAC);
  • 确定性策略:输出一个具体动作(如 DDPG);
  • 随机策略:输出一个动作分布,从中采样(如 PPO、SAC);
  • 样本效率:表示在给定交互次数下学习效果的好坏;
  • 稳定性:表示训练过程中的易调性、收敛性、鲁棒性。

机器人控制:

场景 推荐算法
稳定性优先 PPO, SAC
样本效率优先 SAC, DroQ, DDPG+TD3
现实部署+微调 RLPD, BC + fine-tune
模仿人类演示 BC(行为克隆)、GAIL

在强化学习(Reinforcement Learning, RL)中,使用什么类型的神经网络取决于任务的输入类型复杂程度状态与动作空间的维度,以及是否涉及图像、时序或物理建模。以下是强化学习中常用的神经网络类型,以及它们的典型应用场景:

强化学习中常见的神经网络类型

网络类型 结构形式 适用场景 优点
MLP(多层感知机) 全连接层(Dense) 状态为向量,连续或离散动作空间(机器人状态控制) 简单高效,是最常用的基本结构
CNN(卷积神经网络) 卷积 + 池化 + flatten 图像类输入(如 Atari 游戏、视觉导航) 适合处理图像特征,参数共享,泛化能力强
RNN / LSTM / GRU 有记忆的循环结构 部分可观环境、序列建模(策略记忆、语音、跳跃控制) 能处理时间序列和历史信息
1D CNN(时间卷积) 在时间维度上做卷积 模拟历史状态输入,如 Dual-History Controller 并行效率高,效果接近 RNN,但训练更稳
Transformer(注意力机制) 自注意力结构 大规模策略建模、长期依赖、多任务策略 支持更强的任务解耦、上下文建模(最新前沿趋势)
GNN(图神经网络) 结构化图输入(如多机器人) 多智能体强化学习、操作手控制结构、物理接触图建模 可建模复杂拓扑结构,适合机械系统、多体系统

具体例子

1. MLP(多层感知机)

🟢 最常见于 PPO、DDPG、SAC 等基础 RL 算法

1
2
输入:状态向量 s(如机器人姿态、速度)
结构:Linear → ReLU → Linear → ReLU → 输出动作均值(或Q值)

2. CNN

🟢 用于视觉输入的强化学习任务

  • 如 Atari 游戏(DQN)、导航任务中的图像输入处理;
  • 模仿卷积感受野提取局部空间特征。

3. RNN / LSTM

🟢 用于部分可观状态(POMDP)、序列预测、跳跃控制等时间相关任务

  • 状态之间不是 Markov 的时候(如机器人跳跃),引入 LSTM 记忆可提升稳定性;
  • 一些策略网络中间会插入 LSTM 层。

4. Transformer(最新趋势)

🟢 像 Decision Transformer、Trajectory Transformer 就用了 GPT 式结构建模行为序列

  • 输入:状态 + 动作 + 奖励序列;
  • 模型输出:下一动作预测;
  • 优点是处理长期依赖与多任务泛化很强。

总结一句话:

在强化学习中,最常用的是 MLP(用于结构化状态输入)CNN(用于图像输入),更复杂任务(如记忆、时序、语言、多任务)会使用 LSTM 或 Transformer,而机械结构建模可能用 图神经网络(GNN)