跳到主要内容

阅读笔记:deep-rl-fundamentals-research-applications

原书:《深度强化学习:基础、研究与应用》,董豪等著,电子工业出版社 2021 年 7 月第 1 版(书卡写 2022 版,版权页为 2021)。 社区编著:TensorLayer 中文社区发起,每章作者不同(各章作者表在 text/01-fm.txt:130 附近)。

前导知识 + 前言(text/02-fm.txt, text/01-fm.txt)

  • 韦恩图:AI ⊃ ML ⊃ DL;RL 与 ML 并列另一支;DRL = DL ∩ RL(text/02-fm.txt:16 附近,图1)。
  • 图灵测试(Turing 1950)、AI 一词 McCarthy 1956 达特茅斯、ML 一词 Samuel 1959(text/02-fm.txt:21-50)。
  • ANN 起点 McCulloch & Pitts 1943;AlexNet 2012 超第二名 10%+ 是转折点(text/02-fm.txt:66-90,搜「10% 以上」)。
  • 深度学习 = 端到端,免去手工特征工程;但是黑盒(text/02-fm.txt:76-78)。
  • RL:世界分为环境与智能体,动作交互,奖励反馈(text/02-fm.txt:101-104)。
  • DRL 史:DeepMind 2013 Playing Atari(7 种游戏,6 个优于之前方法,1 个赢人类);2017 AlphaGo 胜柯洁(text/02-fm.txt:110-118)。
  • 本书用 TensorLayer 做实现教学(text/02-fm.txt:120-128)。
  • 数学符号约定 + RL 符号表(s,a,r,γ,π,v,q,G,τ…)+ 术语总结(贝尔曼方程四个)(text/02-fm.txt:166-331)。
  • 前言(董豪 2021-04):三部分结构;第 2 章最关键;第 3 章+附录 A/B 是算法总结;研究见 7-12;工程师看 13-17(text/01-fm.txt:90-120,搜「第 2 章是最关键」)。
  • 利益相关:本书用 TensorLayer 教学,董豪是 TensorLayer 创始人(text/01-fm.txt 作者简介)。

第1章 深度学习入门(text/05-ch01.txt,1421 行,作者:张敬卿/袁航/廖培元/董豪)

  • 定位:DL 基础扫盲章,熟悉 DL 可跳过(:8)。判别模型 p(y|x) vs 生成模型 p(x,y)(:13,:30);多数 DNN 是判别模型,生成任务可简化为分类/回归(:42)。
  • 感知器:z=w1x1+w2x2+w3x3,踢足球例子(:73-83);偏差 b 让决策边界不必过原点(:108-113);全连接层/密集层 z=Wx+b(:124-154)。
  • MLP:通用近似定理——一层隐藏层+可挤压激活+足够多神经元可逼近任意博莱尔可测函数,但难训练/过拟合,所以用多层(:171-176)。XOR 不能用单个感知器,用一层隐藏层 MLP:先学 OR 和 NAND 把点映射到新特征空间,再用 AND 分开(:209-213)。
  • 激活函数:sigmoid(0-1)、tanh(-1~1)、ReLU(负数置0,好算、近线性、但丢负信息→Leaky ReLU/PReLU)、softmax(归一化成概率向量,只在输出层)(:230-291)。
  • 损失函数:KL 散度→交叉熵(去掉与 Q 无关的第一项)(:300-315);二分类交叉熵(:316-326);多分类(:331-346);Lp 范式、MSE(L2 平均,回归用)、MAE(L1 平均;MSE 可导性好,MAE 在 0 点不可导)(:348-392)。
  • 优化:梯度下降 θ:=θ−α∂L/∂θ;暴力解 ∂L/∂θ=0 不可行(:399-409)。反向传播:中间量 δ=∂L/∂z,链式法则逐层回传(:417-474);局部最小值通常接近全局(:479-481);sigmoid 梯度消失问题,a 接近 0/1 时导数趋 0,深层网络 δ 越来越小;ReLU 正区导数恒 1(:482-492)。
  • SGD:mini-batch,批大小 B(:503-518);学习率过大震荡、过小慢;自适应学习率 Adam(一阶/二阶动量,β1=0.9,β2=0.999)(:530-567)。
  • 超参数筛选:训练/验证/测试集,不能用测试集调超参(作弊)(:569-577);k 折交叉验证(:579-593)。
  • 正则化:过拟合 vs 欠拟合(:599-611);权重衰减 L1/L2(L1 更可能把参数压成 0,隐式特征选择)(:613-643);Dropout(随机关神经元,等于训练很多共享参数的小网络,测试时全开;理论证明原文没有)(:645-662);批标准化(均值0方差1,移动平均)(:664-675);早停、数据增强(:677-696)。
  • CNN:局部连接+参数共享(卷积核复用),参数比全连接少(:707-714,:750-755);卷积核/步长/零填充,输出大小公式 (W-F+2P)/S+1(:716-738);池化(最大/平均)(:741-746);4×4 RGB 图+3×3×3 卷积核走查(:735-740);池化例子有具体数字矩阵(:762-772)。
  • RNN:序列数据,循环单元+隐状态(:783-807);W 反复乘→特征值>1 梯度爆炸、<1 梯度消失(:812-816);遗忘问题例子「我是中国人…我的母语是__」(:818-820);LSTM:单元状态(信息高速路)+三门(遗忘/输入/输出,sigmoid 门控)(:821-855);GRU,哪种更优无定论(:857-860)。
  • 实现样例(TensorFlow 2.0 + TensorLayer 2.0):张量/GradientTape(:871-918);静态 vs 动态模型(:920-994);Lambda Layer(:996-1046);MLP on MNIST(70,000 张,五步:数据加载/模型定义/训练/测试/存储)(:1049-1122);CNN on CIFAR-10(10 类各 6000 张 32×32)(:1125-1189);Seq2seq 聊天机器人(编码/解码 RNN)(:1191-1222)。

第2章 强化学习入门(text/06-ch02.txt,2748 行,作者:丁子涵/黄彦华/袁航/董豪/仉尚航)【全书最关键章】

  • 2.1 基本概念:智能体/环境/动作集合(Pong 例子,动作={上,下},奖励 ±1)(:25-32);完全可观测(围棋)vs 部分可观测(Pong 单帧看不出球速)(:36-57);奖励函数 R(St) 或 R(St,At)(:62-71);轨迹 τ=S0,A0,R0…(:72-78);确定性/随机性转移(:79-89);片段/回合(:90-94);探索-利用权衡:淘金者例子(2克金矿 vs 找5克金矿)(:95-114)。
  • 2.2 在线预测与赌博机:在线学习 vs 统计学习(有序样本、最差情况、后悔值 vs 经验风险)(:119-128);多臂赌博机 MAB(:129-137);q(a)=E[Rt|At=a],估计 Q(a)(:141-148);贪心/ε-贪心(:149-176);后悔值 Regret 与伪后悔值(最大化与期望顺序不同,E[REn]≥REn)(:198-241);UCB:At=argmax[Qt(a)+c√(ln t/Nt(a))],平方根项=不确定性(:243-264);对抗赌博机(健忘/非健忘对抗者、全/部分信息博弈;确定性玩家 RE≥n/2)(:266-291);Hedge 算法(G 累计奖励+softmax,η 温度)(:301-324);Exp3(Hedge+均匀分布)(:307-310);上下文赌博机(LED 灯例子;介于 MAB 与完整 RL 之间)(:326-341)。
  • 2.3 马尔可夫过程:MP=<S,P>,马尔可夫性质(无记忆)(:346-367);Task1/Task2/Pass/Bed 例子,转移矩阵 P(:368-441);时间同质性(:394-407);MRP=<S,P,R,γ>,奖励在节点上(:446-453);回报 Gt、非折扣回报(轨迹 g,t1,t2,p,b 回报 5=-1-2-2+10)(:487-501);折扣回报 γ=0.9 时 2.87=-1-2×0.9-2×0.9²+10×0.9³(:502-515);γ=0 短视,γ=1 非折扣,无限长必须折扣(:512-515);γ 的另一种理解:并入转移概率(:516-519);价值函数 V(s)=期望回报(:520-527);蒙特卡罗估计 V(t2):采样 4 条轨迹 (-2, 7, 4.57, -0.178) 平均 2.348(:528-537);MDP=<S,A,P,R,γ>,奖励在边上(:548-590);策略 π(a|s)(:596-600);轨迹概率 p(τ|π)(:602-608);期望回报 J(π)=E[R(τ)],最优策略 argmax(:611-623);Vπ、Qπ 定义(:625-651);在线价值函数 vs 最优价值函数(:647-651);vπ(s)=Ea~π[qπ(s,a)] (:652-655)。
  • 2.3.4 贝尔曼方程:递归推导 vπ(s)=E[r+γvπ(s')] (:667-684);MRP 版(:689-692);qπ 版(:694-702);逆矩阵方法 v=(I−γP)⁻¹r,O(n³)(:709-727);最优价值函数 v*,q*(:729-763);贝尔曼最优方程 v*(s)=max_a E[R+γv*(s')] (:765-801)。
  • 2.3.5 确定性策略(狄拉克 δ 极限)vs 随机性策略(:803-821);POMDP(:822-829)。
  • 2.4 动态规划:Bellman 1950s;两性质:最优子结构+重叠子问题;斐波那契例子(:831-850);策略迭代=策略评估+策略提升交替,GPI(:852-878);收缩证明 Tπ 是 γ-收缩,巴拿赫不动点定理收敛(:882-908);价值迭代(从最终状态向前)(:936-999);停止标准 2ϵγ/(1−γ)(:996-999);异步 DP:在位更新/优先扫描/实时更新(:1001-1059)。
  • 2.5 蒙特卡罗:不需环境模型,采样平均(:1061-1074);首次/每次访问 MC(:1076-1086);不用自举→偏差小方差大(:1087-1090);探索开始(:1098-1102);MC 控制(贪心提升证明)(:1122-1147);增量式 MC:Qt+1=Qt+(1/t)(Gt−Qt),通用形式「新估计←旧估计+步长×(目标−旧估计)」(:1149-1205)。
  • 2.6 时间差分:TD(0) 更新 V(St)←V(St)+α[Rt+1+γV(St+1)−V(St)] (:1207-1237);DP/MC/TD 异同表(:1239-1259);偏差-方差权衡(MC 无偏方差大,TD 有偏方差小)(:1260-1279);半梯度方法(:1282-1293);资格迹 z_t=γλz_{t−1}+∇V,TD(λ):λ=1 即 MC,λ=0 即单步 TD(:1294-1348);λ-回报加权 (:1321-1341);Sarsa(在线策略,五元组 S-A-R-S-A 得名)(:1350-1396);GLIE 条件(:1397-1408);Sarsa 收敛定理(查找表、学习率条件 Σα=∞ Σα²<∞、有界方差)(:1442-1457);Q-Learning(离线策略,目标值 max_a Q(St+1,a) 不依赖行为策略)(:1458-1485)。
  • 2.7 策略优化:图 2.13 分类树(基于价值:Q-Learning/DQN;基于策略:REINFORCE/CE;结合:Actor-Critic)(:1505-1513);价值函数拟合:表格法→线性方法(多项式/傅立叶/粗略编码/瓦式编码/RBF)→非线性(神经网络)→其他(决策树/最近邻)(:1643-1734);围棋约 10^170 状态,表格法不可行(:1637);非独立同分布问题(:1735-1741);死亡三件套(离线训练+函数拟合+自举)(:1743-1753);DQN 过估计问题(:1754-1757);基于梯度的价值拟合 MSE 目标(:1759-1810);DQN 例子:经验回放+目标网络(:1811-1821)。
  • 2.7.3 基于策略的优化:参数化策略;伯努利/类别/对角高斯分布(:1823-1835);Gumbel-Softmax 技巧(让类别采样可微)(:1848-1869);再参数化技巧 a=μθ+σθ⊙z(:1870-1883);策略梯度定理 ∇J=E[Σ∇log π(At|St)Qπ(St,At)] (:1915-1953);SPG 推导:对数-导数技巧,环境项不依赖 θ 被移除(:1955-2011);Reward-to-Go(动作前的奖励对梯度零影响)(:2080-2090);EGLP 引理 E[∇log p(x)]=0→基准 b(St) 不 bias 梯度(:2107-2135);Φt 可取 Qπ 或优势 Aπ=Qπ−Vπ(:2162-2214);REINFORCE(:2221-2233);DPG 定理(在线+离线推导,莱布尼茨/富比尼)(:2234-2461);DPG 是 SPG 的 σ→0 极限(:2437-2461);DDPG(脆弱、超参敏感)(:2462-2473);SVG/再参数化/SAC(熵正则)(:2475-2532);无梯度:CE 方法(高斯分布采样-排序-更新均值方差;过快收敛到点→加噪声)(:2534-2583)。
  • 2.7.4 Actor-Critic:Critic 估计 Q 减方差,兼容函数近似条件(SPG 两条件:Qw=∇log π^T w + MSE 最小)(:2585-2652);A2C 用优势函数(:2653-2662);QT-Opt 无行动者方法(:2663-2667)。

第3章 强化学习算法分类(text/07-ch03.txt,255 行,张鸿铭/余天洋)

  • 四组分类:基于模型 vs 无模型;基于价值 vs 基于策略;MC vs TD;在线 vs 离线(:3-14)。
  • 「模型」在 RL 里特指环境动力学(P 和 R),不是神经网络(:17-25);已知模型→规划(值/策略迭代);未知→试错(:26-29)。
  • 基于模型两类:给定模型(AlphaGo,围棋规则已知)vs 学习模型(World Models:VAE 编码状态为潜向量 z,再学 z 的预测模型)(:47-58);优点=规划;缺点=模型假设过强/模型不准→策略失效(:59-65)。无模型:易实现但采样效率低,真实环境探索代价高(自动驾驶例子)(:66-72)。
  • AlphaGo/AlphaZero/MuZero 属基于模型(:80-82)。
  • 基于价值:采样效率高、方差小;不能处理连续动作、ε-贪心+max 致过估计(:96-98);DQN 变体 6 个:PER(按 TD 误差加权采样)、Dueling(Q=V+A)、Double(选择/评估用不同网络)、Retrace、Noisy(参数加噪探索)、Distributed(估价值分布)(:99-113)。
  • 基于策略:直接优化策略,适合连续/高维;PG/TRPO/PPO,TRPO/PPO 限制步长防策略崩溃(:114-121)。
  • Actor-Critic:Critic 学价值提高采样效率,Actor 学策略适合连续动作;缺点是 Critic 过估计+Actor 探索不足;A3C(异步并行)、DDPG(目标网络+确定性 Actor)、TD3(截断 Double Q+延迟更新)、SAC(熵正则)(:122-139)。
  • MC vs TD 重申:TD=DP 与 MC 中间形式;TD 偏差大、MC 方差大(:141-151)。
  • 在线(Sarsa:行为策略=目标策略)vs 离线(Q-Learning:max+ε-贪心)(:155-174)。

第4章 深度Q网络(text/08-ch04-4-q.txt,1030 行,黄彦华/余天洋)

  • Q-Learning 用神经网络非线性逼近时不稳定甚至发散(Tsitsiklis)(:6-11);DQN 两关键技术解决。
  • 回顾:TD(0) 更新、Q 值、贪心提升证明、ε-贪心策略不会变差(公式 4.4-4.5 证明)(:22-64)。
  • Sarsa=在线策略(行为策略=目标策略);Q-Learning=离线(行为 ε-贪心,目标贪心)(:67-93);「反思的策略」反复用过去经验(:81-83)。
  • 函数逼近:拟合 Q 迭代(批量)+在线 Q 迭代(:95-133);BT* 不收敛(T* ∞-范数收敛,B 是 L2 投影,组合不保证收敛)(:134-140)。
  • DQN 关键技术1 回放缓存:存 (St,At,Rt,St+1),均匀采样小批量;生物学启发(经验重演);三优点:重用经验/去相关(连续采集样本高度相关增加方差)/平滑学习;FIFO 存最后 N 条(:147-155)。
  • 关键技术2 目标网络:每 C 步硬更新或软更新(指数衰减平均);例子:更新使 Q(St,At) 增加,St 与 St+1 相似→所有 Q(St+1,a) 增加→目标值过估计(:156-162)。
  • 表4.1 消融实验(Breakout 316.8 vs 只用回放 240.7 vs 只用目标网络 10.2 vs 都不用 3.2)(:163-176)。
  • 预处理 ϕ:堆叠最近 4 帧,84×84 灰度;3 卷积层+2 全连接(:178-183);算法 4.17 完整 DQN(:185-205)。
  • Double DQN:过估计根源 E[max(ε)]≥max(E[ε]);DQN 目标里 θ̂ 既选动作又评估;Double 用 Q 网络选动作、目标网络评估(:207-238)。
  • Dueling DQN:看日出例子(动作无关的状态值);Q=V+A;max 归一(否则 V 被忽略)或平均归一更稳(:349-377)。
  • PER:TD 误差定优先级;贪心排序三问题(扫描低效/噪声敏感/误差收敛慢);P(i)=pi^α/Σpk^α;比例优先 pi=|δi|+ϵ 或顺序优先 pi=1/rank(i);重要性采样权重 wi=(N·P(i))^(−β) 纠偏,β 退火到 1;线段树实现(:381-422)。
  • Rainbow=6 扩展:多步学习(n 步回报截断,离线策略目标/行为不匹配问题)、噪声网络(y=(Wx+b)+((Wnoisy⊙ϵw)x+bnoisy⊙ϵb),对蒙特祖玛的复仇这类需大量探索的游戏有效)、值分布 RL(估回报 Z 的分布而非期望;C51:N=51 个原子,KL 散度损失;QR-DQN:分位数回归,1-Wasserstein 距离)(:424-549)。
  • 4.8 代码实例:OpenAI Gym(reset/step/render/seed)(:556-599);装饰器 8 个:NoopResetEnv(随机空动作≤30)、MaxAndSkipEnv(动作重复4次+2帧最大池化)、Monitor、EpisodicLifeEnv(一命=一片段)、FireResetEnv、WarpFrame(84×84 灰度)、ClipRewardEnv(奖励取符号 ±1/0)、FrameStack(4 帧+Lazy-Frame)(:642-662);Huber 损失防梯度爆炸(:663-672);ε 前 10% 步从 1.0 退火到 0.01(:737);Breakout 实验 10^7 步(4×10^7 帧)3 个随机种子(:802);各变体代码改动点(:811-955)。

第5章 策略梯度(text/09-ch05.txt,2152 行,仉尚航/黄锐桐/余天洋/丁子涵)

  • 5.1 优势:不需求价值最大化(适合高维/连续动作)、自然建模随机策略、梯度有更好的收敛保证(但仅局部)(:11-23)。
  • 5.2 REINFORCE:梯度=加权累计奖励鼓励高回报动作(:48-53);γ 折扣也降方差,实际常去掉 γ^t(:63-65);方差问题:轨迹长 L 时奖励随机性可能指数增长(:66-67);基准函数 b(St)(不能是 At 的函数),EGLP 引理保证无偏(:68-89);降方差原理 V(X−Y)=V(X)+V(Y)−2cov,基准常选 V(Si)(:107-117)。
  • 5.3 Actor-Critic:TD 误差取代 REINFORCE 的累计奖励误差项 Ri+γV(Si+1)−V(Si)(:120-128);Critic 最小化 TD 平方误差,Actor 用 TD 误差做策略梯度(:129-167);两网络常共享底层表征(:163-166);L 常设 1 即 TD(0)(:166);Critic 也可用 Q 函数(:187-202)。
  • 5.4 GAN vs AC:同构——生成器≈Actor(生成物体),判别器≈Critic(打分);AE 与 GAN 互为反结构;共性认识有助于提新方法(:204-233)。
  • 5.5 A2C:Master 维护全局 Actor/Critic,Worker 只交互,协调器收集经验/汇总梯度,更新后同步(:235-284)。
  • 5.6 A3C:去掉协调器,Worker 直接与全局对话,Master 不等待;梯度信息不再一致(牺牲一致性换效率);异步更新自动产生类似动量效果(Mitliagkas)(:286-296)。
  • 5.7 TRPO:步长难定(曲度大的区域大步长→性能骤降;且样本质量反过来受影响)(:339-346);参数空间 vs 策略空间的例子:σ(θ),θ=6→3 与 θ=1.5→−1.5 参数变化都是 3,但策略从 (1,0)→(0.95,0.05) vs (0.82,0.18)→(0.18,0.82)(:347-357);引理 5.1 J(θ')=J(θ)+E_{τ~πθ'}[Σγ^t A^{πθ}] (Kakade)(:360-372);近似 Lπθ(πθ')(用 ρπθ 近似 ρπθ')+定理 5.1 误差界 C·DKL^max(:374-426);优化问题:max L s.t. 平均 KL≤δ(:427-436);一阶近似目标+二阶近似约束,解析解 θ'=θ+√(2δ/gᵀH⁻¹g)H⁻¹g,共轭梯度近似 H⁻¹g(:438-472);H=Fisher 信息矩阵,自然梯度对再参数化不变(:474-477)。
  • 5.8 PPO:TRPO 复杂;PPO-Penalty 正则化版本+适应性 λ(KL 小→λ/2,KL 大→λ×2)(:479-547);PPO-Clip:ℓt(θ')=πθ'/πθ 比值截断在 [1−ϵ,1+ϵ],取截断/未截断的 min(:548-589)。
  • 5.9 ACKTR:K-FAC 分解 Fisher 矩阵为分块对角,每层 Al=E[al alᵀ]⊗Sl=E[(∇g)(∇g)ᵀ],求逆复杂度 O(d³in·d³out)→O(d³in+d³out)(:591-683)。
  • 5.10 代码:环境介绍(Pong (210,160,3) RGB 6 动作;CartPole 4 维观测 2 动作;BipedalWalker-V2 24 维状态 4 维连续动作;Pendulum-V0 3 维状态 1 维动作,200 步截断)(:750-833);REINFORCE 实现(Pong:帧差预处理、softmax 选动作、折扣回报标准化;CartPole:PolicyGradient 类)(:835-1116);AC(CartPole:Actor/Critic 两类,TD 误差每步更新;reward shaping trick:done 时 reward=−20)(:1117-1232);A3C(BipedalWalker:Worker 本地 AC,update_global 用本地梯度更新全局,pull_global 同步;摔倒奖励 −100→−2;entropy 奖励探索)(:1234-1431);TRPO(Pendulum:GAE_Buffer 优势估计 lam=0.95、优势标准化、共轭梯度 cg、Hessian 向量积 hvp+阻尼、回溯线搜索)(:1432-1861);PPO(Pendulum:均值×action_bound、logstd 变量、penalty/clip 两法)(:1862-2102)。

第6章 DQN与Actor-Critic的结合(text/10-ch06-6-q-actor-critic.txt,1377 行,张鸿铭/余天洋/黄锐桐)

  • 6.1 结合动机表 6.1:DQN=离线+高采样效率+离散动作;AC=在线+低效率+连续动作;结合=离线+高效+离散连续都行(:14-39)。DQN 无法直接处理连续动作(算不出每个 a 的 Q)(:18-19);AC 的 TD 更新减方差但仍在线(:20-27);结合后 AC 变离线可用回放缓存(:28-32)。
  • 6.2 DDPG:=DPG+深度网络=DQN 在连续动作的扩展;Actor 确定性 π(s)(:41-50);探索:动作加噪声,原论文用 O-U 过程(时间相关性符合马尔可夫性;实践表明零均值高斯噪声也行)(:51-73);Critic 按贝尔曼更新(:74-89);Actor 链式法则 ∇a Q·∇θπ(:91-103);目标网络软更新 θ'←ρθ+(1−ρ)θ',ρ≪1(:105-115)。
  • 6.3 TD3 三技术:(1)截断 Double Q-Learning——函数逼近误差 Y 零均值噪声,max 使 E[Zs]>0 过估计;两个 Q 取 min;低估无害(不会被显式更新)(:147-197);(2)延迟策略更新——Q 更新 d 次才更新策略 1 次(:198-206);(3)目标策略平滑——目标动作加截断正态噪声,平滑 Q 估计防窄峰过拟合(:207-216)。
  • 6.4 SAC:最大化熵正则累积奖励 max E[Σγ^t(r+αH(π))] (:242-255);柔性策略迭代(评估+提高,最优解 π∝exp(Q/α)/Z;KL 投影仍单调提高;定理 6.1 收敛到最优)(:257-324);SAC:Q 最小化柔性 Bellman 残差,策略最小化 KL;两个 Q 取 min 处理偏差;重参数化 a=fθ(s,ϵ) 降方差;自动熵调节(目标熵 κ 的对偶)(:326-370)。
  • 6.5 代码(Pendulum-V0):DDPG(4 网络,EMA 软更新;高斯噪声 var 渐减;Polyak 平均)(:398-619);TD3(6 网络=(2Q+1π)×2;三技术对应代码点)(:620-998);SAC(5 网络+alpha;TanhNormal 重参数;log_prob 修正项 −log(1−a²);自动熵 target_entropy=−action_dim)(:999-1336)。

研究部分导语(text/11-fm.txt)

  • 第 7 章列八大挑战,第 8–12 章各挑一个挑战展开:8 模仿学习(治采样效率)、9 基于模型(治效率但要学环境模型)、10 分层(治灾难性遗忘+难探索)、11 多智能体、12 并行计算(治可扩展性)(:3-26)。
  • 这段是全书研究部分的路线图,把「挑战 → 章」的对应关系写死了。

第7章 深度强化学习的挑战(text/12-ch07.txt,702 行)【研究部分的目录+论证】

  • 八个挑战:样本效率/学习稳定性/灾难性遗忘/探索/元学习与表征学习/多智能体/模拟到现实/大规模(:3-14)。
  • 7.1 样本效率:Pong 人几十次上手,无模型 RL 要成百上千样本(:21-24);代价来自真实交互(时间/设备磨损/安全)(:25-30)。三条出路:专家示范(→第8章)、基于模型(→第9章)、改进算法本身(:33-64)。PILCO 用高斯过程近似动力学,推车双钟摆上翻只要 20–30 次尝试,MLP 要几百次;缺点是非凸+高维不可扩展(:54-61)。算法谱系一段:Critic 减方差 / DQN 拿神经网络换表格 / Double DQN 治过估计 / Noisy DQN 与 SAC 促探索 / DDPG 扩到连续 / TD3 稳 DDPG / TRPO 保安全更新 / PPO 一阶近似省时间 / ACKTR K-FAC 近似逆 Fisher / MPO 与 V-MPO 用「RL 作为推理」的 EM 视角(:72-94)。这一段是全书前六章的倒序总结,写拆解时可以当「为什么会有这一串算法」的因果链用。
  • 稀疏奖励:二值成功/失败任务里中间样本奖励全 0、无区分度 → HER / 分层 / 内在奖励 / 好奇心(:95-105)。
  • 7.2 学习稳定性:两种不稳定——单次曲线内非单调、多次训练间横向方差(:108-112)。根源:移动的目标分布 + 非独立同分布 + 有偏价值估计(:113-131)。Henderson et al. 2018 的五条实测结论:网络结构显著影响 TRPO/DDPG;ReLU/LeakyReLU 多数最好;奖励缩放效果不一致;5 个随机种子不够——精心挑种子能得到完全不重合的置信区间,即使实现完全相同;环境动力学不稳会迅速削弱 DDPG(:149-158)。这条是全书最有「可带走判断」价值的一处。
  • 治稳定的历史:REINFORCE 方差大 → 引价值函数 → 引动作价值(有偏但方差小)→ DQN 目标网络+回放池 → TD3 目标策略平滑+一对 Critic → TRPO 二阶优化+更新限制(:159-173)。
  • 7.3 灾难性遗忘:RL 是「追移动目标」,数据集一直在变(:179-188);在线策略样本高度相关最易遗忘 → 离线回放池缓解 → PER/HER 更进一步(:189-196);多阶段训练损失函数不一致也会遗忘(Sim2Real 时用自监督损失微调嵌入网络,不是原来的 RL 损失)→ 冻结部分层 / 残差策略学习(:197-208)。
  • 7.4 探索:难点来自稀疏奖励、大动作空间、不稳定环境、真实世界安全(:210-215);Montezuma's Revenge 一个房间要几十个连续动作、全游戏 23 个房间(:219-222);OpenAI 与 DeepMind 都宣称解决了它,但两家都用了专家示范(看 YouTube 视频 / 人类示范初始化位置)——作者判为「结果可能不令人满意」(:223-228)。表 7.1 对比:雅达利/围棋/星际的动作空间 17 / 361 / 10^26,每场活动次数 100/s、100/s、1000/s,玩家数单个/两个/多个,信息类型近完美/完美/不完美(:241-247)。解法:模仿学习、内在奖励(婴儿好奇心)、分层(FuN 管理者-工作者)、Go-Explore(先用无神经网络的确定性搜索探完,再用神经网络模仿最好轨迹)、PBT 联盟(:249-270)。
  • 7.5 元学习与表征学习:元学习可追到 1990 年(Bengio et al.);内循环学具体任务、外循环更新内循环学习者;三类:循环模型/度量学习/学习优化器;MAML 小样本几步更新(:283-297)。表征学习:状态表征学习 SRL;例子——物体表面角上的关键点(计算机视觉里叫描述器)对物体运动是恒定鲁棒的表示,像素一直变而关键点集合不变(:300-316)。
  • 7.6 多智能体:「现代学习算法更多是出色的受试者而非创新者」,智能上限受环境限制;围棋发明者从未定义什么策略能赢,策略是一代代玩家自我演化出来的——对手构成动态环境的一部分(:325-332)。AlphaStar 用 PBT + 联盟,优化单位不再是单个策略而是整个联盟(:340-346)。
  • 7.7 模拟到现实:现实鸿沟(Reality Gap)。QT-Opt 在 7 台真机上分布式训练,代价是 800 小时、持续 4 个月的机器人采样(:367-369)。现实鸿沟的一个具体来源:状态采集与策略推理在模拟里假设零耗时,现实里都要时间 → 智能体总是拿滞后观察量决策,实际策略是 π(At|Ot−δ) 而非 π(At|St)(:400-419)。两大类解法:零样本(域随机化——把源与目标域的差异建模成源域里的随机性;动力学随机化随机摩擦力/质量/力矩误差;视觉随机化随机纹理/光照/位置)与自适应学习(域自适应:元学习、残差策略学习、渐进网络)(:426-458)。
  • 7.8 大规模:AlphaStar 里深度 RL 只占一小部分——还用了监督学习(行为克隆)、PBT、Scatter Connections/Transformer/Pointer 网络(:471-483);「当前深度 RL 算法本身端到端解决大规模任务仍不够有效」是作者的明确判断(:481-483)。并行:IMPALA、SEED、A3C、DPPO、R2D2(:484-498)。
  • 7.9 结尾引 Sutton《苦涩的教训》(2019-03-13):能随算力扩展的方法只有搜索和学习;不该嵌入人类知识,该构建元方法去采集复杂度(:507-521)。引文出处是脚注 2,原文标题给了。

第8章 模仿学习(text/13-ch08.txt,979 行)【研究部分最厚的一章,51k 字符】

  • 定位:治第 7 章的采样效率。模仿学习=学徒学习,用专家示范(:3-24)。图 8.1 是全章骨架:五类——行为克隆 BC / 逆向强化学习 IRL / 从观察量模仿 IfO / 概率推理 / 把示范塞进 RL 缓存(:51-67)。
  • 形式化:占用率度量 ρπ(s,a)=π(a|s)Σγ^t p(St=s|π),策略集 Π 与 D 一一对应 → 模仿学习等价于 ρπ 与 ρπE 的分布匹配问题;目标 π̂=argmin ψ*(ρπ−ρπE)−λH(π)(:69-85)。
  • 8.2 行为克隆:有标签就当监督学习,min Σ‖ai−πθ(si)‖²;MDP 假设下状态-动作对顺序可以打乱(:88-109)。两个挑战:协变量漂移(训练分布≠测试分布,「拿区分猫的分类器去区分狗的品种」)(:112-122);复合误差(小误差沿轨迹累积,MDP 的连续性是放大器)(:134-140)。DAgger:每轮用 πi=βiπ*+(1−βi)π̂i 采样、拿专家标注新访问到的状态、聚合数据集再训——无悔迭代;缺点是要一直找专家标注(:143-162)。Variational Dropout:把预训练权重参数化为高斯分布做 Dropout,再拿去初始化 RL 策略,比直接加噪声对噪声大小不敏感(:165-170)。DMP(用微分方程表示记录过的运动,是解析形式而非黑盒)、One-Shot 模仿学习(柔性注意力+元学习)(:173-180)。
  • 8.3 逆向强化学习:从最优行为里反推奖励函数;适用于「显式奖励函数难写」的场合——例子:视觉自动驾驶该给不同反光镜分配多少注意力,无法用奖励工程定义(:37-40, :187-199)。MaxEnt IRL 两式:IRL(πE)=argmax_R EπE[R]−RL(R);RL(R)=max_π H(π)+Eπ[R],构成 RL∘IRL 架构(:205-217)。代价函数 c=−R;max-min 形式(:228-243)。两个挑战:奖励歧义(病态问题——奖励塑形变换 r̂=r+γϕ(s′)−ϕ(s) 对任意 ϕ 都保最优策略不变,单靠示范分不出来)(:247-262);计算代价大(内循环要解一个完整 MDP)(:263-271)。
  • GAIL:借 GAN,辨别器给 Q(s,a)=E[log Dω(s,a)];损失 = 探索样本 + 专家样本两项(:274-292);优点:比 IRL 省算力、不需要训练时与专家交互(不像 DAgger);缺点:拿不回奖励函数——最优时 Dω(s,a) 对所有 (s,a) 收敛到 0.5(:293-303)。
  • GAN-GCL:为了把奖励函数拿回来。熵正则 MDP 里最优策略 π*(a|s)∝exp(Q*soft(s,a));IRL 看成极大似然;pθ(τ)=1/Z exp(−cθ(τ)) 玻尔兹曼分布,配分函数 Z 在连续/大规模空间算不准,所以用重要性采样(GCL)(:311-384);辨别器 Dθ(τ)=[1/Z exp(−cθ)]/[1/Z exp(−cθ)+q(τ)],策略最大化 Rθ=log(1−Dθ)−log Dθ(:386-402)。
  • AIRL:GAN-GCL 以整条轨迹为单位 → 方差大;AIRL 直接对单个 (s,a) 估计 Dθ=exp(fθ)/(exp(fθ)+π(a|s));最优时 f*=A*(s,a) 是优势函数,而优势是「纠缠的奖励减基线」,所以再拆成 fθ,ϕ=gθ(s,a)+γhϕ(s′)−hϕ(s) 来解纠缠(:405-428)。注意:这个拆法就是 8.3.2 里那个奖励塑形变换的形式——第 8.3.2 节埋的伏笔在 8.3.5 揭晓。
  • 8.4 从观察量模仿(IfO):示范里没有动作标签(从视频学)(:432-439)。两大类:基于模型——逆向动态模型 At=Mθ(It,It+1)(绳结操作:从人操作绳子的一串图像预测动作,像素级逆向动态模型,CNN)(:468-483)、RIDM(预训练逆向动态模型再拿稀疏奖励微调)(:484-497)、BCO(用逆向动态模型把观察量补成状态-动作对,再走常规 BC)(:502-510);正向动态模型——ILPO(潜在策略网络推「潜在动作」z + 正向动态模块预测 St+1,再用动作重映射网络把潜在动作接到真实动作;学潜在模型阶段完全不需要与环境交互)(:532-558)。无模型——生成对抗(辨别器只看状态而非状态-动作对)(:568-575);OptionGAN 用选项框架恢复奖励-策略联合选项(:596-603)。
  • IfO 的一个漂亮反例:环形环境里两个智能体同速反向(一顺一逆),状态分布完全相同但动作完全相反 → 只匹配状态分布不够;解法是把辨别器输入从单个状态改成状态转移 {(St,St+1)}(:604-616)。
  • 本体感觉特征(低维)替代图像做策略输入 → 策略可用 MLP 而非 CNN(:617-623);FAIL(IfO 第一个可证明高效的算法,样本量与相关参数多项式关系、不依赖单一观察量数量)(:649-653);AGAIL(用不完整动作信息,IfO 与传统 IL 的结合)(:653-658)。
  • 奖励函数工程方法:人为设计奖励把模仿学习转成 RL 问题——注意人设的奖励不必是真实产生专家策略的奖励(:659-667);欧氏距离奖励(:665-667);TCN 时间对比网络:三重损失,推开视频里视觉相似但动态不同的时间近邻、拉近不同视角下同时发生的帧 → 学到视角不变表示,奖励改在嵌入空间算欧氏距离;自监督(:668-707)。
  • 8.4.3 IfO 的两个挑战:具象不匹配(机械臂模仿人手臂,连「是否处于同一状态」都难确认;解法是自动编码器学跨具象的对应关系)(:722-732);视角差异(视角不变编码模型 / 视角分类器 / 背景转化模型)(:733-742)。
  • 8.5 概率性方法:GMR、DMP、ProMP、KMP、GPR、基于 GMR 的 GP。卖点是协方差矩阵编码了预测轨迹的变化性 → 有置信度,而深度网络只给确定性预测;有解析解、小数据量下快;基于 GMR 的 GP 用 GMR 的条件均值当 GP 先验均值、GMM 各组分的核叠加成 GP 的核,对没见过的输入点适应快(:744-788)。作者坦白:把概率性方法和深度 RL 结合「本身就不是平庸的」(即不容易)(:752-756)。
  • 8.6 模仿学习作为 RL 的初始化:两条路——策略替换(直接拿模仿学到的策略当 RL 初始策略)与残差策略学习 a=πini(s)+πres(s),初始策略冻结,只学修正项(:790-812)。DDPG 残差版走查:六个网络(批判者/目标批判者/残差策略/目标残差策略/初始策略/目标初始策略),残差策略最后一层零初始化,样本存 (s,ares,s′,r,done),Q 与策略都只对 ares 学(:814-846)。
  • 8.7 其他利用示范的方法:DQfD(把专家轨迹直接灌进回放缓存 + 监督式折页损失 + TD 损失,离散动作)(:851-857);DDPGfD(同思路,连续动作)(:858-865);Nair et al. 2018 的组合损失 λ1∇J−λ2∇LBC + Q-Filter——行为克隆损失只在「批判者认为示范动作比行动者动作更好」的状态上生效,免得被示范限死(:866-883);QT-Opt / Quantile QT-Opt 用在线+离线示范混合缓存(:884-887);NAC(预训练与 RL 用完全相同的目标函数,所以对次优示范鲁棒;依次而非同时使用两类数据)(:890-895);用示范做奖励塑形——F^D=γϕ^D(s′,a′)−ϕ^D(s,a),势函数 ϕ^D 取到最近示范状态的高斯相似度,再拿它初始化 Q0(s,a)=ϕ^D(s,a)(:897-922)。注意这里又是奖励塑形那个式子——同一个数学形式在本章出现三次(8.3.2 歧义、8.3.5 解纠缠、8.7.3 塑形),是本章的隐藏主线。

第9章 集成学习与规划(text/14-ch09.txt,280 行)【全书最短的正文章,9.5k 字符】

  • 关键定义:在真实环境里展开叫演算(Roll-out),在模拟环境里展开叫规划(Planning)(:20-30)。这一句是本章的地基。
  • 模型 = 转移模型 St+1∼Fs(St,At) + 奖励模型 Rt+1=Fr(St,At);状态不可完全观测时再加观察模型与表示模型(:33-46)。模型学习是监督式拟合(:48-50)。
  • 模型学习与策略学习的两种关系:直接学习(先攒够经验学模型,再拿模型当模拟环境)与迭代学习(两者交替、互相喂)(:52-60)。
  • 基于模型的两个优点:省真实交互(QT-Opt 要 7 台机器人昼夜不停采样)、可并行(多个学习者各配一个模型互不干扰)(:63-73)。两个缺点:模型不准 → 策略学偏;真实环境一变,模型要迭代很多次才跟上 → 对实时性要求高的应用不适用(:75-82)。
  • Dyna 架构(Sutton 1991):策略同时吃真实经验(准但贵、不可逆)和模拟经验(便宜可控但可能不准);模拟经验保数据量降方差,真实经验保准确降偏差(:91-102)。
  • Dyna-Q 算法(:113-129):每步 (a) 取当前状态 (b) ε-greedy 选动作 (c) 执行、观测 r 与 s′ (d) Q 学习更新 (e) 把 (r,s′) 写进 Model(s,a) (f) 重复 n 次:从历史里随机抽 (s,a)、拿 Model 生成 (r,s′)、再做一次同样的 Q 更新。这是全书最适合做「主走查」的算法之一——七行、每行都能填具体数。
  • 基于模拟的搜索:前向搜索(把 MDP 看成以当前状态为根的树)+ 采样(:131-144)。
  • 朴素蒙特卡罗搜索:模型 M 与模拟策略 π 都固定,对每个动作 a 跑 K 条轨迹、算平均回报当 Q(St,a),取 argmax(:150-175)。缺陷:模拟策略固定,规划中学到的信息用不上(:178-179)。
  • MCTS:维护一棵搜索树存信息、边搜边用当前 Q 值(ε-贪心)更新模拟策略;遇到树外的新状态就切换成默认策略(如均匀探索),第一个新状态加入树(脚注给了另一种做法:整条轨迹的新节点全加)(:179-202)。
  • TD 搜索 / Dyna-2:不等整条轨迹走完,每一步就更新;两套参数——长期存储(在真实环境里用 TD 学)与短期存储(在模拟里用 TD 学,每个 episode 清零);比 MCTS 更有效率,但频繁更新降方差、增偏差(:204-258)。

第10章 分层强化学习(text/15-ch10.txt,573 行)

  • 动机:长期规划难,尤其奖励稀疏、时间跨度大(Dota、星际)(:12-15);HRL 找时空抽象;层次的模块化还带来可移植性与可解释性(:15-21)。
  • 四大流派:选项框架(高层策略在特定时间步切换低层策略,时间域分解)、封建制 FRL(高层给下层设明确目标如某个状态,状态空间分解)、MAXQ 分解、层次抽象机 HAMs(:22-34)。本章只深讲前两个。
  • 选项(也叫技能/宏操作)= 三元组 (Iω, πω, βω):初始状态集、选项内置策略、伯努利终止函数(:37-46)。例子:「开门」选项含靠近/抓取/转门把手的策略 + 一个判断门开了没有的终止条件(:46-48)。
  • SMDP = MDP 加一个 F(t|s,a)(在 s 执行 a 转移耗时 t 的概率);选项框架的顶层可看作 SMDP 上的策略(:55-60)。
  • 人工定义选项的制约:充电机器人的 πω 可能只为「充电器在视野内」定制,视野外就废(:66-70) → 所以要自动发掘选项,两条路:开环(STRAW)与闭环(选项-批判者)。脚注给了定义:开环=不把控制结果反馈回来,闭环=完全反馈(:85-86)。
  • STRAW:两个模块——动作-计划 A∈R^{|A|×T}(第 τ 列是 t+τ 步动作的分对数)与承诺-计划 ct∈R^{1×T}(决定哪一步结束宏动作并重新规划);时间移位算子 ρ 每步把矩阵首列删掉、末尾补 0(:83-96);用「专注写作」的高斯滤波器网格沿时间维读写(步幅概念同 CNN)(:97-104);损失 L=Σ(L(At)+αgt·KL+λ‖ct‖1),最后一项惩罚重新规划、鼓励承诺(:132-140);标量 e 固定为 40(:116)。实验:2D 迷宫上优于 LSTM、接近 Dijkstra 最优;8 个雅达利游戏里 6 个胜过 LSTM 与前馈网(:141-148)。
  • 选项-批判者:把策略梯度定理扩展到选项,端到端联合学选项与选项策略(:153-155)。四个价值定义链:QΩ(s,ω)=Σπω(a|s)QU;QU=R+γΣp·U;U(ω,s′)=(1−βω)QΩ(s′,ω)+βω·VΩ(s′) ← 这一式是关键,「不终止就继续用这个选项的值,终止就换成最优选项的值」;AΩ=QΩ−VΩ(:156-178)。两条定理:选项内置策略梯度定理(对 θ)与终止梯度定理(对 φ,梯度前带负号乘 AΩ——优势为正就压低终止概率)(:194-216)。两种时间尺度:内置策略更新快、终止函数更新慢(:186-190)。Actor 部分 = 内置策略+终止函数+选项策略;Critic 部分 = QU 与 AΩ(:188-190)。
  • 封建制 RL 两条原则:奖励隐藏(下级必须服从管理者的指令,不管这指令让上级满不满意)与信息隐藏(下级不知道管理者被派了什么任务,上级也不知道管理者给下级派了什么)(:227-236)。
  • FuN 封建制网络:管理者在潜在状态空间以更低时间分辨率设目标 gt,工作者靠内在奖励去够;两者之间不传梯度,只共享感知模块 f^Percept(:246-275)。管理者更新走余弦相似度:∇gt=(Gt−V^M)∇θ dcos(mt+c−mt, gt)(:280-285);工作者内在奖励 R^I=(1/c)Σdcos(mt−mt−i, gt−i)——方向偏移给目标提供结构不变性(:286-291);实践里用 Rt+αR^I 训工作者,软化了原始 FRL 的奖励隐藏(:291-292)。理论:转移策略梯度,假设方向 St+c−St 服从 Mises-Fisher 分布 → log p ∝ dcos(:293-302)。Dilated LSTM:维持多个 LSTM 单元,每步只更新一个,输出是最近 c 个被更新状态的池化(:303-306)。超参 k=16 ≪ d=256(:268-269)。实验:Montezuma's Revenge 采样效率显著提高;另 10 款雅达利上明显高于选项-批判者(:307-315)。
  • HIRO(离线策略修正):高层每 c 步给一个目标 gt,其余步由目标转移函数 h(St−1,gt−1,St)=St−1+gt−1−St 递推;内在奖励 R^I=−‖St+gt−St+1‖₂(:324-338);发现直接用原始观测数据表示目标比用嵌入空间更有效(:327-329)。核心难点:旧的高层转移数据是老低层控制器产生的,已经不反映现在的低层动作了重标记:给旧转移换一个 ĝt,使 log µl(At:t+c|St:t+c, ĝt:t+c) 最大;从候选集(含原目标、St+c−St 的差、以及围绕该差的对角高斯采样)里挑(:339-359)。
  • 10.4 其他工作两个视角:①低层奖励信号从哪来——端到端从环境学(STRAW、选项-批判者)vs 辅助奖励(FuN、HIRO)(:369-373);选项发现有自上而下(先探索拿奖励再拆动作:STRAW、选项-批判者)与自下而上(Laplacian 图框架下的原始值函数 PVFs,给任务无关的选项提供理论基础)(:377-382);FiGAR(学「这个动作要重复几步」)(:385-387)。② 抽象对象视角:选项框架=时域抽象,FuN=状态抽象,HIRO 两者兼有(:407-409)。
  • 作者的坦白(收尾判断):「实验结果表明分层架构带来了一些效果提升,但并没有足够的证据表明它确实实现了分层抽象,还是只是进行了更有效的探索」(:417-421)。这是全书最诚实的一句,写拆解必须留。

第11章 多智能体强化学习(text/16-ch11.txt,369 行)【全书唯一的博弈论章】

  • 三个基本元素:智能体、策略、效用函数(实现各种目标获得的总收益减总成本)(:16-27)。智能体数=1 就退化成普通 RL(:21)。
  • 三种博弈框架:静态博弈(所有人同时决策、只决策一次 → 可以骗、可以背叛);重复博弈(同一状态反复决策 → 背叛会被报复,所以整体效益更高);随机博弈/马尔可夫博弈(多状态多次决策,最一般)(:34-46)。
  • 11.2 优化和均衡:用**胆小鬼博弈(斗鸡博弈)**贯穿全节。收益表:双方都「勇敢 D」各得 0;一勇一怯,勇者得 6、怯者得 3;双方都「怯懦 C」各得 5(:63-71)。
    • 纯策略纳什均衡:两个——一人 C 一人 D(:93-100);双 C 时任一方想改成 D(3→6? 实为 5→6),双 D 时都想改,所以都不是均衡。
    • 混合策略纳什均衡:设智能体 1 选 C 的概率 p,令对手对两个纯动作无偏好:5p+3(1−p)=6p+0(1−p) → p=0.75;双方各以 0.75 选 C、0.25 选 D,期望效用各 4.5(:104-115)。这一段是全章唯一带完整数字的推导,做主走查用它。
    • 图 11.2 的几何:A=双C、B/C=纯策略均衡两点、D=双D,所有结果落在四边形 ABDC 里,线段 BC 的中点 E 就是混合策略均衡;所有纳什均衡的效用之和都等于 9(:116-122)。
    • 关联性均衡:9 小于可能的最大总效用 10,但「双方都选 C」在纯分布式下不稳。让 v=(CC,CD,DC,DD)=(1/3,1/3,1/3,0) → 总效用 9.3333(:125-137)。为什么稳:智能体 1 宣布选 C 时对手须以 0.5/0.5 混合 → 1 老实选 C 得 0.5×5+0.5×3=4,私自改选 D 只得 0.5×6+0.5×0=3;宣布 D 时对手必以 100% 选 C,1 也没有动机改回 C(:138-147)。定义 11.2(Aumann 1987)(:149-154)。
    • 斯塔克尔伯格博弈:顺序决策,领导者有先发优势;胆小鬼博弈里领导者选 D,因为能预测追随者只能选 C,自己拿到最大值 6(:162-172)。定义 11.3 给了多领导者多追随者的一般形式(:174-185)。
  • 11.3 竞争与合作:合作(最大化总效用,约束是每个人在联盟里不比不加入差)(:195-206);零和博弈(max min ui);Littman 1994 的简化踢足球问题:max_πi min_a−i Σ Q(s,ai,a−i)πi(:208-230);同时决策竞争——Hu & Wellman 1998 的多智能体一般性 Q-learning:每个智能体维护 Qi(s,ai,a−i),动作按当前 Q 下的混合纳什均衡选,智能体 i 必须同时建模并估计所有其他智能体的 Q 表(:239-262);MADDPG:分布式 Actor(每个智能体一个)+ 集中式 Critic(维护与所有智能体动作集合相关的 Q)(:263-302);顺序决策竞争的领导者/追随者优化式(:305-319)。
  • 11.4 一般性博弈分析架构:循环迭代;同一时间段里把智能体分层级,高层级先动、低层级观察后再动;层级之间求斯塔克尔伯格均衡,同层级内部按能否关联求纳什均衡或关联性均衡(:322-330)。平台:AlphaStar、MACAD(多智能体互联自动驾驶)、谷歌研究足球(:332-337)。

第12章 并行计算(text/17-ch12.txt,491 行)

  • 动机:OpenAI Five 每两秒约 2 百万组数据用于训练(:10-12);策略梯度方法里大批量降方差;但 RL 的交互在时间上必须顺序执行(:12-15)。
  • 两种并行性:计算的并行性(拆子任务;注意「多个计算单元共算一个任务」的效率会先升后收敛于瓶颈)与数据传输的并行性(带宽是瓶颈,拓扑决定冗余与延时)(:17-31)。
  • 12.2 同步 vs 异步:星形拓扑=1 主节点 + 多奴隶节点;奴隶从主节点同步参数 → 独立与环境交互 → 把经验/轨迹/带权经验/梯度提交回主节点 → 主节点更新并同步(:41-54)。同步:所有奴隶用同一时间区间通信,算力强的必须等最慢的,浪费算力(:59-64);异步:谁算完谁提交,主节点不定时与不同奴隶通信(:68-73)。
  • 12.3 并行计算网络:星形的要害是主节点——它得比奴隶更快、带宽更大,主节点一停机整个系统停摆(:79-84)。去中心化:进程两两通信时成本随进程数指数上升 → 用 MPI(:85-92)。
    • 树形结构通信(一个进程广播给 N−1 个):每轮把信息发给周围 m−1 个,下一轮这些进程再各发 m−1 个 → ⌈log_m N⌉ 轮完成,每个进程只做 (m−1)⌈log_m N⌉ 次通信(:93-100)。
    • 蝴蝶形结构通信(所有 N 个进程都要广播给所有人):每轮既发也收也处理;任何一个进程故障,其他进程仍能继续同步(:103-110)。
  • 12.4 分布式算法谱系(这一节是全章骨架,六个架构):
    • A3C:多个行动-学习者各配一个独立环境,各自维护策略网络与价值网络;参数服务器支持异步通信;每轮同步参数 → 最多交互 tmax 步 → 从后往前累积 dθ 与 dθv → 异步提交(:120-159)。
    • GA3C(GPU/CPU 混合):三部分——智能体(不再自己维护策略网络,把「怎么决策」当请求发给预测队列)、预测者(批量取请求喂 GPU 出动作)、训练者(批量取经验训网络)(:161-182)。卖点是把推断和训练都攒成批,吃满 GPU。
    • DPPO:领导者/工人 对应 A3C 的参数服务器/行动-学习者;领导者每次子迭代至少等到 W−D 个工人的梯度再取均值更新;策略网与价值网分别做 M 与 B 次子迭代;两个变体 DPPO-Penalty(自适应 λ:d<dtarget/a 则 λ/b,d>dtarget×a 则 λ×b;KL>4KLtarget 直接 break)与 DPPO-Clip(:184-308)。
    • IMPALA:通信的是整条轨迹经验;学习者用 n 步 V 轨迹目标:Target=V(ST)+Σγ^{t−T}(Π ci)δtV,其中 δtV=ρt(Rt+γV(St+1)−V(St)),ρt=min(ρ̄, π/µ),ci=min(c̄, π/µ) —— 两个截断的重要性权重,这就是「重要性加权」的来历(:311-333)。多学习者时分工人学习者与主学习者(:334-337)。
    • SEED:与 IMPALA 几乎相同,唯一区别是把策略推断从行动者搬到学习者 → 行动者只管跟环境交互,弱算力机器也能当行动者(:338-344)。
    • Ape-X:带优先级的分布式回放缓冲区;行动者自己算优先级 p 再连数据一起送缓冲区;学习者取批量 (i,d) 训练后回写新优先级,并周期性删掉低优先级数据(:347-402);Ape-X DQN 与 Ape-X DPG 两个实例(:371-402)。
    • Reactor(序列经验 + Retrace(λ) + LSTM)(:403-406);R2D2(固定长度序列 + LSTM + 用回放里的状态数据训练)(:407-410);Gorila(DQN 分布式:学习者里一个学习 Q 网络每步同步、一个目标 Q 网络每 N 步同步)(:411-419)。
  • 12.5 分布式计算架构的五个元素:环境 / 行动者 / 回放存储缓冲区 / 学习者 / 参数服务器(:433-469)。这一节是把上面六个架构抽象成一张零件表,写拆解时可以拿它当「顶层全景」。 一条实用建议:回放缓冲区应分配在学习者附近并高效连通(:450-454)。

应用部分导语(text/18-fm.txt)+ 五个应用的对照表

应用算法动作空间观测
Learning to RunSAC连续连续
图像增强PPO离散图片特征
AlphaZeroMCTS离散二值棋盘矩阵
机器人学习SAC连续连续
Arena 多智能体MADDPG 等任意任意

(text/18-fm.txt:9-18。导语说「五个精选应用」,但应用部分实际是第 13–18 章六章——第 18 章是技巧总结不是应用。前言与内容简介都写「第三部分第 13~17 章」,漏了第 18 章,这是原书的一处小口径不一致。)

第13章 Learning to Run(text/19-ch13...txt,330 行)

  • 环境:CrowdAI + NeurIPS 2017 竞赛,OpenSim 肌肉骨骼模型 + osim-rl。41 维连续观测 / 18 维连续动作(:4-5)。脚注注明该会议当时缩写为 NIPS(:24)。
  • 观测 41 维的拆法:骨盆位置 3 + 骨盆速度 3 + 三关节角度 6 + 三关节角速度 6 + 质心位置 2 + 质心速度 2 + 七个部位位置 14 + 左右腰肌强度 2(简化版设为 0)+ 下一个障碍物 2(简化版设为 0)(:32-47)。动作 18 维 = 每条腿 9 块肌肉的激发程度,肌肉名列全(腘绳肌腱/股二头肌/臀大肌/髂腰肌/股直肌/股肌/腓肠肌/比目鱼肌/胫骨前肌)(:48-59)。
  • 奖励 = 骨盆沿 x 轴位移 − 使用韧带的惩罚;done 条件:1000 次迭代 或 骨盆高度低于 0.65 米(:60-64)。
  • 为什么必须并行:单个片段在普通 CPU 上至少几十秒;这个环境用 DDPG 或 SAC 至少要上百个 CPU/GPU 计算小时才能拿到好策略(:137-147)。CPU 管采样、GPU 管反传,整体效率满足短板效应(:148-151)。
  • 并行实现的三个坑(可直接搬进拆解):多进程内存不共享 → 回放缓冲区用 Python multiprocessing 的 BaseManager 共享、网络用 PyTorch 的 share_memory() 共享、Adam 优化器的一阶/二阶动量统计量必须手动 share_memory_()(给了 ShareParameters() 函数)(:177-215);CUDA 子进程要 set_start_method('forkserver'),因此 Windows 10 上跑不了(:216-235)。
  • 五个小技巧:①奖励值缩放(除以批样本标准差;最大熵 RL 对奖励缩放敏感,不同于传统 RL → SAC 后续论文加了基于梯度的温度自动调校)(:250-255);②ELU 换 ReLU(f(x)=x if x>0 else α·exp(x−1);ELU 有负值,把激活均值拉近 0,效果像批标准化但更省算力;ELU 在零点可微)(:256-269);③层标准化(对单个样本在某层上所有神经元算均值方差,区别于批标准化)(:270-275);④动作重复 = 3(原 DQN 用跳帧 4 + 逐像素最大化 + 堆叠帧;本项目不用最大化算子也不堆帧,跳过和不跳过的样本全部入缓冲区)(:276-292);⑤更新重复 = 3(小学习率,同一批样本学 3 次)(:293-294)。
  • 结果:4 GPU + 56 CPU 的服务器上训练 3 天,智能体学会用人类方式跑很长一段;学习曲线到 20000 片段(:296-319)。

第14章 鲁棒的图像增强(text/20-ch14.txt,397 行)

  • 问题:图像增强(去噪/去模糊/亮度改善)。鲁棒性是最重要的条件——在 Facebook、Twitter 这种平台上,即使 1% 的坏例也会伤害数百万用户(:13-20)。图像增强没有大规模公开数据集,训练数据依赖人类专家(:21-22)。
  • 经典法(伽马校正利用人类感知的非线性、直方图均衡化)快但不考虑上下文;CNN 端到端像素映射缺鲁棒性,处理头发、字符这类细节时表现差(:27-36)。
  • MDP 建模:状态=像素(实为深层特征),动作=一次图像增强操作,环境没有不确定性——当前状态与动作完全决定转移(:70-73);奖励用 CIELAB 空间的距离差:‖L(h)−L(St)‖² − ‖L(h)−L(St+1)‖²,h 是对应的高质量图(:74-78)。
  • 终止状态谁来定:游戏里由环境定,图像增强得由智能体自己决定何时收手。前人用 DQN,当所有动作的 Q 都为负就退出;但 Q-Learning 的过估计会削弱鲁棒性 → 本章的做法是训练显式策略 + 加一个「无操作」动作(索引 0)当退出键(:79-84)。
  • 动作集 13 个(表 14.1):0 无操作;1/2 对比度 ×0.95/×1.05;3/4 饱和度;5/6 亮度;7/8 红绿;9/10 蓝绿;11/12 红蓝(:93-102)。
  • 观测怎么构造(这是本章最实用的一手经验):不用原始图像,用 ImageNet 上预训练的 ResNet50 最后一层卷积激活值(2048 维)+ RGB 直方图(10×10×10=1000)+ CIELab 直方图(1000)= 2048+2000 维(:85-104)。CIELab 的范围是 (0,100),(−60,60),(−60,60);RGB 是三个 (0,255)(:89-104)。
  • 算法 PPO(离散版);网络:3 层特征抽取(2048/512/128, ReLU)+ 1 层 Actor + 1 层 Critic,全连接(:105-108);Actor 的激活函数用 LogSoftmax,理由是算替代目标时数值更稳定(:199-201)。
  • 数据集 MIT-Adobe FiveK:5000 张原图,每张有 5 位专家(A/B/C/D/E)的修复版,只用专家 C;4500 训练 / 500 测试;原图 DNG、修复图 TIFF,统一转成 sRGB 质量 100 的 JPEG,最大边缩到 512 像素(:109-114)。超参表 14.2:Adam / lr 1e-5 / 梯度范数裁剪 1.0 / GAE λ=0.95 / 每次迭代 4 个片段 / 每次迭代优化 2 次 / 最大迭代 10000 / 熵因子 1e-2 / 奖励缩放 0.1 / γ=0.95;max_episode_length=20(:117-124,:130)。
  • 诚实的一句:图 14.2 说明写着——当右上角天空等区域需要局部增强时,全局亮度会跟着一起增加(全局操作的固有缺陷)(:335-336)。

第15章 AlphaZero(text/21-ch15...txt,599 行)【应用部分讲得最透的一章】

  • 组合博弈的五个特征:两个玩家(单人游戏可看成设计者与玩家的博弈;三人以上不算组合博弈,因为会出现合作)、无随机因素(没有骰子)、完美信息、回合制且动作与状态空间有限、有限步内结束(:27-38)。
  • 谱系:深蓝赢卡斯帕罗夫之后围棋成为下一个桥头堡(:39-44)。AlphaGo 三代:AlphaGo Fan(赢樊麾)、AlphaGo Lee(赢李世石)、AlphaGo Master(赢柯洁);AlphaGo Zero 与 AlphaZero 完全不用人类专家数据,从随机动作开始(:11-16)。
  • 例子用无禁手五子棋(至少五子连线即赢)对照长连禁手(必须恰好五子);演示时把棋盘简化到 3×3(即井字棋),序列写成 ((b,5),(w,4),(b,1),(w,7),(b,9))(:45-67)。给了 Board 类与 has_a_winner() 的四方向判断代码(:72-146)。
  • AlphaZero 树节点存五样东西:A(到达该节点的上一个动作)、N(访问次数)、W(奖励值之和)、Q=W/N、P(该动作的选取概率,由父节点状态喂进神经网络得到)(:160-169)。
  • 视角问题(本章最容易踩的坑,作者专门警告):一棵树里有黑白两个视角;节点上的信息是从它父节点那个玩家的视角存的,因为这个节点是父节点扩展出来的(:176-184)。
  • 传统 MCTS 四步:选择 / 扩展 / 模拟(用随机策略下到终局拿 +1/−1/0)/ 回溯(:197-204)。AlphaZero 砍掉了模拟这一步,直接用神经网络预测结果,所以只有三步(:242-258)。
  • UCB → UCT → AlphaZero 的选择公式,三级递进:UCB At=argmax[Qt(a)+c√(ln t/Nt(a))] (:210-219);UCT=X̄j+Cp√(2 ln n / nj)(:221-233);AlphaZero a=argmax(Q+U),U(s,a)=c_puct·P(s,a)·√(Σ_b N(s,b))/(1+N(s,a)),c_puct=5(:259-264)。Kocsis & Szepesvári 2006 证明:有限状态 MDP、奖励在 [0,1]、状态数 D、每状态动作数 K,令 UCT 根号项乘 D,则 X̄n 的估计偏差与 O(log n / n) 同阶,根节点估计错误的概率以多项式速率收敛到零(:234-241)。
  • 一段带具体数字的三轮树搜索走查(:386-462)——这是全书最适合直接改写成主走查的材料:
    • 第 1 轮:只有根节点,它既是根也是叶 → 直接扩展评估 → 回溯时根节点不更新 W 与 Q,只把 N 从 0 改成 1;
    • 第 2 轮:根不再是叶 → 按 argmax(Q+U) 选出 A=2 (w,2) → 到新叶节点扩展评估 → 回溯:价值网络给 v(s)=−0.1 是从黑方视角看的,更新属于白方的信息要取反,于是该节点 N=1, W=0.1, Q=0.1;再回到根,N=2;
    • 第 3 轮:选出 (w,2) 再 (b,9),走到了终止状态 → 不扩展,价值直接从游戏拿,策略网络与价值网络都不用;白方输了 → v_white=−1 → 该节点是黑方选 A=9 到达的,所以 v_black=+1 → N=1, W=1, Q=1;沿路三个节点逐级取反更新。
  • 搜索完才在真棋盘落子,动作按访问次数的温度归一化选:π(a|s)=N(s,a)^{1/τ} / Σ_b N(s,b)^{1/τ}(:468-475)。温度 τ 的用法:τ=1 时概率正比于访问次数、探索足、保证自博弈数据多样;τ→0 时只挑访问最多的。AlphaZero/AlphaGo Zero 自博弈时前 30 步用 τ=1(本书实现是 12 步),之后 τ→0;与真人对弈时全程 τ→0(:489-493)。
  • 落子后换根,兄弟节点与旧父节点全部剪枝丢弃以省内存(:494-497)。搜索次数:本书 400、AlphaGo Zero 1600、AlphaZero 800;脚注细节:第一次搜索从扩展开始没有选子节点,所以子节点访问次数之和是 400 而根是 401(:464-479)。
  • 训练:标签 v(s) 来自最终胜负(1/−1/0),π(a|s) 来自访问次数——「概率通过访问次数计算,这是树搜索自博弈与神经网络训练相结合的关键点」(:499-506)。输入是堆叠的 0-1 特征层(一组表示当前玩家落子、一组表示对手落子,按历史顺序堆叠)(:507-510)。数据增强:旋转与镜像翻转——围棋和五子棋规则对此不变,但 AlphaZero 没用这个技巧,因为有些游戏(如国际象棋)不具备旋转镜像不变性(:510-514)。
  • 网络 = ResNet 主干 + 两个头(概率分布 + 状态估值);损失 l=(r−v)² − πᵀ log p + c‖θ‖²(:525-528)。
  • 模型更新的两种流派:AlphaGo Zero 让新模型与当前最优模型对打 400 局,胜率超过 55% 才替换;AlphaZero 不对打,直接持续更新参数。本书采用 AlphaGo Zero 的方式,理由是训练更稳定(:529-533)。
  • 表 15.1 参数三列对照(五子棋 / AlphaGo Zero / AlphaZero):c_puct 5/5/5;MCTS 次数 400/1600/800;残差块 19/19或39/19或39;批尺寸 512/2048/4096;学习率 0.001/退火/退火;优化器 Adam/带动量SGD/带动量SGD;狄利克雷噪声 0.3/0.03/0.03;噪声权重 0.25/0.25/0.25(实现里是 0.75*prior + 0.25*noise,见 :312-328);τ=1 的前 n 步 12/30/30(:551-562)。
  • 最终在 11×11 棋盘训出无禁手五子棋 AI,又在 15×15 上成功训练,以此说明算法的通用性与稳定性(:546-549)。

第16章 模拟环境中机器人学习(text/22-ch16.txt,799 行)

  • 定位:CoppeliaSim(3.6.2 版之前叫 V-REP)+ PyRep,Sawyer 机械臂 + BaxterGripper 夹具做抓取,算法用并行 SAC(:3-7)。明确说不能指望深度 RL 完全取代反向运动学或 PID 这类传统控制,它是互补(:8-13)。
  • 一句要紧的话:「一个『真实的』模拟可以有很多种实现,而其中只有一种与现实相同」——不同光照都看着真实,但深度网络敏感,细微外观差异会导致现实中截然不同的动作(:45-55)。
  • 状态 17 维 = 7 关节位置 + 7 关节速度 + 3 维目标位置(:292,:318-323);动作:正向运动学模式 7 维关节速度,反向运动学模式 3 维末端位置 + 1 维夹具旋转(:281-291)。
  • 奖励函数三级演进(本章的主线,也是第 18 章「奖励与目标有分歧」的实例):
    • 稀疏:抓到 +10,物体掉下桌子 −10 → 几乎学不动(:481-484,:673-678);
    • 密集:再减去夹具到目标中心的距离,并惩罚夹具与桌面碰撞 → 能学,但距离项会把夹具往物体中心吸,导致抓取姿态不对(:484-490);
    • 增强密集:①加旋转惩罚(夹具要垂直于长方体长边且朝下,rotation_norm=0.02)(:580-587);②把零惩罚点从物体中心上移 offset=0.08(:593-596)。结果:增强奖励比原密集显著加速,稀疏奖励下「探索和学习抓取几乎是不可能的」(:598-599,:671-678)。
  • 工程细节:夹具与目标平方距离 <0.1 且近距传感器检测到才闭合夹具;碰撞检测不总是准确——连续碰撞帧里可能只有开头 4~5 帧能被检测到(:330);math.isnan 捕捉夹具在探索中被拉坏的情况并 reinit()(:493-496)。
  • 超参表 16.1:Adam / lr 3e-4 / γ=0.99 / 6 个工作者 / 策略网 4 层 512 单元 / Q 网 3 层 512 单元 / 批 128 / 目标熵 = 动作维度的负值 / 缓存 1e6(:682-693)。训练几千片段后能从固定位置抓起物体,姿势不完美、成功率不高,且全程从零开始、无示范无预训练(:694-696)。
  • 域随机化:动力学随机化(物体质量、关节摩擦力、物体与桌面摩擦力)+ 视觉随机化(颜色、光照、材质);实践口径:随机化的范围必须能覆盖现实中真实的动力学过程;每个片段或每几十个片段重设一次(:700-716)。
  • 生态:RLBench(基于 PyRep 的 100 个人为设计任务基准)(:722-730);模拟器对比——OpenAI Gym robotics 简单适合快速验证;CoppeliaSim 与 Unity 3D 渲染好;MuJoCo 物理引擎更真实准确、适合模拟到现实;Isaac SDK(2019 年发布)对深度学习支持强、基于 Unity 3D 的照片级渲染(:748-757)。
  • 奖励函数工程的坦白:「这可能与科学研究本身的诉求相斥,因为科研角度人们更专注于减少奖励函数工程的工作量……但实践中解决一个任务,这类人为辅助设计可能会很有帮助」(:652-656)。

第17章 Arena:多智能体强化学习平台(text/23-ch17...txt,~560 行)

  • Arena 建在 Unity 上,专攻第一/第三人称动作类 3D 游戏;对照:DeepMind 的 OpenSpiel 专攻多智能体棋牌类(:16-22)。两个模块:开发工具包 + 基准库(:24-28)。
  • **社交树(Social Tree)**是本章的核心概念:GlobalManager → Team → Agent 的层次,每一层挂一个 Arena Node 脚本,在哪个节点挂什么奖励机制,就定义了它的子节点之间是什么社会关系(:96-101,:150-156)。
  • 具体操作走查(单人 → 双人 → 两队各两人):删掉 Main Camera 与 Directional Light,拖入 GlobalManager 预制件;运动场 PlayGroundWithDeadWalls 挂在 World 下;BasicAgent 挂在 GlobalManager 下;设 At Least Specific Number Living;复制智能体时必须改 Node ID(否则区分不开)(:54-131)。逻辑差异的例子:队伍的 Living Condition 设 At Least Specific Number Living=1 则全队死光才算队伍死;设 All Living 则任一成员死队伍就死(:150-156)。
  • 五种基本多智能体奖励机制(BMaRS),每一种都是对奖励函数的一个约束集合:
    1. 不可学习 F^NL:∀x, ∂R^f_x/∂π_x = 0 —— 任何智能体改进自己的策略都无法优化自己的回报(:196-203);
    2. 独立 F^IS:∂R^f_x/∂π_{x′} = 0 —— 我的回报与别人的策略无关;文献里叫内部奖励函数;Arena 在这一类里提供了能量损耗、大力惩罚、稳定速度激励、朝目标移动距离(:205-222);
    3. 竞争 F^CP:∂(∫R^f_{x′}dx′)/∂π_x = 0 —— 所有人回报之和不随任何人的策略变化;片段长度为 1 时就是经典多人零和博弈;石头剪刀布属于这一类(:224-241);
    4. 合作 F^CL:∀(x,x′), ∂R^f_{x′}/∂R^f_x ≥ 0 —— 任意两人之间没有利益冲突,且至少有一对严格大于 0(:242-261);
    5. 混合 F^CC:以上四种之外的全部(:262-278)。
  • 一个四智能体的例子把三层讲透:每个智能体个体层用 F^IS(机器蚂蚁学基本运动技巧);每两只蚂蚁一队,队伍层用 F^CL(合力推箱子的距离);两队之间全局层用 F^CP(比谁先把箱子推到目标)。施加到每个智能体的最终奖励 = 三层 BMaRS 的加权求和(:286-301)。
  • Arena 还提供自定义奖励函数的「验证选项」,可以检查你写的 f 是不是真的落在某个 BMaRS 里(:279-280)。工程约定:合作与竞争类奖励定义在 GlobalManager 的 Arena Node 上,独立类定义在智能体自己的 Arena Node 上(:281-285)。
  • 导出与训练:PlayerBrain(键盘控制)改成 LearningBrain(算法控制)才能导出二进制(:338-348);服务器无 X-Server 时要配虚拟显示(给了完整 Xorg 脚本)(:368-439);连续动作空间 11 个游戏、离散 17 个游戏,给了两条完整训练命令(PPO + GAE,--num-mini-batch 必须等于 --num-processes,--reload-playing-agents-principle OpenAIFive)(:452-518)。

第18章 深度强化学习应用实践技巧(text/24-ch18.txt,376 行)【最实用的一章,几乎全是可带走的】

  • 为什么 DRL 比监督学习更难:奖励信号可能只含不完整或局部信息;用自举时在追一个变化的目标;高级方法往往要同时训好几个网络(:13-19)。
  • 三阶段流程:①简单测试阶段(用高置信度的模型/甚至随机策略先探环境,快速暴露极端情况);②快速配置阶段(逐步加复杂度,不确定就每次都测,多可视化、多看统计量);③部署训练阶段(并行/云,常与②交替)(:31-44)。
  • 18.2 实现阶段的十二条:
    1. 从头实现基本算法(DQN、策略梯度、AC),在简单 Gym 环境上验证(:48-63);
    2. 不要过拟合论文细节——要理解作者为什么在那个情形下用那个技巧。两个实例:DDPG 论文推荐 OU 噪声,实践中很难说它比高斯噪声更好,高度依赖任务;AlphaStar 的工作里 Vanilla TD(λ) 被证实比更高级的离线策略修正 V-Trace 更有效(:64-79);
    3. 先探环境:检查维度、值域、连续还是离散;值域大或未知就归一化——否则 Tanh/Sigmoid 的第一隐藏层会饱和,开局梯度就很小(:80-86);
    4. 输出激活函数要配动作值域(动作在 (−1,1) 就用 Tanh);ReLU 适合隐藏层但不适合有负值的动作输出(:87-90);
    5. 从简单例子起步、逐步加复杂度(:91-94);
    6. 从密集奖励起步——奖励函数的设计会影响优化问题的凸性;第 16 章的抓取任务就是拿「夹具到物体距离的负数」当密集奖励开局(:95-100);
    7. 网络别太深:超过 5 层在 RL 里不常见;监督学习里网络够大能过拟合数据集,深度 RL 里可能只是慢慢收敛甚至发散;几十个状态动作组合的离散环境一两层就够,第 13/16 章那种几十维连续空间要 3 层以上,但仍远小于 CV/NLP 的巨型网络。结构:低维矢量用 MLP,视觉用 CNN 主干,不完全可观测或非马尔可夫用 RNN;高低维混合时先用主干抽高维特征再与低维并联;非对称 Actor-Critic——价值网络只在训练时当指导,预测时不用,所以两者状态输入可以不同(:101-126);
    8. 熟悉算法自身的脾气:TRPO/PPO 需要大批尺寸,因为要用共轭梯度基于当前批样本近似 Fisher 信息矩阵,批小或有偏就近似不准 → TRPO 因此也不太能扩展到大网络或深 CNN/RNN;DDPG 对超参敏感,现实任务里没时间做彻底超参搜索,所以可能不如 TRPO 或 SAC;DDPG 想用在离散动作上要加技巧(大 t 的 Sigmoid(tx) 再二值化,或用 Gumbel-Softmax)(:127-146);
    9. 归一化只缩放不平移(重要且反直觉):奖励除以批样本标准差,但不要减均值。理由:均值平移会改变智能体的存活意愿。推理链——如果用了 Done 信号,片段结束后的奖励实际是 0;若这些 0 比之前的奖励高(之前基本是负数),智能体会倾向尽早结束片段;若之前基本是正值,它会想活久一点。减均值会打破这个倾向。若事先没用 Done 信号终止片段,则可以平移(:147-162);
    10. 折扣因子的有效时间尺度:1+γ+γ²+…=1/(1−γ);γ=0.99 → 约 100 个时间步之后的奖励可以忽略(:163-165);
    11. Done 只在终止状态为真(全书最容易被忽略的细节,作者说这「不是一个平庸的问题」):Done 应当只在任务真正完成或失败时为真,不是到达最大片段长度时。为什么要命:以 PPO 为例,终止状态的价值是 0;若非终止状态的 Done 为真,V(St) 被强行设成 0,而它本不该是 0,价值网络会被带偏(:166-185);
    12. 避免除法的数值问题:a/b=exp(log a − log b),或 a/(b+1e−6)(:186-188);
    13. 奖励函数与最终目标的分歧:奖励是目标的量化形式,它们是两个东西;智能体会过拟合到你写的奖励上。设计一个在所有极端情况下都与目标一致的奖励函数「是不平庸的」(:189-197);
    14. 奖励曲线不一定是学习表现的最好展示:因为有上面那个分歧,应该另外报一个任务特定的度量——例如 FetchPush 里物体到目标位置的最终距离比奖励值更能衡量策略好坏;比较多个不同奖励函数时这类额外度量尤其关键(:198-215);
    15. 非马尔可夫的情况:马尔可夫性是状态的性质,由状态的定义决定。Pong 用单帧当状态时是非马尔可夫(单帧看不出球速与方向);如果状态定义为含位置和速度、而观测只有位置,那是 POMDP 而不是非马尔可夫——这个区分很细但很关键。解法:堆叠帧(把堆叠帧当成一个状态,就近似回到 MDP)或 RNN/LSTM(:217-237)。
  • 18.3 训练与调试阶段的七条:
    1. 初始化很重要:监督学习从固定数据集学,样本顺序不重要;深度 RL 的策略初始化决定了后续能探索到什么、进而决定进缓存的样本 → 影响整个学习表现。权重用 Xavier 或正交初始化(:243-252);
    2. 往程序里加探针:别只盯奖励——还要看损失函数值(了解价值函数拟合情况)、随机策略的熵(熵过早下降基本表明探索不动了,可用熵奖励或 KL 惩罚缓解,SAC 的自适应熵自动处理这件事)、信赖域方法要看新旧策略的 KL、看梯度值(正常层的梯度不应过大也不应全为 0)、看输出空间与参数空间的更新步长;工具是 Tensorboard(:253-268);
    3. 多随机种子取平均:NumPy 的、框架的、环境的都要随机化;先固定种子看采样轨迹还有没有差异,有就说明系统里还有别的随机源;经验值是 3 到 5 次试验,越多越好(注意:第 7 章引 Henderson 说 5 个可能都不够)(:269-277);
    4. 平衡 CPU 与 GPU:CPU 管与环境交互采样,GPU 管前向与反传;GPU 用满就多开采样进程,CPU 用满就减少采样线程/增加更新线程/增大更新迭代次数或批尺寸;离线策略的并行设置比在线策略灵活,因为随时可以更新而不必等到片段最后一步;锁与管道;创建冗余进程有时能省等待时间(:278-301);
    5. 可视化 / 6. 平滑学习曲线(滑动平均、卷积核,选合适窗口)(:303-312);
    6. 理解平台期:学习曲线早期的平台期在 RL 里非常常见——因为样本要靠当前策略探索出来。诊断法:先查智能体有没有探索到更好的轨迹;没有 → 探索有问题;探索到了却学不会 → 利用有问题(采样效率低、价值函数拟合差、价值网络学习率低、策略网络学得差)(:313-326);
    7. 先质疑你自己的实现:「一个糟糕的学习表现可能由很多因素导致……而最常见的原因是代码实现中的错误」;正确性永远优先于调参(:327-332)。
  • 作者列了三个外部参考:OpenAI Spinning Up、John Schulman 的 "The Nuts and Bolts of Deep RL Research" 幻灯片、William Falcon 的 DeepRLHacks(:333-337,脚注 :346-348)。

附录 A 算法总结表(text/25-apx-a.txt)

一张 17 行的表:算法 | 在线/离线策略 | 动作空间 | 年份 | 论文 | 作者。按年份排:REINFORCE 1988(Williams)、Q-Learning 1992(Watkins & Dayan)、SARSA 1994(Rummery & Niranjan)、Actor-Critic/QAC 2000(Konda & Tsitsiklis)、CE Method 2004(Rubinstein & Kroese)、DQN 2015(Mnih)、Dueling DQN 2015(Wang)、TRPO 2015(Schulman)、DDPG 2016(Lillicrap)、Double DQN 2016(van Hasselt)、A3C 2016(Mnih)、Noisy DQN 2017(Fortunato)、Distributed DQN 2017(Bellemare)、PPO 2017(Schulman)、DPPO 2017(Heess)、ACKTR 2017(Wu)、TD3 2018(Fujimoto)、SAC 2018(Haarnoja)。这张表是「为什么会有这一串算法」的时间轴,可以和第 7.1 节那段谱系互相印证。

附录 B 算法速查表(text/26-apx-b.txt,1000+ 行)

42 条伪代码(编号 B.43–B.84),分四节:B.1 深度学习(SGD、Adam);B.2 强化学习(赌博机 3 条、动态规划 2 条、蒙特卡罗 2 条、时间差分 5 条);B.3 深度强化学习(DQN、REINFORCE、带基准 REINFORCE、AC、QAC、A2C、A3C、DDPG、TD3、SAC、TRPO、PPO-Penalty、PPO-Clip、ACKTR);B.4 高等深度强化学习(模仿学习 DAgger、基于模型 Dyna-Q/朴素MC搜索/MCTS/Dyna-2、分层 STRAW、多智能体 一般性Q-learning/MADDPG、并行 A3C/DPPO×3/Ape-X×2)。作者明说「尽量在行文中保持数学符号、变量记号和术语与整本书一致」——这份附录是全书符号的统一出口,写拆解时如果要给某个算法一段伪代码,应该从这里取而不是自己编。

附录 C 中英文对照表(text/27-apx-c.txt)

按主题分组的中英术语对照(机器学习基础 / 强化学习 / …)。对我们最有用的一点:它给出了这本书对每个术语的官方中文译法,比如「分对数=Logit」「折页损失函数=Hinge Loss」「密集层,亦称全连接层=Dense Layer」「整流线性单元=ReLU」「指数线性单元=ELU」。写拆解要留哪个中文名,以这份表为准。


版权页与作者(text/01-fm.txt)——填书卡用

  • 书名《深度强化学习:基础、研究与应用》,董豪等著,电子工业出版社;ISBN 978-7-121-41188-5;2021 年 7 月第 1 版第 1 次印刷(CIP 数据著录年写 2020.7,CIP 核字是 2021 第 093628 号);787×980 1/16,印张 32.5,字数 745 千字,彩插 7;定价 129.00 元(:15-33)。
  • 书卡原来写「2022 版」,与版权页不符,应改成 2021。
  • 四条专家赞誉:郭毅可(香港浸会大学副校长、帝国理工教授、英国皇家工程院院士)、陈宝权(北京大学教授、IEEE Fellow)、金驰(普林斯顿助理教授)、李克之(伦敦大学学院助理教授)(:37-77)。这些是推荐语,不是作者本人的判断,写拆解时要分开标。
  • 编著方式:由人工智能开源社区发起,TensorLayer 中文社区支持,每章作者不同(:130-170)。逐章作者表已抄入本笔记开头。核心作者五人:董豪(北大前沿计算研究中心助理教授、鹏城实验室双聘、帝国理工 2019 博士、TensorLayer 创始人)、丁子涵(帝国理工硕士、普林斯顿博士全奖、Arena 项目贡献者)、仉尚航(伯克利 BAIR 博士后、CMU 2018 博士)、黄锐桐、张鸿铭等。
  • 利益相关(必须写进拆解):①全书实现教学用 TensorLayer,而董豪是 TensorLayer 创始人;②第 17 章讲的 Arena 平台,而丁子涵是 Arena 的作者之一(第 17 章末尾还专门致谢了 Arena 项目团队,text/23-ch17...txt:376-378)。
  • 前言(董豪,2021 年 4 月)的阅读建议:第 2 章最关键最基础;已有深度学习基础可跳过第 1 章;第 3 章 + 附录 A + 附录 B 是算法总结;做研究看第 7 章挑战再看 8–12;做工程看 13–17,按「业务场景的动作空间和观测种类」去挑最像的应用例子(:97-120)。

通读完之后的四件事(写大纲的人先读这一段)

一、全书主线:一条「缺陷 → 补丁」的长链,落点在第 18 章

原书自己的结构是「基础 6 章 + 研究 6 章 + 应用 6 章」,但那只是目录。真正把这本书串成一个论证而不是一份算法清单的,是下面这条链——每一步都是被上一步的缺陷逼出来的:

① 决策问题写成 MDP,才有「价值函数 + 贝尔曼方程」这套能迭代的解法 (第2章 2.3)
↓ 但环境模型(转移概率与奖励)通常不知道
② 只能采样。蒙特卡罗无偏但方差大,时间差分有偏但方差小,TD(λ) 是这条轴上的连续调节 (第2章 2.4–2.6)
↓ 但状态一多,Q 表就装不下(围棋约 10^170 个状态)
③ 必须用函数逼近。可「离线训练 + 函数拟合 + 自举」是死亡三件套,不保证收敛 (第2章 2.7.1)
↓ 那就打补丁把它按住
④ DQN 两个补丁:回放缓存(把相关样本打散)+ 目标网络(给一个不动的靶子)。
消融实验:Breakout 上两个都用 316.8 / 只用回放 240.7 / 只用目标网络 10.2 / 都不用 3.2 (第4章 表4.1)
↓ 但 max 算子系统性高估、动作无关的状态值被淹没、样本被同等对待、ε 探索太笨、只估期望丢了分布
⑤ Double / Dueling / PER / Noisy / C51 与 QR-DQN —— Rainbow 的六个补丁 (第4章)
↓ 但这一整条线天生接不了连续动作(算不出每个动作的 Q 再取 max)
⑥ 换一条线:不学价值,直接优化策略。策略梯度定理 → 方差大 → 基准函数(EGLP 引理保证无偏)
→ 用价值函数当基准就成了 Actor-Critic (第2章 2.7.3、第5章)
↓ 但策略更新的步长没法定:曲度大的地方一大步就崩
⑦ TRPO 用信赖域约束 KL → 二阶优化太贵 → PPO 改成一阶截断 (第5章)
↓ 两条线各有长短(表6.1:DQN 离线、高效、只能离散;AC 在线、低效、能连续)
⑧ 合流:DDPG = 确定性策略梯度 + DQN 的两件套 → DDPG 脆弱 → TD3 三技术
→ 探索仍不足 → SAC 把熵写进目标 (第6章)
↓ ★ 到这里算法已经很齐了。可它们还是不好用。★
⑨ 第 7 章把「不好用」拆成八个具体挑战:采样效率 / 稳定性 / 灾难性遗忘 / 探索 /
跨任务泛化 / 多智能体 / 模拟到现实 / 可扩展性 (第7章)
↓ 第 8–12 章各治一个
⑩ 模仿学习拿专家示范治采样效率(第8章);基于模型与 Dyna 拿模拟经验治采样效率(第9章);
分层拿时空抽象治遗忘与难探索(第10章);多智能体把「对手」纳入建模(第11章);
并行计算治可扩展性(第12章)
↓ 第 13–17 章把这些真的跑起来,同时暴露理论没说的那部分
⑪ 奖励函数得手工反复调(第16章的三级演进)、模拟器才是速度瓶颈(第13、16章)、
随机种子会骗人(第7.2 引 Henderson)
↓ 最后
⑫ ★ 第 18 章是落点:把前十七章压成一份「怎么不把自己坑死」的清单。
而这份清单里最要命的几条 —— Done 信号只在终止状态为真、归一化只缩放不平移、
奖励曲线不等于学习表现 —— 在前面任何一章的理论里都推不出来。★

一句话概括这本书的主张: 强化学习的算法史是一部打补丁史,而「算法正确」和「它在我的任务上能跑」之间还隔着一整层工程判断,那一层没有理论,只有经验。

落点判断(这是我们的读法,不是书里的原话): 枢纽是第 7 章(它把算法清单变成工程议程),落点是第 18 章(它给出这层工程判断的具体条目)。 如果这个读法错,会错在: 原书前言把阅读重心放在第 2 章("最关键、最基础"),内容简介与前言又都把第三部分写成"第 13~17 章"、根本没把第 18 章算进去 —— 作者本人未必认为第 18 章是落点。备选读法是:落点在第 7 章,后面十一章都是它的注脚。写总纲时要在两种读法里选一个并说明理由,不要含糊。

二、伏笔清单(不通读根本看不出来的十处)

#埋在哪收在哪是什么
1第2章「死亡三件套」(text/06-ch02.txt:1743-1753)第4章 DQN 两补丁(text/08-ch04-4-q.txt:147-162)、第7.2 稳定性(text/12-ch07.txt:159-173)三件套是病,DQN 两补丁是药,第 7 章再回来讲药也没治好
2第2章 2.2.2 的 UCB(text/06-ch02.txt:243-264)第15章 UCT / PUCT(text/21-ch15-15-alphazero.txt:205-264)跨了 13 章。第15章原文明写「UCB 算法详见 2.2.2 节」
3第2章再参数化与 Gumbel-Softmax(:1848-1883)第6章 SAC 用再参数化降方差(text/10-ch06-6-q-actor-critic.txt:326-370);第18章说 DDPG 想做离散动作可用 Gumbel-Softmax(text/24-ch18.txt:143-146)一个技巧,理论章埋、算法章用、工程章再拿出来救场
4第5.4 节 GAN 与 Actor-Critic 同构(text/09-ch05.txt:204-233)第8.3.3 GAIL 把 GAN 搬进模仿学习(text/13-ch08.txt:274-292)第 5 章那节读着像闲笔,其实是为第 8 章铺路
5第8.3.2 奖励塑形不变式 r̂=r+γϕ(s′)−ϕ(s)(text/13-ch08.txt:250-257)第8.3.5 AIRL 用同一形式解纠缠(:424-428);第8.7.3 用它做示范奖励塑形(:897-922)同一个数学形式在一章里三次转身:先当病因,再当解药,最后当工具
6第7.3 灾难性遗忘提到残差策略学习「如 8.6 节所述」(text/12-ch07.txt:205-208)第8.6 DDPG 残差版的六网络走查(text/13-ch08.txt:814-846)书内明确的前后指,兑现了
7第7.7 域随机化(text/12-ch07.txt:437-445)第16.2.3 给出 PyRep 里 set_color 那一行(text/22-ch16.txt:700-716)概念 → 一行代码
8第16章奖励函数三级演进(text/22-ch16.txt:481-490,原文写「参考第 18 章」)第18章「奖励函数与最终目标的分歧」(text/24-ch18.txt:189-215)具体案例 → 通则
9第2章 CE 方法(无梯度优化)(text/06-ch02.txt:2534-2583)第2.7.4 QT-Opt 无行动者(:2663-2667);第8.7.1 QT-Opt 混合缓存(text/13-ch08.txt:884-887)无梯度这条支线全书出现三次
10第13章的并行 SAC 框架(text/19-ch13-13-learning-to-run.txt:167-235)第16章原文明说「使用的是第 13 章项目中的并行框架」(text/22-ch16.txt:566-567)两个应用共用一套基建

三、建议怎么切章(按新词密度切,不按字数切)

先说结论:建议切成 18 个拆解章 + 总纲。原书 18 章不是均匀的 —— 第 2 章一章塞下了整个经典强化学习(114k 字符、五十多个承重概念),必须拆成四章;而第 9、13、14 三章各只有 10–16k、概念密度低,可以合。

按原书章序对照:

我们的章讲什么(进来时以为 → 出去时知道)拆原书新词密度依据
index总纲:一条主线、章节地图、覆盖与不覆盖、我们的判断全书
01 决策问题长什么样以为「让机器学会做事」就是多喂点数据 → 知道没有标准答案时问题的形状完全变了:智能体/环境/动作/奖励/轨迹/片段/探索与利用前言、第2章 2.18 个新词,一节一个
02 先备的深度学习以为要先学一遍深度学习 → 知道后面只用到六件事:全连接、激活、损失、反向传播、Adam、以及为什么 CNN/RNN 各自适合什么输入第1章第1章 56k 字符但概念集中,可压成一章;注意:书架上另三本已讲过深度学习,但红线三要求本文自足,不许指过去了事
03 只有一步的决策以为强化学习一上来就是走迷宫 → 知道先要能回答「只拉一次杆」的问题:后悔值、ε-贪心、UCB、对抗赌博机第2章 2.212 个新词,必须独立成章;UCB 是第 15 章 AlphaZero 的伏笔
04 把决策写成数学以为价值函数是个抽象定义 → 知道它是「从这里出发以后能拿到多少」,以及贝尔曼方程为什么能把它变成可解的递归第2章 2.315+ 个新词(马尔可夫性、MRP、MDP、折扣、策略、Vπ/Qπ、最优价值、POMDP…),密度全书最高
05 三种算价值的办法以为有了方程就能算 → 知道模型已知用动态规划、未知就采样,而蒙特卡罗与时间差分是偏差-方差这根轴的两端第2章 2.4–2.6动态规划/收缩映射/首次访问 MC/TD(0)/资格迹/Sarsa/Q-Learning ≈ 14 个
06 表格装不下之后以为方法齐了 → 知道围棋 10^170 个状态让表格法当场失效,而换成神经网络会撞上死亡三件套;顺带拿到四条分类轴第2章 2.7.1–2.7.2 + 第3章第3章本身很短(11k),必须和函数逼近合并才立得住
07 价值线:DQN 与它的六个补丁以为 DQN 就是「用网络代替 Q 表」 → 知道那样根本不收敛,两个补丁各治什么病,以及 Rainbow 六件各补哪个洞第4章消融表 4.1 是天然的主走查
08 策略线:从 REINFORCE 到 PPO以为策略梯度就是「奖励高就多做」 → 知道为什么要 Reward-to-Go、为什么基准不引入偏差、为什么参数空间的一小步可能是策略空间的一大步第2章 2.7.3 + 第5章第5章 80k 字符,是第二密的一章;σ(θ) 那个例子(θ:6→3 与 1.5→−1.5 参数都变 3,策略从 (1,0)→(0.95,0.05) 与 (0.82,0.18)→(0.18,0.82))是现成的主走查
09 两条线合流以为 DDPG 是新算法 → 知道它是 DQN 在连续动作上的直接改写,以及 TD3 与 SAC 各修了它的哪一处第2章 2.7.4 + 第6章表 6.1 三行对照是骨架
10 算法齐了却不好用以为剩下的只是调参 → 知道有八个结构性障碍,而后面五章正是分别去治它们第7章全书枢纽章,不许压缩
11 抄专家的作业:模仿学习以为模仿就是监督学习 → 知道协变量漂移与复合误差为什么让它崩,以及 IRL/GAIL/IfO 各绕开了哪一步第8章51k 字符、四大类方法,是研究部分最厚的一章;这也是本书相对书架上其他 RL 书最独有的一章
12 自己造环境以为「基于模型」就是知道规则 → 知道模型是学出来的、规划是在模型里演算,以及 Dyna 怎么让真实经验与模拟经验一起喂策略第9章只有 9.5k,但 Dyna-Q 七行伪代码是全书最好的主走查素材之一
13 把任务拆开:分层以为分层就是"先做A再做B" → 知道选项框架切时间、封建制切状态,以及为什么作者最后说证据还不足第10章选项三元组、SMDP、STRAW、选项-批判者、FuN、HIRO ≈ 12 个新词
14 环境里有别人以为多智能体就是多开几个 agent → 知道「最优」这个词在有对手时要换成"均衡",以及纳什/关联性/斯塔克尔伯格三种均衡分别管什么第11章 + 第17章第11章的胆小鬼博弈带完整数字(p=0.75、期望 4.5、总效用 9 vs 9.3333),第17章 Arena 的五种 BMaRS 正好是它的工程化落地
15 用机器换时间以为并行就是多开进程 → 知道同步与异步各浪费什么、星形拓扑的主节点是单点故障、六个分布式架构分别在通信什么第12章12.5 节的五个零件(环境/行动者/回放缓冲/学习者/参数服务器)是天然的顶层全景
16 三个上手项目以为把算法接上环境就完了 → 知道真项目里 80% 的力气花在环境定义与奖励设计上第13、14、16章三章各 10–30k,主题一致(SAC 连续 / PPO 离散 / SAC 机器人),合成一章才能对比出"同一套 RL 怎么套到形状完全不同的任务上"
17 AlphaZero:一次完整的树搜索以为 AlphaZero 是"神经网络下棋" → 能自己在纸上走完三轮树搜索,并说清视角取反为什么必须做第15章原书 :386-462 那段三轮走查带具体数字,是全书最好的主走查材料,直接改写即可
18 从「算法对」到「跑得起来」以为剩下的是调参 → 拿到二十条能立刻用的判断,并知道每一条在防哪个具体的坑第18章 + 附录A/B/C落点章

为什么不按原书 1:1 切: 原书第 2 章一章 114k 字符,把赌博机、MDP、动态规划、蒙特卡罗、时间差分、函数逼近、策略梯度、Actor-Critic 全塞进去了 —— 按小节配额(≤5 个生面孔)算,它至少要 20 个小节;塞进一个文件读者会找不着北。反过来第 3 章(11k)、第 9 章(9.5k)、第 13 章(10.7k)、第 14 章(16k)概念密度低,单独成章会显得空。

备选切法(如果嫌 18 章太多): 把 03 并进 04(赌博机当 MDP 的退化情形讲),把 12 并进 10(基于模型当"治采样效率"的一支),得到 16 章。不推荐 —— 赌博机是第 15 章 UCT 的地基,合并会让那处伏笔断掉。

四、书没讲透、需要补外部来源的缺口清单

优先级 A:不补会误导读者(必须核实后再写)

#缺口为什么必须补先去哪找
1Gym → Gymnasium全书代码用 env.step() 返回四元组 (obs, reward, done, info)。2022 年 Gym 移交 Farama 基金会、改名 Gymnasium,step 返回五元组 (obs, reward, terminated, truncated, info) —— 恰好把第 18 章那条「Done 只在终止状态为真」从一条口头忠告变成了 API 强制。这是「书里的判断后来被工具链吸收」的最佳例证,不写就浪费了书架上有:shelf=ai-frontier-reference/openenv#01-contracts.md 里写明了 Gymnasium 的五元组。事实=「Gymnasium 的 (obs, reward, terminated, truncated, info) 五元组」
2TensorLayer 现状全书代码基座,且作者是创始人(利益相关)。2021 后主仓基本停更,后继是 TensorLayerX。读者照书敲代码大概率跑不起来,不说就是坑他先 `ls ../ai-*-reference/aiRef/repos/
3MuJoCo 的许可变了书里当商业软件提。2021-10 被 DeepMind 收购并开源(Apache 2.0),mujoco-py 被官方绑定取代。直接影响读者的上手成本上网核 DeepMind 公告 + MuJoCo 仓库
4MuZero 补上本书的结构洞第 3 章只点名一句"AlphaGo/AlphaZero/MuZero 属基于模型"。可第 15 章的 AlphaZero 必须知道棋类规则(要能在树里模拟落子),第 9 章又说基于模型可以学模型 —— 这两者之间正好缺一块,MuZero 填的就是它(不知道规则,把动力学也学出来)。不补,读者读完会以为 AlphaZero 那条路到头了核 Nature 2020 原文的标题、年份、作者顺序
5表 7.1 的星际动作空间转码文本里显示成 1026(上标丢失),实为 10^26绝不能照抄 1026原始出处书里给了脚注:Oriol Vinyals, Deep Reinforcement Learning Workshop, NeurIPS 2019

优先级 B:书出版后被修正或被补充的说法

#缺口说明
6Go-Explore书里说它"不是一个深度强化学习的解决方案"(text/12-ch07.txt:259-262)。2021 年 Go-Explore 正式版发在 Nature,并且用上了策略网络 —— 书里的断言需要加时间戳
7PPO 的性能来自哪里第 18 章说"不要过拟合论文细节"(text/24-ch18.txt:64-79),第 7.2 说"5 个种子可能不够"。后来 "Implementation Matters in Deep Policy Gradients"(Engstrom et al. 2020)与 "The 37 Implementation Details of PPO"(Huang et al. 2022)把这两条从经验升级成了实证结论 —— 这是「作者的推测后来有了证据」的标准案例
8离线强化学习全书只在第 7.2 括号里提了一句"这里不考虑批限制的强化学习"。CQL(2020)、IQL(2021) 之后 offline RL 成了独立分支,这是 notCovered 里最大的一块
9Decision Transformer(2021)把 RL 当序列建模,绕开了本书整个「价值函数 + 贝尔曼方程」的地基。与本书同年出现,书里没有。写「边界与局限」时值得点一句
10强化学习后来最大的落地在大语言模型上RLHF(2022 InstructGPT)、DPO(2023)、GRPO / DeepSeek-R1(2025),完全在本书视野外。第 5 章讲 PPO 时读者最想问的就是"我听说 ChatGPT 也用 PPO"
11Henderson et al. 2018第 7.2 引了五条结论但没给完整出处。要核到 AAAI 2018 "Deep Reinforcement Learning That Matters" 原文
12Sutton《苦涩的教训》第 7.9 引了两大段,脚注只给了标题与日期(2019-03-13),没给 URL。书架上 docs/ren-gong-zhi-neng-jian-shi/docs/yi-ben-shu-du-dong-da-mo-xing/01-ai-four-stages.md 都讲过它,先看那两处

优先级 C:书里给了数但没给参照物,引用时要么补参照物要么退回表格 PILCO 的"20–30 次尝试 vs 多层感知机几百次"(text/12-ch07.txt:57-59)、QT-Opt 的"7 台真机、800 小时、持续 4 个月"(text/12-ch07.txt:367-369)、Learning to Run 的"4 GPU + 56 CPU 训练 3 天"(text/19-ch13...txt:296-299)、OpenAI Five 的"每两秒约 200 万组数据"(text/17-ch12.txt:10-12)。这几个数都是现成的、带参照物的好素材,别浪费。

五、书架上已有的三本 RL 拆解 —— 写之前必须知道的重叠情况

这是本次通读最要紧的一条发现:书架上已经有三本 RL 书的完整拆解,重叠很重。写大纲前务必先翻它们,否则会写出第四份「MDP 是什么」。

书架上的拆解章数覆盖了什么和本书的关系
docs/reinforcement-learning-sutton-barto/16 章赌博机、MDP、动态规划、MC、TD、n 步、规划、函数逼近、死亡三件套、资格迹、策略梯度本书第 2 章的全部理论,那边讲得更深更正统。 我们这本的 03–06 章要么指过去、要么写出不同的角度(本书的角度是「工程上怎么用」而非「理论上为什么对」)
docs/an-introduction-to-deep-reinforcement-learning/14 章MDP、贝尔曼、TD/Q、DQN、Sarsa/AC、策略梯度全家、多智能体、RLHF、应用2025 年的书,算法覆盖面更新;但机制之间几乎不解释(见那本的书卡 summary)。我们这本胜在因果链和工程细节
docs/the-rlhf-book-reinforcement-learning-from/16 章RLHF 全链、DPO 家族、GRPO、RLVR本书完全没有的那一块,直接指过去即可

结论:这本书在书架上的独有价值,集中在下面六处 —— 大纲的力气应该往这里倾斜:

  1. 第 8 章模仿学习(BC → DAgger → IRL → MaxEnt → GAIL → GAN-GCL → AIRL → IfO → 概率方法 → 残差初始化 → DQfD),另两本都没有这个深度;
  2. 第 10 章分层强化学习(选项框架 + 封建制,含 STRAW/选项-批判者/FuN/HIRO),另两本没有;
  3. 第 12 章并行计算(同步异步、树形与蝴蝶形通信、A3C→GA3C→DPPO→IMPALA→SEED→Ape-X→R2D2→Gorila 的架构谱系),另两本没有;
  4. 第 11 章的三种均衡(纳什 / 关联性 / 斯塔克尔伯格)带完整数字推导,Mishra 那本只到纳什与帕累托;
  5. 第 15 章 AlphaZero 的逐轮树搜索走查带具体数值与视角取反,教学价值极高;
  6. 第 18 章的二十条工程判断,以及第 13/16 章里真实项目的一手细节(Adam 优化器状态必须手动共享内存、forkserver 导致 Windows 跑不了、奖励函数三级演进)—— 这类东西论文和教科书都不写。

六、转码陷阱(照抄会出错的地方)

  1. 上标全丢。表 7.1 的星际动作空间在文本里是 1026,实为 10^26;围棋状态数在第 2 章是 10170,实为 10^170;γ² 常常变成 γ 2凡是看到连在一起的怪数字,先怀疑是上标。
  2. 公式排版被打散。数学式常被拆成多行、下标跑到行首(例如 text/13-ch08.txt:71-77 的占用率定义)。引公式时要把上下几行一起读。
  3. 图注与正文交错。图片本身没提取出来,只剩图注,有时插在句子中间(例如 text/22-ch16.txt:601-648 整段是图 16.8 的坐标轴文字)。这些行不能当正文引。
  4. 导航章不要引:text/03-fm.txt(目录,23k)、text/27-apx-c.txt(中英对照表)提取质量差且无信息量。附录 C 可以当术语译法的查阅表,但不要当出处引。
  5. 参考文献占了每章尾部很大篇幅(第 7 章 702 行里 :522-702 全是参考文献)。定位段号时注意别落进参考文献区。

七、book-dodged 现在报的 80 个词 —— 这是写拆解时的「不许躲」清单

node scripts/book-dodged.mjs deep-rl-fundamentals-research-applications 得到(当前 docs/ 下只有生成的 index.md,所以几乎全部命中;写完拆解后应大幅减少):

参数(557) · 模型(557) · 训练(494) · 分布(281) · 优化(252) · 概率(202) · 神经网络(194) · 采样(183) · 批(165) · 迭代(137) · 确定性(119) · 损失(118) · 期望(110) · 误差(103) · 变量(100) · 马尔可夫(99) · 特征(96) · PPO(95) · agent(92) · 缓存(87) · 方差(82) · 范数(81) · 熵(80) · 卷积(76) · 收敛(71) · 超参数(70) · 权重(65) · 矩阵(64) · 线性(59) · 损失函数(59) · 序列(58) · 单元(55) · 噪声(54) · 向量(51) · 异步(48) · 梯度下降(46) · 延迟(44) · 批量(42) · GAN(38) · 正则化(36) · GPU(35) · 激活函数(34) · 资源(33) · 过拟合(30) · 监督学习(30) · 预训练(29) · 状态空间(29) · 机器学习(28) · 循环神经网络(27) · 概率分布(27) · 轮(27) · 服务器(26) · 维度(25) · 优化器(25) · 泛化(24) · 学习率(24) · 全连接(24) · 对数(23) · 开源(23) · 映射(22) · 隐藏层(22) · 反向传播(21) · 残差(21) · 推理(21) · 稀疏(21) · 归一化(20) · 嵌入(20) · 池化(19) · 高斯分布(19) · 指数(18) · 接口(17) · 前向传播(17) · RNN(17) · 标准差(17) · 复杂度(16) · 交叉熵(16) · 高维(15) · CNN(15)

这些词原书都反复讲,按红线三的新政策「该引入就引入、配合讲解讲清楚」,不许为了让检查器变绿而换成大白话躲开。 其中「熵」「方差」「范数」「确定性」「马尔可夫」「稀疏」「归一化」是承重词,首现处必须当场解释。