第二章:强化学习基础回顾——MDP、PPO、Actor-Critic与奖励函数设计

各位同学,欢迎来到《人形机器人策略训练进阶》的第二讲。今天咱们不聊虚的,直接扎进强化学习的几个核心地基:MDP、PPO、Actor-Critic架构,还有那个让人又爱又恨的奖励函数设计。

说实话,我当年刚接触人形机器人时,觉得强化学习就是调参炼丹。后来踩了无数坑才明白——地基不牢,地动山摇。今天这一讲,我会把我在项目中摔过的跟头、总结的经验,一股脑儿倒给你们。

2.1 马尔可夫决策过程(MDP)——你机器人的“世界观”

MDP说白了,就是给机器人定义一个“世界怎么运转”的规则。你想想看,机器人走路、抓东西、避障,本质上都是在做一件事:根据当前状态,选一个动作,然后进入下一个状态,拿到一个奖励。

MDP用数学语言描述就是五元组:(S, A, P, R, γ)。

  • S:状态空间。比如机器人关节角度、质心位置、地面接触力。
  • A:动作空间。比如电机扭矩、目标关节角度。
  • P:状态转移概率。从状态s执行动作a后,到s'的概率。
  • R:奖励函数。这一步做得好不好。
  • γ:折扣因子。未来的奖励打多少折扣。

核心要点:MDP假设“未来只取决于当前状态和动作”,跟历史无关。这个假设在机器人上基本成立——你现在的关节角度,已经包含了所有历史信息。

我在项目中遇到过一个问题:有人把机器人20帧的历史状态都塞进MDP的状态空间,结果训练慢得像蜗牛。其实没必要,当前帧的完整状态就够了。除非你的传感器有延迟,才需要加几帧历史。

2.2 PPO算法原理——稳定训练的“定海神针”

PPO(Proximal Policy Optimization)是目前人形机器人训练中最常用的算法之一。为什么?因为它稳定。

早期的策略梯度算法,步子迈大了容易扯着蛋——一次更新太多,策略直接崩了。PPO的核心思想就是:每次更新别太贪心,小步慢走。

PPO的目标函数长这样:

L_CLIP(θ) = E_t[ min( r_t(θ) * A_t, clip(r_t(θ), 1-ε, 1+ε) * A_t ) ]

其中 r_t(θ) 是新旧策略的概率比,A_t 是优势函数,ε 是裁剪范围(通常0.2)。

嗯,这里要注意:裁剪不是硬截断。它只是说,如果新旧策略差异太大,就把梯度拉回来。我见过有人把ε设成0.01,结果策略几乎不更新,训练了三天原地踏步。

我的经验:ε从0.2开始调。如果训练震荡厉害,降到0.1;如果收敛太慢,升到0.3。但别超过0.4,否则稳定性会崩。

我曾经在一个双足机器人项目上,用PPO训练行走。一开始策略更新太快,机器人走着走着就劈叉了。加上裁剪后,虽然收敛慢了点,但至少不会“自杀”了。

2.3 Actor-Critic架构——左手策略,右手价值

Actor-Critic架构,说白了就是一个演员,一个评论家。

  • Actor(演员):负责输出动作。输入状态,输出动作概率分布或具体动作值。
  • Critic(评论家):负责评估状态的价值。输入状态,输出一个标量——这个状态有多好。

两者互相配合:Actor根据Critic的反馈调整策略,Critic根据实际奖励修正自己的判断。

我习惯用两个独立的神经网络来实现Actor和Critic。有人喜欢共享底层特征提取层,但我在人形机器人上试过,共享层容易导致梯度冲突——Actor想往东,Critic想往西,最后两边都学不好。

避坑指南:我曾经在一个人形机器人抓取任务中,让Actor和Critic共享了前3层网络。结果训练到一半,Critic的loss降不下去,Actor的策略也卡住了。分开后,问题立刻解决。

你想想看,Actor和Critic的学习目标不同:Actor要最大化累积奖励,Critic要最小化价值预测误差。强行共享参数,就像让一个厨师同时当会计——不是不行,但容易出错。

2.4 奖励函数设计原则——好的奖励让机器人“开窍”

奖励函数设计,是强化学习里最像“艺术”的部分。我见过太多项目,算法没问题,网络结构没问题,就是奖励函数写得稀烂,导致机器人学出一堆“骚操作”。

设计奖励函数,我总结了四条原则:

  1. 稀疏奖励 vs 密集奖励:稀疏奖励(只有成功/失败才给分)训练慢但最终策略鲁棒;密集奖励(每一步都给反馈)训练快但容易陷入局部最优。人形机器人我建议混合使用:主要用密集奖励引导,偶尔给稀疏奖励做“期末考试”。
  2. 奖励不要太大,也不要太小:我习惯把奖励范围控制在[-1, 1]之间。太大梯度爆炸,太小信号淹没在噪声里。
  3. 惩罚要谨慎:惩罚机器人摔倒可以,但别惩罚得太狠。我曾经给摔倒设了-100的奖励,结果机器人学会了“躺平”——反正不动就不会摔倒。
  4. 奖励函数要可解释:每个奖励项都要能说清楚“为什么”。比如“关节速度惩罚”是为了防止抖动,“质心高度奖励”是为了保持直立。

一个实际例子:我在训练人形机器人行走时,奖励函数长这样:

  • 前进速度奖励:+0.5 * v_x(鼓励向前走)
  • 能耗惩罚:-0.01 * Στ²(减少不必要的扭矩)
  • 姿态奖励:+0.3 * (1 - |倾角|)(保持直立)
  • 摔倒惩罚:-10(摔倒就扣分)

这个组合让机器人在3小时内学会了稳定行走,而不是原地踏步或者疯狂抖动。

最后说一句:奖励函数不是一次写好的。我通常先写一个版本,训练看看机器人的行为,然后根据“它学会了什么奇怪的东西”来调整。迭代个三五次很正常。

本章知识体系总览

下面这张图,是我自己画的MDP、PPO、Actor-Critic和奖励函数之间的关系图。你看一眼,就能明白它们怎么串起来的。

MDP 五元组 S, A, P, R, γ 定义“世界如何运转” 提供框架 Actor-Critic Actor: 输出动作 Critic: 评估状态价值 算法实现 PPO 裁剪更新 稳定训练 奖励函数设计原则 稀疏 vs 密集 | 范围控制 | 惩罚谨慎 | 可解释性 引导机器人学习期望行为 迭代设计,观察行为后调整 R 来自 MDP Critic 依赖奖励 目标函数含奖励 核心逻辑 MDP定义问题 → 奖励函数引导目标 → Actor-Critic提供架构 → PPO稳定训练 四者缺一不可,共同构成人形机器人策略训练的基础

好了,这一章的内容就到这里。MDP是骨架,奖励函数是灵魂,Actor-Critic是手脚,PPO是稳定器。把这四样东西吃透了,后面训练人形机器人策略时,你会少走很多弯路。

可可精品资料库