跳转到内容

强化学习超详细教程:第2章 - 经典算法(DP/TD/Q-Learning/DQN/PPO)

本章是强化学习系列第 2 章:把经典算法讲成一套可选型、可调参的工具箱。

风格专业 + 科普。关键步骤给出简单公式,并解释每个符号/参数在干什么;同时讲清「为什么 → 怎么调 → 效果 → 被什么取代/还能增强什么」。
目标:能选型、能调参、能读懂论文里的核心更新式,而不是背推导。
预计时间:3–4 周(每天 2–4 小时)
前置:第1章 搞清状态 ss、动作 aa、奖励 rr、策略 π\pi、回报 GG;会跑 Python 即可。


学完后,你应能:

  1. 用白话 + 1~2 个核心公式,说清 DP / TD / Q-learning / DQN / REINFORCE / PPO 各自在优化什么。
  2. 指出每个算法关键旋钮(学习率、γ\gammaε\varepsilon、clip 等)调大/调小的后果。
  3. 说明一代算法解决了上一代的什么痛点,又被什么方向增强或取代。
  4. 结合生物 / 多组学 / 序列任务做第一推荐算法

配套代码:

文件作用
dp_value_iteration.py有模型时算出 VV^*π\pi^*
dqn_cartpole.py最小 DQN:回放 + 目标网络
ppo_cartpole_sb3.pyPPO 一键收敛曲线

📥 配套代码可直接下载运行dp_value_iteration.py · dqn_cartpole.py · ppo_cartpole_sb3.py

符号含义调它时你在改什么
s,a,r,ss, a, r, s'状态、动作、奖励、下一状态问题建模本身
γ[0,1)\gamma \in [0,1)折扣:多在乎未来越大越有远见,学得更难、更慢
α\alpha 或学习率一次更新走多远太大震荡,太小爬不动
π(as)\pi(a\|s)策略:在 ssaa 的概率策略类方法直接改它
V(s)V(s)状态价值:从 ss 出发平均能得多少评委打分
Q(s,a)Q(s,a)动作价值:在 ssaa 再按策略走的期望回报给「局面+选择」打分
GtG_t从时刻 tt 起的折扣回报MC 的「真实总分」

图示
主线在干什么代表核心更新直觉
价值路线先估 VVQQ,再贪心选动作Q-learning、DQN把分打准
策略路线直接改 πθ\pi_\thetaREINFORCE、PPO好动作更常出现
混合路线Actor 改策略,Critic 估价值A2C、PPO、SAC现代默认

2. 动态规划:有说明书时的「理想标尺」

Section titled “2. 动态规划:有说明书时的「理想标尺」”

若你完全知道转移 P(ss,a)P(s'|s,a) 与奖励 RR,就不必瞎试,可像解规划题一样算出最优策略。
真实生物实验几乎没有完整说明书,所以 DP 很少直接上生产;但它给出「最优长什么样」,后面算法都在逼近它。

对每个状态,取「最好动作」的期望回报:

Vk+1(s)=maxasP(ss,a)[R(s,a,s)+γVk(s)]V_{k+1}(s)=\max_a \sum_{s'} P(s'|s,a)\Big[R(s,a,s')+\gamma V_k(s')\Big]
符号是什么白话
Vk(s)V_k(s)kk 轮对状态 ss 的估价当前版本的「局面分」
maxa\max_a在所有动作里选最好的理想最优,不将就
$P(s’s,a)$aa 后到 ss' 的概率
R(s,a,s)R(s,a,s')这次转移拿到的奖励即时得分
γVk(s)\gamma V_k(s')未来价值的折扣明天的分打几折算进今天

收敛后,最优策略:

π(s)=argmaxasP(ss,a)[R+γV(s)]\pi^*(s)=\arg\max_a \sum_{s'}P(s'|s,a)\Big[R+\gamma V^*(s')\Big]

即:每个状态选使「即时奖励 + 折后未来」最大的动作。

Policy Iteration 直觉:先固定策略算 VπV^\pi(评估),再贪心改策略(改进),循环直到策略不变。Value Iteration 把两步压成上面一个 max\max

旋钮调大调小建议
γ\gamma更有远见;对模型误差更敏感更短视;收敛常更快0.9–0.99
收敛阈值 θ\theta更精、更慢更粗、更快教学可稍松
状态/动作数一多就维数灾难
  • 优点:精确、可复现、可当金标准。
  • 缺点:必须有模型;状态一大就算不动。
  • 体感:小网格 / 玩具 MDP 几乎瞬间得到最优路径。
  • 运行:python dp_value_iteration.py

后来被什么取代?能增强什么?

Section titled “后来被什么取代?能增强什么?”
痛点后续方向增强了什么
没有真模型Model-free:MC / TD / Q-learning用采样代替说明书
模型不准学模型再规划(MBRL)、世界模型 Dreamer在「想象」里多步决策
状态太大神经网络近似 V/Q/πV/Q/\pi可处理图像、组学向量

今天仍有用:验证奖励设计;当新算法对照;学到近似模型后内部仍可做规划。


3. 蒙特卡洛 vs 时间差分:何时结算成绩?

Section titled “3. 蒙特卡洛 vs 时间差分:何时结算成绩?”

两者都是 model-free:只靠真实轨迹学习。

整局结束后用真实总分更新,还是每一步用「即时奖励 + 下一步估价」更新?

Monte Carlo 更新:

V(st)V(st)+α(GtV(st))V(s_t)\leftarrow V(s_t)+\alpha\big(G_t-V(s_t)\big)

TD(0) 更新:

V(st)V(st)+α(rt+1+γV(st+1)TD 目标V(st))V(s_t)\leftarrow V(s_t)+\alpha\big(\underbrace{r_{t+1}+\gamma V(s_{t+1})}_{\text{TD 目标}}-V(s_t)\big)

TD 误差(后面 Actor-Critic、优先回放都围着它转):

δt=rt+1+γV(st+1)V(st)\delta_t=r_{t+1}+\gamma V(s_{t+1})-V(s_t)
符号含义
GtG_ttt 起真实折扣回报(整局算完才知道)
rt+1+γV(st+1)r_{t+1}+\gamma V(s_{t+1})用当前价值网「估」的目标(可逐步更新)
α\alpha把「预测误差」灌进 VV 的步长
δt\delta_t实际比预期好(++)还是差(-
MCTD(0)
结算整局结束每一步
偏差低(真 GtG_t有(依赖当前 VV
方差较低
适用需要明确终局也可用于长期任务
图示
  1. 不必等终局(实验周期长时关键)。
  2. 方差更小,曲线通常更稳。
  3. 可在线学。

代价:早期 VV 不准时,错误会经 bootstrap 传递——所以才有目标网络、GAE 等稳定器。

旋钮经验
α\alpha表格 0.01–0.1 量级起步;函数近似往往更小
γ\gamma长期任务 0.95–0.99
n-step / λ\lambda在「更像 MC」与「更像 TD」之间滑动
  • MC:好懂、噪声大;深度时代很少单独当主力。
  • TD:现代价值方法的更新引擎。
  • δt\delta_t:既更新价值,也给策略当「优势信号」。

后来被什么取代?能增强什么?

Section titled “后来被什么取代?能增强什么?”
原始增强作用
纯 MCGAE偏差–方差可调混合
单步 TDn-step / λ\lambda-return多看几步再结算
表格 TD深度近似 + 回放 + 目标网→ DQN 路线

今天:不必二选一;PPO 里的 GAE 就是 MC 与 TD 的可调节混合。


4. SARSA 与 Q-learning:保守还是激进?

Section titled “4. SARSA 与 Q-learning:保守还是激进?”

二者都学 Q(s,a)Q(s,a),差别在下一动作怎么进入更新

SARSA(on-policy)——下一手用策略真实会选aa'

Q(s,a)Q(s,a)+α(r+γQ(s,a)Q(s,a))Q(s,a)\leftarrow Q(s,a)+\alpha\big(r+\gamma Q(s',a')-Q(s,a)\big)

Q-learning(off-policy)——下一手按最优估:

Q(s,a)Q(s,a)+α(r+γmaxaQ(s,a)Q(s,a))Q(s,a)\leftarrow Q(s,a)+\alpha\big(r+\gamma \max_{a'}Q(s',a')-Q(s,a)\big)
符号SARSAQ-learning
括号里的目标r+γQ(s,a)r+\gamma Q(s',a')aπa'\sim\pir+γmaxaQ(s,a)r+\gamma\max_{a'}Q(s',a')
学什么当前行为策略的 QπQ^\pi逼近最优 QQ^*
性格保守:探索踩坑也算进评价激进:可能过估计
图示

Cliff Walking:Q-learning 常贴悬崖捷径(训练掉崖多);SARSA 走内侧更安全。

旋钮直觉
ε\varepsilon随机探索比例:前期高、后期降;降太快学偏
α\alpha表格可稍大;上神经网络后要小很多
奖励尺度避免数量级悬殊导致 QQ 数值爆炸
  • 探索有真实代价(细胞死亡、设备损坏)→ 更偏 on-policy / 保守。
  • 模拟器里可狂试、只关心最终最优 → Q-learning 系更常见。
  • 小规模离散:表格 Q-learning 往往够用。
  • 状态靠人工分箱:太粗学不好,太细表爆炸 → 逼出 DQN。

后来被什么取代?能增强什么?

Section titled “后来被什么取代?能增强什么?”
局限后续增强
只能表格DQN高维观测
max\max 过估计Double DQN选动作与估值拆开
探索差内在动机、噪声网络等更聪明试错
离散动作策略梯度 / SAC连续控制

今天仍有用:短菜单实验设计;理解 off-policy;历史日志再利用的思想源头。


5. DQN:深度学习进入 RL 的第一波浪潮

Section titled “5. DQN:深度学习进入 RL 的第一波浪潮”

连续状态、图像、表达谱 → 格子数爆炸,且无法对未见状态泛化。
想法:用网络 Qθ(s,a)Q_\theta(s,a) 代替表格,仍按 Q-learning 选 argmaxaQ\arg\max_a Q

  1. 样本相关:连续轨迹很像,SGD 假设被破坏。
  2. 目标漂移:更新 θ\theta 时,目标里的 QθQ_\theta 也在变 → 追移动靶。

经验回放中采样转移 (s,a,r,s,d)(s,a,r,s',d)d=1d=1 表示结束。TD 目标用冻结的目标网 θ\theta^-

y=r+γmaxaQθ(s,a)(1d)y=r+\gamma\max_{a'}Q_{\theta^-}(s',a')\cdot(1-d)

损失(让在线网靠近该目标):

L(θ)=E[(yQθ(s,a))2]L(\theta)=\mathbb{E}\big[\big(y-Q_\theta(s,a)\big)^2\big]

每隔 CC 步:θθ\theta^-\leftarrow\theta(或软更新)。

符号含义作用
QθQ_\theta在线网络正在训练、用来选动作
QθQ_{\theta^-}目标网络短时间固定,提供稳定 yy
yyTD 目标「这一步应该值多少」
dddone 标记终局后不再加未来价值
回放池存历史转移随机采样,打断相关性
图示
旋钮起点调大/调小
回放容量10410^410610^6太小过拟合近况;太大占内存、含过旧策略
最少样本再训10310^310410^4太小一上来就抖
目标同步间隔 CC100–1000太勤≈没目标网;太懒目标过时
ε\varepsilon 衰减1.0→0.01–0.05太快探索不足;太慢浪费交互
学习率10410^{-4}10310^{-3}不稳先降 lr
奖励裁剪任务相关Atari 常压到 [1,1][-1,1]
Terminal window
pip install torch gymnasium matplotlib numpy
python dqn_cartpole.py

现象:前期乱、中期爬升、后期多数局接近满分(CartPole)。

  • 历史:Atari 像素达人类级;回放 + 目标网成标配零件。
  • 现实:离散动作 + 便宜模拟器仍好用;连续动作弱;易过估计;样本效率一般。

后来被什么取代?能增强什么?

Section titled “后来被什么取代?能增强什么?”
方向代表增强点
过估计Double DQN在线网选 aa',目标网估值
结构DuelingV(s)V(s) 与优势 A(s,a)A(s,a)
回放PER优先学 δ\|\delta\| 大的样本
组合Rainbow多项打包
连续控制主流TD3 / SAC / PPO不再死磕离散 Q
大模型对齐较少直接用经典 DQN动作是整段文本

定位:深度 RL 必修第一站;零件(回放、目标网)广泛活在 off-policy 算法里。连续参数/生成长度 → 优先策略类。


6. REINFORCE:直接改「行为习惯」

Section titled “6. REINFORCE:直接改「行为习惯」”

价值法:先打 QQ 再贪心。但当动作连续、策略本身需随机、或你只想直接最大化任务得分时,更自然的是直接优化 πθ\pi_\theta

目标:期望回报

J(θ)=Eτπθ[G(τ)]J(\theta)=\mathbb{E}_{\tau\sim\pi_\theta}\big[G(\tau)\big]

策略梯度(REINFORCE 常用形式)

θJ(θ)tGtθlogπθ(atst)\nabla_\theta J(\theta)\approx\sum_t G_t\,\nabla_\theta\log\pi_\theta(a_t|s_t)

基线降方差(不改变期望方向):

θJt(Gtb(st))θlogπθ(atst)\nabla_\theta J\approx\sum_t\big(G_t-b(s_t)\big)\,\nabla_\theta\log\pi_\theta(a_t|s_t)
符号含义白话
πθ(as)\pi_\theta(a\|s)参数化策略神经网络输出的动作分布
logπθ\log\pi_\theta对数概率方便求梯度;好动作抬概率
GtG_ttt 起的回报这步有多「功成」
b(s)b(s)基线,常用 Vw(s)V_w(s)减去「局面平均分」,减噪声
θ\nabla_\theta对参数求导告诉网络权重往哪拧

一步更新直觉
GtG_t 大 → 增大当时动作概率;GtG_t 小 → 减小。减 b(s)b(s) 后,看的是「相对平均好不好」。

旋钮直觉
学习率往往比想象更小,防一次推崩策略
回报归一化每批减均值、除标准差,强烈建议
基线至少移动平均;更好学 VwV_w
防止过早变成确定性策略
优点缺点
天然支持连续动作样本效率差
目标直观方差大,曲线像心电图
好懂on-policy,旧数据难复用

后来被什么取代?能增强什么?

Section titled “后来被什么取代?能增强什么?”
增强得到
+ CriticActor-Critic,方差↓
+ 限制更新幅度TRPO / PPO,稳定性↑
+ 熵 / 双 Q 等SAC 等
+ 偏好奖励模型RLHF 策略优化骨架

生物提示:动作是「生成/编辑序列」或连续实验参数 → 从策略梯度家族切入,比硬套 DQN 自然。


7. Actor-Critic 与 PPO:为什么默认是 PPO?

Section titled “7. Actor-Critic 与 PPO:为什么默认是 PPO?”
  • Actor πθ\pi_\theta:出动作、改习惯。
  • Critic VwV_w:估价值,提供低方差学习信号。

常用一步优势(就是 TD 误差):

A^t=δt=rt+1+γVw(st+1)Vw(st)\hat{A}_t=\delta_t=r_{t+1}+\gamma V_w(s_{t+1})-V_w(s_t)

PPO 标配则用 GAE(在 MC 与 TD 之间平滑):λ\lambda 越大越像 MC,越小越像 TD。

图示

朴素策略梯度 / AC:一步更新过大 → 策略崩溃 → 后续数据全是垃圾。
TRPO 用 KL 硬约束,强但重;PPO 用 clip 近似「别走太远」。

重要性采样比率:

rt(θ)=πθ(atst)πθold(atst)r_t(\theta)=\frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{\mathrm{old}}}(a_t|s_t)}

裁剪目标(ϵ\epsilon 常取 0.1–0.2):

LCLIP(θ)=Et[min(rt(θ)A^t,  clip(rt(θ),1ϵ,1+ϵ)A^t)]L^{\mathrm{CLIP}}(\theta)=\mathbb{E}_t\Big[\min\big( r_t(\theta)\hat{A}_t,\; \mathrm{clip}(r_t(\theta),1-\epsilon,1+\epsilon)\hat{A}_t \big)\Big]

完整训练里还常加价值损失与熵:

L=LCLIPc1LVF+c2H[π](s)L=L^{\mathrm{CLIP}}-c_1 L^{\mathrm{VF}}+c_2\,\mathcal{H}[\pi](\cdot|s)
符号含义调它在改什么
rt(θ)r_t(\theta)新旧策略概率比≈1 表示几乎没改;很大表示猛抬某动作
A^t\hat{A}_t优势>0>0 好动作;<0<0 差动作
ϵ\epsilonclip 宽度允许 rtr_t 偏离 1 的最大幅度
LVFL^{\mathrm{VF}}Critic 拟合损失评委要准
H\mathcal{H}策略熵保持探索
c1,c2c_1,c_2系数价值项 vs 探索项的权重

白话

  • A^>0\hat{A}>0:鼓励提高概率,但 rtr_t 最多到 1+ϵ1+\epsilon
  • A^<0\hat{A}<0:鼓励降低概率,但不许砍太狠。
    → 每次更新被夹在安全区。
图示
旋钮默认感风险
ϵ\epsilon0.1–0.2太大≈没约束;太小学得慢
每次采样步数~2048太少优势噪声大
重复 epoch3–10太多过度使用 on-policy 数据
GAE λ\lambda0.9–0.98偏 TD ↔ 偏 MC
熵系数0–0.01防过早确定
学习率3×1043\times10^{-4}不稳先降,可后期衰减
Terminal window
pip install stable-baselines3 gymnasium matplotlib
python ppo_cartpole_sb3.py

为何工业默认:超参相对鲁棒;离散/连续都行;生态好(SB3、CleanRL、RLHF 工具链)。
代价:on-policy 样本效率不如好的 SAC;真实验交互贵时可能烧不起。

后来被什么取代?能增强什么?

Section titled “后来被什么取代?能增强什么?”

PPO 未被单一算法全面取代,而是默认骨干,在各领域被改造:

领域演进增强
连续控制SAC / TD3样本效率、自动探索温度
大量日志离线 RL少交互
专家示范模仿 / 反演 RL少奖励工程
大模型对齐RLHF-PPO → DPO / GRPO / RLOO少不稳价值模型、更贴偏好
世界模型Dreamer想象中交互,省真环境步
你的需求更合适
模拟器便宜、要稳先 PPO
湿实验很贵离线 RL / 贝叶斯优化 / 主动学习 / 模仿
序列是否符合偏好DPO、GRPO 等(第3章)
纯 CPT 继续预训练不是 RL(似然 ≠ 回报)

8. 算法选型:先问问题,再选工具

Section titled “8. 算法选型:先问问题,再选工具”
图示
场景优先原因
规则清晰小系统Value Iteration精确可解释
短菜单离散决策Q-learning简单
图像/向量 + 按键DQN 系价值逼近成熟
连续控制默认基线PPO稳、生态好
交互贵但有模拟器SAC通常更省样本
只有历史实验离线 RL / 模仿第3章
LLM/序列偏好对齐DPO、GRPO、RLHF-PPO第3章
自监督 CPT非 RL勿与回报最大化混谈

RL 概念生物理解
ss表达谱、序列窗口、表型、实验进度
aa培养条件、靶点、编辑、测序策略
rr结合分、表型、成本惩罚、成败
episode一次实验闭环 / 设计–验证周期
回放池历史多组学与实验库
ε\varepsilon 探索试新条件(有预算与风险)
on-policy必须按现行规范采样
off-policy能用旧日志学新策略
做法是本阶段 RL 吗
PPO 调参最大化指标
有限实验菜单上 Q-learning
偏好对齐(RLHF/DPO)是,但属第3章
生物 CPT(自监督似然)
监督预测表达量

把「合法/有功能序列」做成可计算奖励或偏好后才进入 RL;否则仍是监督/自监督。


#项目观察验收
1dp_value_iteration.py有模型可直接算最优打出 VV^*π\pi^*
2Cliff WalkingSARSA 更安全 vs Q 贴边路径形态不同
3dqn_cartpole.py回放+目标网后曲线爬升后期回报明显升
4去掉目标网络通常更抖、易塌体会目标漂移
5ppo_cartpole_sb3.py默认超参可收敛接近满分
6ϵ\epsilon clip 调很大可能更不稳体会约束意义

建议:1 → 3 → 5,有余力做 2、4、6。


11. 概念自测(公式 + 白话都能说)

Section titled “11. 概念自测(公式 + 白话都能说)”
  1. 写出 Value Iteration 的一步更新,并解释 γ\gammamaxa\max_a
  2. 对比 MC 与 TD(0) 的目标:GtG_t vs r+γV(s)r+\gamma V(s'),各适何时。
  3. SARSA 与 Q-learning 更新式差在哪一项?对应什么风险偏好?
  4. DQN 的 yy 为何用 θ\theta^- 而不是 θ\theta?回放池解决什么?
  5. REINFORCE 中 GtlogπG_t\nabla\log\pi 的直觉;减 b(s)b(s) 改变期望吗?
  6. PPO 的 rt(θ)r_t(\theta)ϵ\epsilon:过大/过小各有何风险?
  7. 「PPO 已被 DPO 取代」在什么任务对、什么任务错?
  8. 多组学 CPT 哪些部分不该硬套本章算法?

  • 直觉:David Silver 课;Hugging Face Deep RL Course Unit 2–4
  • 查阅:Sutton & Barto(当词典);DQN Nature 2015;PPO 2017(抓动机与结论)
  • 工程:Stable-Baselines3;CleanRL 单文件实现

读论文时优先抓:更新式、稳定技巧、消融、适用动作空间,不必先抠全部证明。


  • 能画清:有/无模型,价值/策略,on/off-policy
  • 能写出并解释:TD 目标、Q-learning、DQN 的 yy、REINFORCE、PPO clip 各 1 个核心式
  • 能说明每个式子里 2~3 个关键参数怎么调
  • 能说清「上一代痛点 → 本算法增强 → 后来又被谁增强」
  • 对真实问题给出第一推荐 + 理由 + 备选
  • 跑通 dp_value_iteration.py +(DQN 或 PPO 之一)
  • 区分 CPT 自监督 vs RL 回报最大化

第3章 现代算法、对齐与生物边界 将覆盖:

  1. SAC / TD3:相对 PPO 强在哪、弱在哪
  2. 离线 RL 与模仿学习:实验日志怎么用
  3. 对齐专题:RLHF-PPO、DPO、GRPO——公式级直觉 + 取代关系
  4. 与生物 CPT 的严格边界
  5. 生物案例与失败模式:奖励黑客、过拟合模拟器、不可复现

  1. Sutton & Barto, Reinforcement Learning: An Introduction (2nd ed.) — 在线阅读。DP、MC、TD、Q-learning、策略梯度的权威推导来源。
  2. Mnih et al., Human-level control through deep reinforcement learning, Nature 2015 — 论文。DQN 的经验回放与目标网络原始工作。
  3. Schulman et al., Proximal Policy Optimization Algorithms, 2017 — arXiv:1707.06347。PPO clip 目标的出处。
  4. Schulman et al., High-Dimensional Continuous Control Using Generalized Advantage Estimation, 2015 — arXiv:1506.02438。GAE 在 MC 与 TD 之间平滑的依据。
  5. Stable-Baselines3 — 文档。本章 DQN / PPO 代码所用的生产级实现。
  6. CleanRL — 仓库。单文件算法实现,适合对照公式读源码。