news 2026/5/10 22:50:26

【强化学习笔记】从数学推导到电机控制:深入理解 Policy Gradient 与 Sim-to-Real。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【强化学习笔记】从数学推导到电机控制:深入理解 Policy Gradient 与 Sim-to-Real。

【强化学习笔记】从数学推导到电机控制:深入理解 Policy Gradient 与 Sim-to-Real

前言
最近在研究基于/* by 01022.hk - online tools website : 01022.hk/zh/json2java.html */ legged_gym的四足机器人控制。在啃代码和论文的过程中,Policy Gradient(策略梯度)是一个绕不开的核心概念。
面对一堆\(\nabla\)\(\log\)符号,我不禁思考:这些抽象的数学公式,到底是如何变成控制电机输出扭矩的指令的?
本文将从最基础的目标函数出发,推导策略梯度公式,并结合 Sim-to-Real(仿真到真机)的工程难点,记录我的理解。


1. 核心目标:我们在优化什么?

在强化学习(RL)中,我们的机器狗(Agent)拥有一个策略网络(Policy Network),参数为\(\theta\)。我们的终极目标是找到一组参数,使得机器人在环境中的期望回报(Expected Return)最大化。

我们将这个目标函数记为\(U(\theta)\)

\[U(\theta) = E_{\tau \sim P_\theta(\tau)} [R(\tau)] \]

这里的符号含义如下:

  • \(\tau\)(Trajectory):轨迹。代表机器人从开机到结束的一连串状态\(s\)和动作\(a\)的序列。
  • \(R(\tau)\):回报。这条轨迹获得的总分数(例如:走得远+10分,摔倒-100分,电机发热-5分)。
  • \(P_\theta(\tau)\):概率。在当前策略\(\pi_\theta\)下,走出这条特定轨迹的概率。

简单来说,\(U(\theta)\)就是机器人目前的“平均考试成绩”。我们要做的,就是通过梯度上升,把这个分数提上去。


2. 数学推导:Log-Derivative Trick

为了提升\(U(\theta)\),我们需要求它的梯度\(\nabla_\theta U(\theta)\)。这里的核心难点在于:我们无法直接对环境(物理世界)求导。但是,利用似然比技巧(Likelihood Ratio Trick),我们可以巧妙地绕过环境模型。

2.1 展开为积分

期望本质上是加权平均。我们将\(U(\theta)\)写成积分形式:

\[\nabla_\theta U(\theta) = \nabla_\theta \int P_\theta(\tau) R(\tau) d\tau \]

假设奖励函数\(R(\tau)\)是由环境给出的客观反馈,与\(\theta\)无关,我们可以把梯度算子移进去:

\[= \int \nabla_\theta P_\theta(\tau) R(\tau) d\tau \]

2.2 引入 Log 技巧

利用微积分恒等式\((\log x)' = \frac{1}{x} \Rightarrow \nabla x = x \cdot \nabla \log x\),我们可以将\(\nabla_\theta P_\theta(\tau)\)替换为:

\[\nabla_\theta P_\theta(\tau) = P_\theta(\tau) \nabla_\theta \log P_\theta(\tau) \]

代回原式:

\[\nabla_\theta U(\theta) = \int \color{red}{P_\theta(\tau) \nabla_\theta \log P_\theta(\tau)} R(\tau) d\tau \]

2.3 变回期望,消掉环境

现在积分里又出现了\(P_\theta(\tau)\),这正是期望的定义。同时,将轨迹概率\(P_\theta(\tau)\)展开后,所有与策略参数\(\theta\)无关的环境转移概率(Dynamics)在求导时都变成了 0。

最终,我们得到经典的策略梯度公式:

\[\nabla_\theta U(\theta) = E_{\tau \sim P_\theta(\tau)} \left[ \sum_{t} \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot R(\tau) \right] \]

Note: 这个公式的强大之处在于Model-Free。它不需要知道机器人腿有多重、地面摩擦系数是多少,只要能采样(Rollout),就能训练。


3. 物理直觉:梯度如何影响电机?

公式中的\(\nabla_\theta \log \pi_\theta(a_t|s_t)\)实际上是在调整策略网络输出分布的均值(对于高斯策略)。

我们可以将参数更新过程具象化为:

  1. 正反馈(Reward > 0)

    • 如果机器狗做了一个动作(比如前腿抬高),并且之后没有摔倒,获得了正奖励。
    • 梯度会增加该状态下输出“前腿抬高”的概率。
    • 电机层面的效果:神经网络会记住这个关节位置,下次遇到类似状态,会更倾向于输出这个位置指令。
  2. 负反馈(Reward < 0)

    • 如果机器狗因为步幅过大导致劈叉,获得了负奖励。
    • 梯度方向反转,抑制该动作的概率。
    • 电机层面的效果:神经网络会学会“收敛”,减小输出幅度。

4. 工程挑战:Sim-to-Real Gap

在 Isaac Gym 仿真中,基于上述原理训练出的策略往往表现完美,但直接部署到真机(如 A1 或自定义的 8010 电机狗)上,常常会失效。

这就是著名的Sim-to-Real Gap,主要源于以下差异:

4.1 执行器动力学(Actuator Dynamics)

这是最关键的差异。

  • Sim: 理想电机。指令\(T_{cmd}\)下发,实际扭矩\(T_{out}\)瞬间到达。
  • Real: 真实电机(如宇树 8010)是一个复杂的动力学系统,存在带宽限制、死区、摩擦。高频的剧烈抖动指令在真机上根本执行不出来,甚至会导致电机过热保护。

4.2 延迟(Latency)

  • Real: 传感器数据(IMU MINS-200)通过串口回传\(\rightarrow\)C++解析\(\rightarrow\)Python推理\(\rightarrow\)指令下发。这个闭环通常有15ms-30ms的延迟。
  • 如果训练时没有模拟这个延迟,策略网络在真机上就会因为“反应慢半拍”而发生振荡。

4.3 解决方案:域随机化(Domain Randomization)

既然无法精准建模真实世界,我们就让仿真环境变得足够“恶劣”。在/* by 01022.hk - online tools website : 01022.hk/zh/json2java.html */ legged_gym中,我们通常会开启:

  • Mass Randomization: 随机改变机身质量。
  • Friction Randomization: 地面摩擦系数在 0.5~1.5 之间跳变。
  • Push Robots: 定时给机器人施加随机外力推挤。
  • Lag Simulation: 模拟随机的控制回路延迟。

只要策略能在这个充满了随机扰动的“混沌宇宙”中存活,它在那个唯一的真实世界中大概率也能稳定行走。


5. 总结

Policy Gradient 将数学上的概率优化与物理上的电机控制连接了起来。理解了这个过程,不仅有助于调参(Reward Scaling),更能让我们在面对 Sim-to-Real 失败时,理性分析是哪一部分分布(Distribution)出了问题。

目前的计划是先在 Isaac Gym 和 MuJoCo 之间跑通Sim-to-Sim的验证流程,利用 MuJoCo 更精准的物理引擎来检验策略的鲁棒性,为之后的真机部署打好基础。


本文基于个人学习理解整理,欢迎指正交流。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 10:12:14

如何快速搭建Papermerge文档管理系统:新手完整指南

如何快速搭建Papermerge文档管理系统&#xff1a;新手完整指南 【免费下载链接】papermerge Open Source Document Management System for Digital Archives (Scanned Documents) 项目地址: https://gitcode.com/gh_mirrors/pa/papermerge Papermerge是一款专为数字档案…

作者头像 李华
网站建设 2026/5/10 9:40:10

基于大数据的助农水果推荐系统的设计与实现开题报告

青岛黄海学院毕业设计&#xff08;论文&#xff09;开题报告题目名称&#xff1a;基于大数据的助农水果推荐系统的设计与实现学 院&#xff1a;大数据学院专 业&#xff1a;学生姓名&#xff1a;学 号&#xff1a;指导教师&#xff1a;职称/学历&#xff1a;2024年12月…

作者头像 李华
网站建设 2026/5/9 11:14:33

【dz-962】基于单片机的建筑工地环境检测系统

摘 要 随着城市化进程的加速&#xff0c;建筑工地的环境问题日益突出。粉尘污染和噪声污染不仅对施工人员的健康构成威胁&#xff0c;也对周边居民的生活质量产生负面影响。传统的环境监测手段往往依赖人工巡查或固定设备&#xff0c;存在数据滞后、实时性差、缺乏远程控制能力…

作者头像 李华
网站建设 2026/5/9 20:05:33

jQuery EasyUI 数据网格 - 创建自定义视图

下面直接给你最实用、最常见的自定义视图&#xff08;custom view&#xff09;方法&#xff0c;jQuery EasyUI datagrid 支持通过扩展默认 view 来实现超级灵活的布局&#xff0c;比如经典的卡片视图&#xff08;Card View&#xff09;、列表视图、图文混排视图等&#xff0c;复…

作者头像 李华
网站建设 2026/5/8 20:44:10

jQuery EasyUI 数据网格 - 创建页脚摘要

下面直接给你最实用、最常见的**页脚摘要&#xff08;footer summary&#xff09;**方法&#xff0c;jQuery EasyUI datagrid 支持超级好&#xff0c;复制粘贴就能用&#xff0c;领导最爱的“底部显示总计、平均值、记录数、选中行合计”等专业报表效果全都有&#xff01; 方法…

作者头像 李华
网站建设 2026/5/10 8:47:32

LangChain框架的输入输出

LangChain框架的输入输出&#xff08;I/O&#xff09;流程是一个标准化的数据处理管道&#xff0c;主要由提示、语言模型和输出解析器三个核心组件构成&#xff0c;它们协同工作实现与语言模型的交互。8.2.1 提示提示&#xff08;Prompt&#xff09;是向语言模型提供的输入文本…

作者头像 李华