尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【RL】从公式推导到电机控制:深入浅出理解 Policy Gradient 与 Sim-to-Real

【RL】从公式推导到电机控制:深入浅出理解 Policy Gradient 与 Sim-to-Real
📅 发布时间:2026/6/20 22:24:02

【RL】从公式推导到电机控制:深入浅出理解 Policy Gradient 与 Sim-to-Real

摘要:通过legged_gym训练四足机器人时,常常会遇到 Policy Gradient(策略梯度)的核心公式。本文不堆砌晦涩的术语,而是从数学推导出发,直观地解释这个梯度是如何一步步转化为控制电机转动的指令,并探讨为什么理论完美的策略在 Sim-to-Real 环节往往需要“域随机化”来救场。


1. 引言:由于什么我们在优化U ( θ ) U(\theta)U(θ)?

在强化学习(RL)的世界里,我们训练的智能体(比如一只 Unitree A1 机器狗)拥有一个大脑——策略网络(Policy Network),其参数由θ \thetaθ表示。

当我们看着训练曲线(Reward Curve)不断上升时,本质上我们是在优化一个核心指标:U ( θ ) U(\theta)U(θ)。

1.1U ( θ ) U(\theta)U(θ)的物理含义

U ( θ ) U(\theta)U(θ)代表的是期望回报 (Expected Return)。简单来说,它是衡量这只机器狗在当前智力水平(参数θ \thetaθ)下,平均能拿多少分。

数学定义如下:
U ( θ ) = E τ ∼ P θ ( τ ) [ R ( τ ) ] U(\theta) = E_{\tau \sim P_\theta(\tau)} [R(\tau)]U(θ)=Eτ∼Pθ​(τ)​[R(τ)]

其中:

  • τ \tauτ(Trajectory):代表机器人的一次完整尝试(从开机到摔倒或结束的一连串状态s ss和动作a aa的序列)。
  • R ( τ ) R(\tau)R(τ):这一次尝试获得的总分数(走得远加分,摔倒扣分,力矩过大扣分)。
  • P θ ( τ ) P_\theta(\tau)Pθ​(τ):在当前策略下,出现这条轨迹的概率。

我们的终极目标:找到一组参数θ \thetaθ,让U ( θ ) U(\theta)U(θ)最大化。


2. 数学魔法:Policy Gradient 推导 (Log-Derivative Trick)

为了最大化U ( θ ) U(\theta)U(θ),我们需要求它的梯度∇ θ U ( θ ) \nabla_\theta U(\theta)∇θ​U(θ),告诉参数该往哪个方向更新。这里用到了经典的似然比技巧 (Likelihood Ratio Trick)。

第一步:将期望展开为积分

期望本质上是加权平均,我们可以将其写成积分形式。假设奖励函数R ( τ ) R(\tau)R(τ)只由环境决定,与θ \thetaθ无关,我们将梯度算子∇ θ \nabla_\theta∇θ​移进积分号内部:

∇ θ U ( θ ) = ∫ ∇ θ P θ ( τ ) R ( τ ) d τ \nabla_\theta U(\theta) = \int \nabla_\theta P_\theta(\tau) R(\tau) d\tau∇θ​U(θ)=∫∇θ​Pθ​(τ)R(τ)dτ

第二步:Log-Derivative Trick(灵魂一步)

利用微积分中的恒等式( log ⁡ x ) ′ = 1 x (\log x)' = \frac{1}{x}(logx)′=x1​,我们可以反推出∇ x = x ⋅ ∇ log ⁡ x \nabla x = x \cdot \nabla \log x∇x=x⋅∇logx。
将P θ ( τ ) P_\theta(\tau)Pθ​(τ)看作x xx,代入上式:

∇ θ P θ ( τ ) = P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) \nabla_\theta P_\theta(\tau) = P_\theta(\tau) \nabla_\theta \log P_\theta(\tau)∇θ​Pθ​(τ)=Pθ​(τ)∇θ​logPθ​(τ)

现在,我们把这个结果代回第一步的积分中:

∇ θ U ( θ ) = ∫ P θ ( τ ) ∇ θ log ⁡ P θ ( τ ) R ( τ ) d τ \nabla_\theta U(\theta) = \int \color{red}{P_\theta(\tau) \nabla_\theta \log P_\theta(\tau)} R(\tau) d\tau∇θ​U(θ)=∫Pθ​(τ)∇θ​logPθ​(τ)R(τ)dτ

第三步:变回期望形式

观察上式,发现积分里又出现了P θ ( τ ) P_\theta(\tau)Pθ​(τ)。这意味着我们可以把积分重新写回期望的形式:

∇ θ U ( θ ) = E τ ∼ P θ ( τ ) [ ∇ θ log ⁡ P θ ( τ ) R ( τ ) ] \nabla_\theta U(\theta) = E_{\tau \sim P_\theta(\tau)} [\nabla_\theta \log P_\theta(\tau) R(\tau)]∇θ​U(θ)=Eτ∼Pθ​(τ)​[∇θ​logPθ​(τ)R(τ)]

第四步:消掉环境模型(Model-Free 的关键)

一条轨迹的概率P θ ( τ ) P_\theta(\tau)Pθ​(τ)由三部分组成:初始状态概率、环境转移概率(物理引擎)、策略网络概率。
当我们对θ \thetaθ求梯度时,所有与θ \thetaθ无关的环境物理规律(比如牛顿定律、摩擦系数)全部变成了 0。

最终,我们得到了那个著名的梯度公式:

∇ θ U ( θ ) ≈ 1 N ∑ i = 1 N ( ∑ t ∇ θ log ⁡ π θ ( a t ∣ s t ) ) R ( τ ( i ) ) \nabla_\theta U(\theta) \approx \frac{1}{N} \sum_{i=1}^{N} \left( \sum_{t} \nabla_\theta \log \pi_\theta(a_t|s_t) \right) R(\tau^{(i)})∇θ​U(θ)≈N1​i=1∑N​(t∑​∇θ​logπθ​(at​∣st​))R(τ(i))

为什么这个公式很牛?
它告诉我们:不需要知道环境的物理模型(Model-Free)。无论机器人结构多复杂,只要能通过仿真器采样出来,就可以训练!


3. 物理直觉:梯度是如何控制电机的?

把公式放到四足机器人项目中,每一个符号都有了物理含义。在legged_gym等框架中,策略π θ \pi_\thetaπθ​通常输出的是动作分布的均值。

我们可以把梯度更新公式简化理解为:

参数更新 ∝ ∇ θ log ⁡ π ( a ∣ s ) ⏟ 调整方向 ⋅ R ( τ ) ⏟ 调整幅度 \text{参数更新} \propto \underbrace{\nabla_\theta \log \pi(a|s)}_{\text{调整方向}} \cdot \underbrace{R(\tau)}_{\text{调整幅度}}参数更新∝调整方向∇θ​logπ(a∣s)​​⋅调整幅度R(τ)​​

场景 A:成功的尝试(R ( τ ) > 0 R(\tau) > 0R(τ)>0且很大)

  • 现象:机器狗这一步迈得很稳,没有摔倒,且速度达标。
  • 数学:奖励R RR为正,梯度方向与∇ log ⁡ π \nabla \log \pi∇logπ相同。
  • 效果:更新神经网络权重,增加在当前状态下输出该关节角度的概率密度。
  • 潜台词:“刚才那个姿势很帅,下次遇到这种情况还这么走!”

场景 B:失败的尝试(R ( τ ) < 0 R(\tau) < 0R(τ)<0)

  • 现象:机器狗腿软了或者劈叉了。
  • 数学:奖励R RR为负,梯度方向反转。
  • 效果:更新神经网络权重,抑制产生该动作的概率。
  • 潜台词:“刚才那个电机力矩给大了,导致翻车,下次收敛一点。”

4. 现实的挑战:Sim-to-Real 为何会失效?

理论上很完美,但在 Isaac Gym 或 MuJoCo 里训练好的“满分策略”,直接部署到真机(如 A1, ANYmal)上经常会表现得像个刚学步的婴儿,甚至直接抽搐。

这是因为我们计算梯度的分布P s i m P_{sim}Psim​和真实世界的分布P r e a l P_{real}Preal​存在Distribution Shift(分布偏移)。

4.1 核心差异点

  1. 执行器动力学 (Actuator Dynamics):
    • Sim: 假设电机是理想的,指令一下,扭矩瞬间到达。
    • Real: 真实的电机(如宇树 8010)有带宽限制、摩擦、死区和滞后。如果策略要求电机以 50Hz 剧烈抖动,真机根本响应不过来。
  2. 延迟 (Latency):
    • Real: 从 IMU 读取 -> C++ 驱动解析 -> 网络推理 -> 串口下发,整个链路存在几十毫秒的延迟。
  3. 接触模型:
    • 仿真里的地面通常是刚体,而真实地面可能是软的、滑的。

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

既然我们无法让P s i m P_{sim}Psim​完美逼近P r e a l P_{real}Preal​,强化学习的思路是:让P s i m P_{sim}Psim​变得超级宽,宽到把P r e a l P_{real}Preal​包进去。

在legged_gym的config中,我们通常会进行以下操作:

  • 随机化摩擦力:范围 0.5 ~ 1.5。
  • 随机化质量:给狗身加减 1-2kg 的负载。
  • 随机化外力:训练时不断推挤机器人。
  • 随机化延迟:模拟 10ms ~ 30ms 的控制回路延迟。

原理:如果你的神经网络能在摩擦力既大又小、身体既重又轻、延迟既长又短的“地狱模式”模拟中都能站稳,那么它在那个“唯一且确定”的真实物理世界中,大概率也能站稳。


5. 总结

Policy Gradient 的本质,就是通过大量的试错(Rollout),利用概率论的技巧,将“好的行为”概率推高,将“坏的行为”概率压低。

理解了这个公式,就理解了为什么我们需要大规模并行仿真(Isaac Gym),以及为什么Domain Randomization是 Sim-to-Real 的必经之路。

相关新闻

  • 2025 书店 + 健身房专属!全自动咖啡机靠谱厂家合集,小空间也适配 - 品牌2026
  • 2000-2024各省铁路里程、公路里程、交通网密度数据
  • Solidity入门(10)-智能合约设计模式1

最新新闻

  • P89LPC924/925 ADC触发与中断配置实战:从原理到代码避坑指南
  • B题:物流分拣中心排班问题 满分高阶解题思路与论文构架(全网独家纯逻辑解析篇)
  • 家里管道堵了别乱找!2026南通正规疏通维修团队甄选指南 - 宅安选房屋修缮
  • HandheldCompanion:终极掌机伴侣解决方案,轻松实现游戏控制器完美适配
  • 2026大同防水补漏避坑指南:卫生间/厨房/阳台/屋顶/地下室漏水检测维修全攻略,正规施工+透明报价+口碑榜靠谱服务商推荐 - 安佳防水
  • PyTorch自动混合精度(AMP)原理与工程调优实战

日新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号