腿足机器人之十三-强化学习PPO算法
腿足机器人之十三-强化学习PPO算法
- 腿足机器人位姿常用强化学习算法
- PPO算法核心原理
- PPO算法的创新设计
- PPO算法典型流程
- 优势函数
对于复杂地形适应性(如楼梯、碎石路),传统的腿足机器人采用基于模型的控制器,该方法依赖精确动力学建模(如 ZMP 控制),存在参数调优困难以及环境扰动鲁棒性差,而采用端到端的强化学习方法,则将建模的任务交给了强化学习模型自主构建,这增加了模型对环境变化的自适应性。
腿足机器人位姿常用强化学习算法
PPO(Proximal Policy Optimization)算法稳定性强,适合大多数的仿真环境,如MuJoco/Isaac Gym,是初上手的首选,SAC(Soft Actor-Critic )算法在需要高效探索或真实机器人部署(样本成本高)时更优,际工程中,PPO+SAC 组合(如 PPO 微调 + SAC 迁移)已成为提升鲁棒性的常见方案。
-
PPO
- 核心特点:
- On-policy:依赖当前策略生成的数据,更新后数据即失效
- 信任域约束:通过剪切目标函数(Clipped Surrogate Objective)限制策略更新幅度
- 稳定性强:适合高维状态和动作空间,是机器人控制的基准算法
- 适用场景:
- 仿真环境中的行走、跑步等复杂运动(如 MuJoCo Humanoid)
- 需要平衡探索与利用的任务
- 优势:
- 超参数鲁棒性高,易于实现和调试
- 核心特点:
-
SAC(Soft Actor-Critic)
- 核心特点:
- Off-policy:可复用历史数据,样本效率高
- 最大熵优化:最大化策略熵以鼓励探索,适合复杂环境
- 双 Q 网络:减少价值函数估计偏差
- 适用场景:
- 需要高效探索的连续控制(如机械臂操作、崎岖地形行走)
- 对实时性要求较低但需高精度的任务
- 优势:
- 在 DeepMind 的《Learning to Walk in the Real World》等实际机器人项目中表现优异
- 对高维动作空间(如多关节协同)的适应性优于 PPO
- 核心特点:
算法 | 收敛速度 | 最终性能 | 超参数敏感性 | 代码复杂度 |
---|---|---|---|---|
PPO | 中等 | 高 | 低 | 简单 |
SAC | 快 | 极高 | 中等 | 中等 |
PPO 通过替代目标函数的多轮优化和隐式信任域约束,解决了传统策略梯度方法样本效率低和 TRPO 实现复杂的问题,成为强化学习领域平衡性能与实用性的里程碑式算法。其设计思想被后续算法(如 PPO-Clip/PPO-Penalty)广泛继承,并成为机器人控制、游戏 AI 等场景的默认选择。
PPO算法核心原理
该算法是OpenAI在2017年发布的,OpenAI一直想做的是AGI,chatGPT是AGI决策中枢,而机器人是AGI在现实世界交互的核心,而机器人运动、姿态控制室交互中的核心。未来会有越来越多的AGI公司将研究机器人,也会有越来越多的机器人公司研究AGI。
为了便于理解,前面介绍过运动学、逆运动学、概率学介绍过腿足机器人的状态空间和动作空间,这里在罗列一下:
- 状态空间(State),下面公式中为 s t s_t st
- 本体感知:关节角度 / 速度、躯干姿态(欧拉角 / 四元数)、足端触力等
- 外部感知:IMU 数据、地形高度图(RGB-D 相机输入需 CNN 编码)
- 在上一篇文章中,还提到了Helix的VLA,就是加了txt输入,其实就是audio,和视觉类似,听觉/语言采用Embedding的方式输入,这里只是展示PPO算法核心原理不赘述。
- 动作空间(Action),下面公式中为 a t a_t at
- 电机位置 / 力矩控制(PD 控制器辅助平滑)
- 混合动作:步态相位参数 + 关节目标角度(如 MIT Cheetah 的 RL+MPC 架构)
PPO方法的核心公式是:
g ^ = E t [ ∇ θ log π θ ( a t ∣ s t ) ⋅ A ^ t ] ( 1 ) \hat g = \mathbb E_t \Big [ \nabla_{\theta}\log \pi_{\theta}(a_t| s_t) \cdot \hat A_t\Big ] (1) g^=Et[∇θlogπθ(at∣st)⋅A^t](1)
其符号含义如下:
- g ^ \hat g g^,表示的是估计的梯度(g表gradient),上三角表示估计
- θ \theta θ,表示的是参数集,因为我们这里采用的DRL(可参考前两篇博客),所以这里的参数集就是一个深度神经网络的参数集,PPO的算法就是使得神经网络的参数( θ \theta θ)最优(机器人行走、跑、操作物体等)。
- π θ \pi_{\theta} πθ,策略网络(这里就是神经网络), π θ ( a t ∣ s t ) \pi_{\theta}(a_t|s_t) πθ(at∣st)表示的是神经网络输入状态 s t s_t st(如关节角度、躯干姿态),输出动作 a t a_t at (如关节目标角度)的概率。
- log π θ ( a t ∣ s t ) \log \pi_{\theta}(a_t|s_t) logπθ(at∣st),取对数的概率,表示是DRL模型(从PPO的角度这是一个策略)选择 a t a_t at动作的“偏好程度”。
- A ^ t \hat A_t A^t,优势函数(Advantage Function) 的估计值,衡量在状态 s t s_t st下选择动作 a t a_t at相比平均表现的优劣。详细后面再展开
- ∇ θ \nabla_{\theta} ∇θ,表示PPO策略参数(就是DRL模型参数) θ \theta θ的梯度算子,其作用是指示如何调整参数 θ \theta θ以优化目标函数。 θ k + 1 = θ k + α ∇ θ ( g ^ ) \theta_{k+1} = \theta_k + \alpha \nabla_{\theta}(\hat g) θk+1=θk+α∇θ(g^)
- E t \mathbb E_t Et是对时间步 t t t的轨迹数据求期望(实际中用经验平均代替),常常通过蒙特卡洛采样近似计算。
整个公式的意义是通过调整参数 θ \theta θ,使得高优势 A ^ t > 0 \hat A_t > 0 A^t>0的动作概率增加(可理解为走的更稳、更快、更节能),低优势 A ^ t < 0 \hat A_t <0 A^t<0的动作概率减少。
PPO算法的创新设计
替代目标函数和多轮次优化是PPO算法的创新点,大大提升了训练的效率和稳定性,二者算是协同不可分割。
- 替代目标函数(Surrogate Objective)
采用CLIP机制来改进目标函数 g ^ \hat g g^
L C L I P ( θ ) = E t [ min ( r t ( θ ) A t , 1 − ϵ , 1 + ϵ ) A t ] ( 2 ) L^{CLIP}(\theta) = \mathbb E_t \Big [ \min(r_t(\theta)A_t, 1 - \epsilon, 1 + \epsilon)A_t\Big ] (2) LCLIP(θ)=Et[min(rt(θ)At,1−ϵ,1+ϵ)At](2)
- r t ( θ ) = π θ ( a ∣ s ) π θ o l d ( a ∣ s ) r_t(\theta) = \frac{\pi_{\theta(a|s)}}{\pi_{\theta_{old}}(a|s)} rt(θ)=πθold(a∣s)πθ(a∣s),重要性采样比
- ϵ \epsilon ϵ是超参数(通常取0.1~0.3),限制策略更新幅度。
2.多轮次优化指的是数据复用
其复用流程如下:
采样 N 步交互数据 → 2. 计算优势函数(GAE) → 3. 执行 K 次 minibatch 梯度更新(K=3~10)
PPO算法典型流程
- 数据收集:
启动个N并行环境,每个环境运行T步,收集NT步数据。如训练腿足机器人走完10米这个任务,在NT步数据中有走完10米的,有走半步就倒的,有绕圈走完的,有很快走完的,等等
记录状态、动作、奖励、值函数估计 V ( s ) V(s) V(s)。 - 优势计算:
使用截断 GAE 计算每步的优势值 A ^ t \hat A_t A^t。 - 损失构建:
对NT步数据计算组合损失 L C L I P + V F + S L^{CLIP+VF+S} LCLIP+VF+S。 - 优化更新:
执行多轮次(如 K=3~10)小批量随机梯度上升。
在数据收集的时候,在一个环境中,进行一步之后,就得到 s 1 ∣ s 0 , a 0 {s_1|s_0,a_0} s1∣s0,a0,这个时候是可以计算到一个梯度的,但是并没有完成走完10米这个任务,所以这个时候并不更新模型参数 θ \theta θ,然后再 s 2 ∣ s 1 , a 1 {s_2|s_1,a_1} s2∣s1,a1,这个时候同样可以得到一个梯度,可以知道的是这两个采样,都是基于就的策略 π θ o l d \pi_{\theta_{old}} πθold的,所以公式2中要约束新的策略不能偏离就的策略太远。同时通过并行采集和多轮次更新,充分利用数据,CLIP 机制和熵奖励共同避免策略崩溃,这样训练的效率就会高很多。
优化更新,如k取3时,当第一个3来的时候,梯度更新依赖的是 π θ o l d ( a ∣ s ) \pi_{\theta_{old}}(a|s) πθold(a∣s),然后当k==6时,需要再次更新梯度以update策略参数,但是此时并没有使用第一个3更新之后的策略参数取采样(比如走完10米采样),使用的更新梯度的采样还是最早的 π θ o l d ( a ∣ s ) \pi_{\theta_{old}}(a|s) πθold(a∣s)策略,所以前面需要CLIP,以约束偏离程度。
优势函数
优势函数(Advantage Function) 用于衡量在状态 s t s_t st下选择动作 a t a_t at的优劣,定义为:
A ( s t , a t ) = Q ( s t , a t ) − V ( s t ) A(s_t, a_t) = Q(s_t, a_t) - V(s_t) A(st,at)=Q(st,at)−V(st)
其中 Q ( s t , a t ) Q(s_t, a_t) Q(st,at)是动作价值函数, V ( s t ) V(s_t) V(st)是状态价值函数,广义优势估计(Generalized Advantage Estimation, GAE)通过多步回报平衡偏差与方差,其原始形式为:
A ^ t G A E ( γ , λ ) = ∑ k = 0 + ∞ ( γ λ ) k δ t + k \hat A_t^{GAE(\gamma,\lambda)} = \sum \limits_{k=0}^{+\infty}(\gamma \lambda)^k \delta_{t+k} A^tGAE(γ,λ)=k=0∑+∞(γλ)kδt+k
其中 δ t = r t + γ V ( s t + 1 ] ) − V ( s t ) \delta_t = r_t + \gamma V(s_{t+1]}) -V(s_t) δt=rt+γV(st+1])−V(st)是单步时序差分误差。 r t r_t rt是即时奖励。 γ V ( s t + 1 ] ) \gamma V(s_{t+1]}) γV(st+1])下一状态的折扣价值, − V ( s t ) -V(s_t) −V(st)是当前状态价值的负值。
核心是通过加权多步时序差分误差,平衡短期与长期回报的贡献。公式推导表明,当 λ = 1 \lambda =1 λ=1时,截断 GAE 退化为有限步数的蒙特卡洛估计,确保了计算可行性和理论一致性。实际应用中,调整 λ \lambda λ和轨迹T长度可灵活控制策略优化的稳定性与效率。
在双足机器人中, V ( s ) V(s) V(s)表示从状态 出发,遵循当前策略 的预期累积折扣回报,可以通过神经网络(Critic 网络)预测当前状态的 “未来潜力”。在PPO中, Q ( s , a ) Q(s,a) Q(s,a)不直接由网络预测,而是通过使用Critic 网络预测下一状态价值隐式步骤计算。
下面是仿真环境训练的截图。
总的来说,PPO 凭借其稳定性、高样本效率和易用性,已成为腿足机器人运动控制的主流算法。通过合理的奖励函数设计和状态空间表征,PPO 可实现复杂地形下的自适应运动。未来结合 Sim2Real 技术和混合控制架构,将加速从仿真到实际机器人的部署进程。