运动控制算法入门到精通:从理论到嵌入式实战第125章 强化学习:策略梯度与PPO算法一、从一次电机抖动说起去年做四足机器人步态优化时,遇到一个诡异现象:用DQN训练出来的关节控制器,在仿真里跑得飞起,一上真机就开始高频抖动。示波器抓出来一看,动作值在±5°之间来回跳变,活像得了帕金森。后来发现是DQN的离散动作空间惹的祸——每个关节只能选几个固定角度,导致控制器在边界处反复切换。当时团队里有人提议:“要不试试连续动作空间?直接用策略梯度,让网络输出连续力矩值。”这一试,打开了新世界的大门。但随之而来的是另一个坑:策略梯度方差大得离谱,训练曲线像心电图。直到用上PPO,才算真正把强化学习搬上了嵌入式平台。二、策略梯度:别被公式吓到先别急着翻书。策略梯度的核心思想其实很朴素:让表现好的动作出现概率变大,表现差的动作概率变小。用数学语言说,就是沿着梯度方向更新策略网络的参数θ,使得期望回报最大化。梯度公式长这样:∇J(θ) = E[∇log π(a|s) * R]这里有个关键点——R是整条轨迹的累积回报。但实际写代码时你会发现,用整条轨迹的回报会导致方差爆炸。为什么?想象一下:你跑完一条100步的轨迹,最后一步摔倒了,但前面99步都走得很好。如果用整条轨迹的回报,前面99步的好动作也会被“惩罚”,这显然不合理。这里踩过坑:早期实现时直接用整条轨迹回报,训练出来的策略要么过于保守(不敢做任何冒险动作),要么过于激进(试图用高风险动作博取