🏠 总目录📚 本教程 附录A · 速查
📑 本页目录(点开跳转)

附录 A · 速查

📌 Ctrl+F 搜。不要通读。


🔑 一张表:每个算法在解什么

算法 解决什么 章节
价值迭代 / 策略迭代 知道环境模型时求最优策略 04
蒙特卡洛 不知道模型,等回合结束再更新 05
TD(0) 不知道模型,每步就能更新 05
SARSA on-policy 控制(学"我实际会走的"策略) 06
Q-learning off-policy 控制(学最优策略)⭐ 06
DQN 状态太多存不下 → 神经网络逼近 08
REINFORCE 直接优化策略(能处理连续动作) 09
Actor-Critic 用 Critic 降低策略梯度的方差 ⭐ 10
PPO 限制更新幅度,防止策略崩溃 ⭐⭐ 11
DPO 跳过 RM 和 PPO,直接从偏好学 13

📐 核心公式

回报与价值

$$G_t = r_{t+1} + \gamma r_{t+2} + \gamma^2 r_{t+3} + \cdots$$ $$V^\pi(s) = \mathbb{E}_\pi[G_t \mid s_t = s],\qquad Q^\pi(s,a) = \mathbb{E}_\pi[G_t\mid s_t=s, a_t=a]$$

💡 V 是"在这个状态有多好",Q 是"在这个状态做这个动作有多好"

⭐ 贝尔曼方程(整个领域的地基)

$$V^\pi(s) = \sum_a \pi(a|s)\sum_{s'} P(s'|s,a)\big[r + \gamma V^\pi(s')\big]$$

贝尔曼最优方程

$$V^*(s) = \max_a \sum_{s'} P(s'|s,a)\big[r+\gamma V^*(s')\big]$$

💡 人话这个状态的价值 = 眼前的奖励 + 下一个状态的价值(打个折)。 后面所有算法都是在用不同办法解这个方程。

TD 更新

$$V(s) \leftarrow V(s) + \alpha\underbrace{\big[r + \gamma V(s') - V(s)\big]}_{\text{TD 误差 }\delta}$$

Q-learning vs SARSA(一个 max 的区别)

$$\text{Q-learning: } Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma\underbrace{\max_{a'}Q(s',a')}_{\text{最优动作}}-Q(s,a)]$$

$$\text{SARSA: } Q(s,a)\leftarrow Q(s,a)+\alpha[r+\gamma\underbrace{Q(s',a')}_{\text{实际会走的}}-Q(s,a)]$$

💡 就差一个 max —— 但这决定了 off-policy 还是 on-policy

策略梯度

$$\nabla J(\theta) = \mathbb{E}\big[\nabla\log\pi_\theta(a|s)\cdot A(s,a)\big]$$

💡 好动作提高概率、坏动作降低概率,幅度按"有多好"

GAE

$$A^{GAE(\lambda)}_t = \sum_{l\ge0}(\gamma\lambda)^l\delta_{t+l}$$

💡 λ=0 → 单步 TD(偏差大);λ=1 → 蒙特卡洛(方差大);常用 0.95

⭐ PPO 裁剪目标

$$L = \mathbb{E}\Big[\min\big(r_tA_t,\ \text{clip}(r_t,1-\epsilon,1+\epsilon)A_t\big)\Big],\quad r_t=\frac{\pi_\theta}{\pi_{old}}$$

💡 迈大步没有额外奖励 —— 所以不会迈大步

奖励模型 / DPO

$$L_{RM} = -\log\sigma\big(r_{win}-r_{lose}\big)$$

$$L_{DPO} = -\log\sigma\Big(\beta\log\tfrac{\pi_\theta(y_w)}{\pi_{ref}(y_w)} - \beta\log\tfrac{\pi_\theta(y_l)}{\pi_{ref}(y_l)}\Big)$$

💡 DPO = 把 RM 的公式直接套在策略的对数比上


🎛️ 超参速查

超参 常用值 说明
γ(折扣) 0.99 越大越看重长期;RLHF 常设 1.0
α(学习率) 3e-4 RLHF 用 1e-6~1e-5
ε(探索) 1.0 → 0.05 线性衰减 DQN
clip ε 0.2 PPO ⭐
GAE λ 0.95
K_EPOCHS 3–10 PPO;RLHF 用 1–4
熵系数 0.01 RLHF 常设 0
梯度裁剪 0.5 必加
回放缓冲 1e5 – 1e6 DQN
目标网络更新 每 1000 步 DQN
DPO 的 β 0.1 太小会剧烈偏离参考模型

⚠️ 十个最容易搞混的地方

容易混 区别
V 和 Q V 是状态的价值,Q 是状态-动作对的价值
on-policy vs off-policy 学的策略是不是采数据的那个策略 ⭐
SARSA vs Q-learning 一个 max:SARSA 用实际会走的动作,Q-learning 用最优动作
回报 vs 奖励 奖励是单步的 r,回报是折扣累计 G
优势 vs Q A = Q − V,只保留"比平均好多少" ⭐
蒙特卡洛 vs TD MC 等回合结束(无偏高方差),TD 每步更新(有偏低方差)
PPO 的 clip vs RLHF 的 KL 惩罚 clip 管"这步别更新太多",KL 管"整体别偏离 SFT 太远"
探索 vs 随机 探索是有目的地收集信息,不是纯随机
奖励攻击 vs 过拟合 奖励攻击是钻评分器的漏洞,模型在真实目标上更差了
DPO 的 β vs PPO 的 β 都控制"离参考模型多远",但作用机制不同

🩺 故障诊断表

症状 可能原因
完全不学习 学习率太小 / 奖励尺度不对 / 忘了 detach() / 优势没标准化
学一半崩掉 学习率太大 / 没有梯度裁剪 / K_EPOCHS 太多
Q 值爆炸到很大 忘了 (1-done) ⭐ / γ 太接近 1 / 没有目标网络
策略过早收敛 熵奖励太小 ⭐ / ε 衰减太快
不同种子结果差很多 ⚠️ 这是 RL 的常态 —— 必须报告多种子统计
训练分数高但评估低 评估时忘了关掉探索(ε 应设 0)⭐
RLHF 奖励涨但输出变差 奖励攻击 —— 盯 KL 散度,早停 ⭐

📖 术语对照

中文 英文 一句话
马尔可夫决策过程 MDP 状态/动作/转移/奖励/折扣 五元组
策略 Policy 状态 → 动作(的概率分布)
回报 Return 折扣累计奖励
价值函数 Value Function 从某状态出发的期望回报
优势函数 Advantage 这个动作比平均好多少
自举 Bootstrapping 用自己的估计去更新自己
同策略 / 异策略 on-policy / off-policy 学的和采的是不是同一个策略
经验回放 Experience Replay 存历史数据反复采样
目标网络 Target Network 冻结的副本,稳定训练目标
探索利用 Exploration-Exploitation 试新的 vs 用已知最好的
奖励攻击 Reward Hacking 钻评分器漏洞而非真的变好
可验证奖励 RLVR 用单元测试/答案正确性当奖励 ⭐

🔗 跨教程速查

这里学的 在哪里被用到
探索与利用 / Thompson Sampling 推荐算法 · 冷启动
PPO + RLHF 全景导论 · 训练三阶段
DPO / 对齐 全景导论 · 对齐与安全
MDP / 序贯决策 智能体工程教程
偏差-方差(TD vs MC) 数学原理 · 偏差方差分解
优化器(Adam / 学习率调度) ML 基础 · 优化器与学习率
梯度裁剪(附录里那个 0.5、第 8 章代码里那个 10) ML 基础 · RNN与序列建模 —— 梯度为什么会爆、max_norm 怎么设,讲得最全的是这里

👉 回到首页

打卡记录保存在你的浏览器里,首页能看到总进度