解读 181 · 强化学习是什么:从奖励说起
解读对象:
docs/course/02-十个必懂概念.md(§4/§6)+ 构建日志 2026-09-06 的 exp001 实验
需要的前置:无——这是第十六辑第一课;想看代码里奖励长什么样,可跳 解读 24
教小狗握手:没人给它讲骨骼结构,做对了给零食,做错了没有,几次之后它就会了。强化学习
(reinforcement learning,RL)就是这套方法的数学版——不教规则,只给分数,让机器自己
试出"怎么做得分高"。这只鸭子就是这么学会走路的。
1. 四个词:试错学习的全部零件
- 策略(policy):小狗的"条件反射"。对鸭子来说是一个神经网络,每 20 毫秒吃 61 个数
(身体状态+你的指令),吐 14 个数(每个关节往哪转)。存成 ONNX 文件的就是它。 - 环境:仿真里的虚拟鸭子(MuJoCo)。策略做个动作,环境就告诉你新状态和这次动作的得分。
- 奖励(reward):训练时的评分表。走对方向加分、保持直立加分、滑脚碰撞扣分。
关键一句话:部署后的 ONNX 不读取奖励——评分表只在"上学"时存在,像退役运动员身上
长的是动作,不是裁判。 - 学习:哪类动作得了高分,策略就把它做得概率更大;低分的少做。PPO 算法负责这件事,
本文不展开公式,只需记住方向:分数不改动作本身,只改做每个动作的倾向。配置里
entropy_coef=0.01是给"多试试"留的一点随机性,防止它过早只会一招。
2. 分数从哪来:一张真实的评分表
velocity(走路)任务的 reward 表在配置里挂满权重:跟踪速度指令 +2.0、保持直立 +2.0、
抬脚留空(air_time)+3.0、腿姿 +1.0;自碰撞 -1.0、脚滑 -0.1。每一项都由 tasks/mdp.py
里的函数算出——"什么叫走得好"被拆成了十几个可加减的判据。改这张表就是改鸭子的性格:
想让它步子更大,改的是表,不是网络。
3. 鸭子的真实成绩单:exp001
2026-09-06,项目跑了一次教科书级的 A/B 实验:两组只差一个开关(A 组:IMU 观测随机化
ON;B 组:OFF),各 100 迭代 × 64 环境,本机 CPU 一组约 4 分钟、两组 8 分钟跑完。
结果:B 组(世界更乖)末段 reward 反超,1.014 vs 0.801,其余四项指标几乎重合。
exp001 教的三件事比数字本身值钱:
- 先写预注册再看结果——预期"100 迭代只能得出前期动力学差异"白纸黑字写在跑之前,
所以 B 领先时没人慌,也没人喊"随机化没用"。 - reward 高 ≠ 更强。后续扰动测试 exp001b 里,B 组被打时掉得更狠(-6.0% vs A 的
-4.6%)。分数是评分表上的数,不是生存能力。 - 训练量要有概念:exp001 全程 15 万步,官方配方约 49 亿步——只有 0.003%。
小实验用来回答"方向对不对",别用来炫技。
(还有一句同源教训:expD 的 ep_len 从 315 涨到 744、指标全线变好,鸭子却没学会迈步——
"指标会骗人"的完整案情见 解读 183。)
你带走的收获
- RL = 试错 + 打分:策略是条件反射,奖励是只存在于训练期的评分表,部署后不读奖励。
- 学习改的不是动作,是"做每个动作的倾向";PPO 负责把高分倾向调大。
- exp001 的 1.014 vs 0.801 说明 reward 易测、鲁棒性难测——结论必须带边界。
- 训练量差 4 个数量级以上时,小实验只回答方向问题。
延伸
- 解读 182:61→14 那个"条件反射"内部长什么样
- 解读 183:评分表怎么设计、怎么被骗
- 第 02 课:
docs/course/02-十个必懂概念.md(十个概念的生活版类比) - Hugging Face 深度强化学习课(系统学算法)