第1章 强化学习基本概念:笔记
学完日期:2026-10-02。阶段小测:通过。 配套交互图:ch1-reward-hacking(奖励钻空子)、ch1-discount(折扣因子)、ch1-td-advantage(好坏/TD 误差)、ch1-explore-exploit(探索与利用)。
第1课 强化学习在干什么
- 智能体(agent):做决定的“大脑”,即控制 Microduck 的神经网络。
- 环境(environment):大脑以外的一切:鸭子身体、地面、重力。训练时一般是物理仿真器。
- 状态(state):每一刻能看到的具体数值,如“躯干前倾 8°,左膝 30°,下落速度 1.2 m/s”。
- 动作(action):每一刻发给每个电机的具体指令,如“左髋转到 +15°,右膝转到 −10°”。“行走”是成千上万个小动作连起来的效果,不是一个动作。
- 奖励(reward):这一步环境打的分。刚摔倒那一刻通常是一个大负分(如 −10),回合随之结束。
- 循环:看状态 → 做动作 → 环境变化 → 拿奖励 → 看新状态。目标:让长期累计奖励最多。
- 和监督学习的区别:没人告诉鸭子每一步的“正确答案”,只能靠奖励自己试。
奖励被钻空子(reward hacking):智能体只优化你写下的分数,不会猜你心里想要什么。
- 只奖励“往前走”:往前扑倒、用膝盖蹭着爬、原地疯狂抖腿往前蹦。
- 摔倒惩罚太重(如 −100):站着不动最划算,鸭子变保守。
- 只奖励“躯干直立”:站着不动。
- 正确修法:直接奖励你想要的行为(如速度跟踪奖励:速度越接近目标速度分越高),并调各项比例;而不是一个个去堵具体漏洞(“抖腿超过 1 秒扣 1 分”只会让鸭子换个姿势继续钻)。
- 设计奖励就是在调各项比例:每一项都把鸭子往某个方向推,推过头就出现新漏洞。
第2课 回报与折扣因子
- 回报(return):从现在起往后所有奖励加起来:
G = r0 + γ·r1 + γ²·r2 + γ³·r3 + … - 为什么不能只看眼前:迈步前要先把重心移到一边,这一刻会晃、要扣分;只有看到后面能走出去拿分,鸭子才肯吃眼前这点亏。
- 折扣因子 γ(0 到 1):越远的奖励越不确定,而且无限加下去会无穷大,所以打折。
- γ = 0:只看眼前这一步,永远不肯为迈步先晃一下。
- γ 太接近 1:远处奖励权重几乎和眼前一样,而远处又很不确定,训练不稳定、很慢。
- 走路任务常用 γ ≈ 0.99。
- 有效视野约
1/(1−γ)步:γ=0.9 约 10 步,γ=0.99 约 100 步;γ=1 时分母为 0,视野无法估算。 - 例题:3 步奖励都是 1,γ=0.5:
G = 1 + 0.5×1 + 0.25×1 = 1.75。
第3课 策略与价值函数
- 策略 π:输入当前状态,输出动作(每个电机的目标角度)。训练就是调这个网络的参数。
- 价值函数 V(s):输入只有状态,输出一个数:从这个状态开始、按当前策略走下去,预计能拿到的回报(G 的平均预估)。
- 站得稳、正准备迈步:V 高;已经前倾到 50° 快摔了:V 低。
- 好坏(TD 误差 / 优势的直觉):
好坏 = r + γ·V(新状态) − V(旧状态) - 正:比预期好 → 策略往“多做这个动作”挪一小步。
- 负:比预期差 → 往“少做”挪一小步。
- 看 V 升还是降:V(新) > V(旧) 说明状态变好了,反之变坏了。
- 不是“马上换成新策略”,而是把参数往那个方向挪一小步,成千上万次小步累积起来策略才变好。
- actor-critic:actor(策略网络)负责做动作,critic(价值网络)负责打分。PPO 就是这种结构。
- 例题:V旧=5,r=1,V新=2,γ=0.9:
1 + 0.9×2 − 5 = 1 + 1.8 − 5 = −2.2→ 少做,状态变坏。 - 例题:V旧=3,r=0.5,V新=4,γ=0.9:
0.5 + 3.6 − 3 = +1.1→ 多做,V 从 3 升到 4,状态变好(如站得更稳、更接近好的迈步姿势)。
第4课 探索与利用
- 利用:总做目前认为最好的动作。风险:“最好”只是“见过的里面最好”,会卡在局部最优(如小碎步往前蹭,不摔但姿势和速度都差,永远发现不了正常迈步)。
- 探索:时不时试别的动作,短期常常更差、多摔几次。两者必须平衡。
- 在 Microduck 上:策略输出“目标角度的均值 + 随机抖动”;抖动大小也是学出来的,早期大、后期小。
- 部署到真机:不保留抖动,只取均值。原因:① 探索是为了学习,真机上已经不学了;② 乱抖危险,会摔、会伤电机和齿轮。有异常再回仿真调整。
- 生物“遗传 = 利用、变异 = 探索”的类比可以用;但进化算法(一群策略比赛、淘汰、变异)和强化学习(一个策略靠打分一点点改,如 PPO)是两条路线,别混。
阶段小测要点
- 概念辨析:“右膝转到 −12°”=动作;“躯干前倾 8°,左脚刚离地”=状态;输入关节数据输出电机角度的网络=策略;“这一步 +0.3 分”=奖励。
- 只奖励直立 → 站着不动;修法:加前进速度(跟踪)奖励,而不是笼统惩罚“不动”。
- γ=0.9,奖励 2、0、−1:
G = 2 + 0.9×0 + 0.81×(−1) = 2 + 0 − 0.81 = 1.19。 - V旧=4,r=1,V新=3,γ=0.9:
1 + 2.7 − 4 = −0.3→ 少做,状态变坏。 - 原地抖腿、奖励曲线卡在低位:原因一 探索不够卡在局部最优 → 加大探索(调大随机抖动、鼓励保持随机性);原因二 奖励有漏洞 → 加前进速度奖励,直接奖励想要的行为。
学员薄弱点(下一章继续盯)
- 概念的输入和输出容易混:尤其是价值函数(输入只有状态,输出一个预计回报数)。
- 答题不先给结论,式子不算到最后:先写结论再讲理由;列出式子不等于做完题,必须写出最终数值。
- 修奖励习惯堵具体漏洞:应该直接奖励想要的行为(如速度跟踪),再调各项比例。
错题本
- 价值函数的输入输出说错:答成“输入当前动作的打分,输出动作和策略预期得分”。正解:输入只有状态,输出一个数(预计回报);打分是拿 V 算出来的结果,不是 V 的输入。
- 算错符号导致结论反了:
1 + 0.9×2 − 5误算为 +2.2、结论“多做”。正解:1 + 1.8 − 5 = −2.2,比预期差,应少做。 - 符号混用:把 γ=0 写成 r=0。r 是奖励,γ 是折扣因子。
- 部署时是否保留抖动,没先给结论:只说“真机上保持稳定测试,有异常再回训练环境调整”。正解:先答“不保留”,再讲两条理由(不再学习;乱抖危险)。
- 小测第 3 题没算出结果:只列了
G = 2 + 0.9×0 + 0.9²×(−1),没写最终值。正解:G = 1.19。
下一步
第 2 章:Python、NumPy 和数学摸底补课(之后进入 PPO 前的铺垫)。
本章互动页
ch1-reward-hacking
ch1-discount
ch1-td-advantage
ch1-explore-exploit
互动页可直接打开,或下载后用浏览器打开。教学示意,非真实数据/规格。