强化学习算法笔记:用一套框架串起 MC、TD、DQN、PPO、SAC
原文地址:https://www.rasior.com/2025/12/28/rl-algorithms-unified-framework/
我学强化学习的时候,最大的困扰是:算法太多,名字一堆,每次看完一个新算法就忘了之前的,总觉得它们之间没什么联系。
MC、TD、SARSA、Q-learning、DQN、REINFORCE、PPO、SAC、TD3……这些名字听起来像是完全不同的东西。但其实,它们都在回答同一个问题:怎么让智能体学会做决策。
后来我发现,如果你用”三个问题”来看这些算法,它们就不再是一堆孤立的名字,而是有清晰脉络的一个体系:
- 它在学什么?(状态价值、动作价值、还是策略)
- 它的学习目标从哪来?(真实回报 vs 估计值)
- 数据能不能重复用?(on-policy vs off-policy)
强化学习的基本设定
所有算法都在解决马尔可夫决策过程(MDP):
:状态 :动作 :转移概率 :奖励 :折扣因子
智能体和环境交互,产生一条轨迹:
回报(Return)是未来奖励的折扣累加:
目标是最大化期望回报:
有些算法(比如 SAC)还会加上熵项,鼓励探索:
其中熵
三个分类轴:把所有算法放进去
不要一上来就背算法名字,先问自己这三个问题:
轴 A:学什么(表示)
- 学状态价值
:这个状态”平均有多好” - 学动作价值
:在状态 做动作 有多好 - 学策略
:直接学怎么出动作 - Actor-Critic:同时学策略(actor)+ 价值(critic)
它们之间的关系:
轴 B:学习目标怎么来(MC vs TD)
- MC(蒙特卡洛):用完整回报
(等到回合结束) - TD(时序差分):用一步奖励 + 下一步的估计(bootstrapping)
轴 C:数据能否重复利用(on-policy vs off-policy)
- on-policy:数据来自当前策略,旧数据基本作废
- off-policy:可以用旧策略数据(replay buffer),样本效率高
价值函数与 Bellman 方程
所有基于价值的方法(TD、Q-learning、DQN)都在逼近 Bellman 方程。
定义
Bellman 期望方程(评估当前策略)
Bellman 最优方程(找最优策略)
TD 类方法就是在采样下逼近这些方程。
MC vs TD:学习目标从哪来
这一节解释你之前可能困惑的”有偏/无偏、方差大小”。
MC:用真实回报
更新
更新
直觉:等一局打完再算”这一步最终带来了多少总分”。
- 优点:target 更”真实”,通常无偏
- 缺点:轨迹随机性累积,方差大;必须等结束;样本效率差
TD(0):一步就更新(bootstrapping)
TD(0) 评估
- TD target:
- TD error:
直觉:不等结局,用”下一步我估计还能拿多少分”来更新当前。
- 优点:在线;更新更频繁;通常方差更小;样本更省
- 缺点:target 里用了估计
(不是真值),因此通常有偏
n-step 与 TD( ):在 MC 与 TD 之间折中
n-step 回报:
:TD(0) :趋向 MC
TD(
SARSA 与 Q-learning:都是 TD 控制
很多人以为 SARSA 和 Q-learning 的区别是 TD vs 非 TD。这是错的。
它们都是 TD 控制(学
SARSA(on-policy TD 控制)
用实际执行的下一动作
直觉:”我下一步真的会这么走(含探索),那我就按这条路来学习。”
- 优点:更”贴合实际行为策略”,在有风险探索时更保守
- 缺点:收敛到的是当前行为策略对应的
,探索强时可能偏保守
Q-learning(off-policy TD 控制)
target 用贪心最大值:
直觉:”不管我探索时怎么乱走,我学习目标永远按最优动作来算。”
- 优点:直接逼近
,理论上更”追最优” - 缺点:
会带来过估计倾向(深度函数逼近下更明显)
DQN:Q-learning + 神经网络 + 稳定器
DQN 用神经网络
TD 目标与损失
用 target network
最小化平方误差:
为什么 DQN 需要”两个稳定器”
- Experience Replay:把经验存入回放池,随机采样打散相关性
- Target Network:
慢更新,避免”目标也跟着你同时变”导致发散
常见 DQN 改进
- Double DQN:缓解
过估计 - Dueling:把
分解为 与 Advantage - PER:优先采样”大 TD error”经验
REINFORCE:纯策略梯度
REINFORCE 是最原始的策略梯度:直接用 MC 回报推策略。
基本更新
目标:
REINFORCE 更新:
直觉:这局分高,就把这局出现过的动作概率往上推。
baseline:从 REINFORCE 走向 Actor-Critic 的关键一步
加入 baseline
最常用
REINFORCE 的问题:
- 优点:概念最干净,通常无偏
- 缺点:方差大、样本效率低、训练抖
所以现代方法通常用 Actor-Critic(引入 critic)来替代它。
Actor-Critic 总框架
Actor-Critic = 两个网络(或共享骨干):
- Actor:
- Critic:
或
你可以把绝大多数现代算法看成在回答两件事:
- critic 怎么学(target 怎么构造)
- actor 怎么学(目标函数是什么、用什么约束)
Actor 的一般更新(策略梯度形态)
其中
Critic 的一般更新(Bellman/TD 形态)
如果学
如果学
PPO:on-policy 的稳定策略更新
PPO 是 on-policy Actor-Critic,核心在于:每次策略更新别跨太大步(稳定训练)。
重要性采样比率
PPO-Clip 目标(核心)
典型 PPO 训练总损失(工程常用)
PPO 的优劣
- 优点:非常稳、好调、泛用(离散/连续都能做)
- 缺点:on-policy → 数据”用完就得再采样”,样本效率不如 off-policy(SAC/TD3)
DDPG → TD3:连续动作的 off-policy 确定性 Actor-Critic
连续动作下,
DDPG(确定性策略)
- actor:
- critic:
critic 目标:
critic loss:
actor 目标(最大化 Q):
用链式法则做确定性策略梯度。
TD3:DDPG 的稳定升级
TD3 三招(强烈建议背下来):
双 Q 取最小:减少过估计
target policy smoothing:
,延迟更新 actor:critic 更新多步后再更 actor
TD3 的优劣
- 优点:连续控制强、样本效率高、比 DDPG 稳很多
- 缺点:确定性策略探索依赖外加噪声;实现与超参比 PPO 复杂
SAC:最大熵 off-policy Actor-Critic
SAC 可以理解为:“更会探索、更鲁棒”的 off-policy Actor-Critic。
最大熵目标带来的直觉
SAC 不只追求高回报,还追求高熵(策略别太死板)。
直觉:你不希望策略过早变成”死贪心”,否则容易卡在次优、也更脆弱。
soft Q 的 Bellman 备份(核心差异)
SAC 的 critic target 多了熵项(或
critic loss 同样是 MSE:
actor 更新(”最大化 Q + 熵”)
actor 目标常写成最小化:
即让策略选择那些 Q 高 且
温度 (可自动调)
很多实现会自动学习
SAC 的优劣
- 优点:off-policy + replay → 样本效率高;探索强;连续控制很强、训练常更稳健
- 缺点:实现复杂(双 Q、熵项、温度、更新比等);超参比 PPO 多
一张总对照表
| 方法 | 学什么 | MC/TD | on/off | 动作空间 | 核心 target / 目标 | 优点 | 缺点 |
|---|---|---|---|---|---|---|---|
| MC 评估 | MC | on | 任意 | 无偏直观 | 方差大、等结束 | ||
| TD(0) 评估 | TD | on | 任意 | 在线、稳 | 有偏 | ||
| SARSA | TD | on | 多为离散 | 更保守贴合行为 | 样本效率一般 | ||
| Q-learning | TD | off | 多为离散 | 追最优、可 off-policy | 过估计风险 | ||
| DQN | TD | off | 离散(不大) | MSE 拟合 Q-learning target | 实战强基线 | 连续动作不直接适用 | |
| REINFORCE | MC | on | 任意 | 概念最纯 | 方差大、慢 | ||
| PPO | 多为 TD/GAE | on | 任意 | clip surrogate + value loss | 稳、好调 | 样本效率不如 off | |
| TD3 | TD | off | 连续 | 双Q最小+平滑+延迟更新 | 连续控制强、样本效率高 | 实现/调参较复杂 | |
| SAC | TD(soft) | off | 连续(也可离散) | 探索强、样本效率高 | 实现复杂 |
选型指南:什么时候用谁
按最关键的两个问题选:
动作空间
- 离散且动作数不大:优先 DQN(或 PPO 也行但通常不如 DQN 简洁高效)
- 连续动作:优先 SAC / TD3;想稳且实现简单可选 PPO
采样成本(交互贵不贵)
- 交互很贵(真实系统/慢仿真):优先 off-policy(SAC/TD3/DQN)
- 交互便宜(并行仿真):PPO 很舒服(稳、可扩展)
你更在乎什么
- 稳定、少踩坑:PPO
- 样本效率、探索、连续控制强:SAC(很多场景首选)
- 确定性控制、追求”硬”性能:TD3(常作为强 baseline)
常见坑与调参检查单
“致命三元组”(函数逼近 + bootstrapping + off-policy)
很多发散/不稳定都来自这三个同时出现(典型深度 Q 学习、off-policy TD)。
应对:target network、双 Q、replay、合理学习率/归一化、限制更新步长。
PPO 常见要点
- advantage 归一化几乎必做
- clip
不要太大;value loss 权重别压过 policy - rollout 长度、epoch、batch size 会显著影响稳定性
SAC/TD3 常见要点
- replay buffer 足够大;warmup 采样(先填 buffer)
- 更新比(每交互一步更新几次)要合理
- 观察 Q 值尺度:爆炸通常意味着学习率/目标网络/归一化有问题
- SAC 的
自动调通常更省心(但要设置合理 target entropy)
最简记忆脉络(一句话版)
- MC vs TD:target 是
(等结局)还是 (用下一步估计) - SARSA vs Q-learning:target 用
(on-policy)还是 (off-policy) - DQN:Q-learning + 神经网络 + replay + target network
- REINFORCE:纯策略梯度(MC),方差大 → 引入 baseline/critic 变 Actor-Critic
- PPO:on-policy Actor-Critic,核心是”别更新太猛”(clip)
- TD3:off-policy 连续控制,DDPG 的稳化(三招)
- SAC:off-policy + 最大熵(探索强、样本效率高)
- 标题: 强化学习算法笔记:用一套框架串起 MC、TD、DQN、PPO、SAC
- 作者: Infy AI
- 创建于 : 2025-12-28 15:00:00
- 更新于 : 2026-08-29 13:31:08
- 链接: https://www.rasior.com/2025/12/28/rl-algorithms-unified-framework/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。