跳到主要内容

两条线合流 — DDPG、TD3 与 SAC

这一章讲三件事: 两条线的长短为什么正好互补; 把它们焊在一起的那一个动作是什么; 以及焊出来的东西为什么脆、后面两代各拿什么把它按住。

它在全书链条里的位置:第一部分的收口。 第 03 到 09 章一路铺的两条线,在这一章合成一条。 合完之后算法就算齐了 —— 而下一章会告诉你,齐了也还是不好用。

顶层全景:同一条经验,三个算法算出三个目标值

这一章从头到尾用同一个环境和同一条经验。

环境是倒立摆:一根杆子倒挂着,你给它施力,让它立起来别倒。 书里用的正是它,并写明它有 3 维观测和 1 维动作1 —— 观测是三个数(角度、角速度那一类),动作是一个数(往哪边使多大劲)。 ★ 动作是一个连续的数,不是「上/下/左/右」—— 这就是这一章存在的理由。★

手上有一条经验:在某个局面做了某个动作,拿到奖励 −1.2,到了下一个局面。
现在要算「这条经验的目标值」——也就是「这一步到底值多少分」。

给定(这些数是为演示编的,不是书里的真实数值):
下一个局面上,目标策略给出的动作 = 0.35
给它加一点截断噪声之后 = 0.42
两个批判者对(下一个局面, 0.42)的打分 = 2.1 和 1.6
这一步的奖励 = −1.2 折扣 = 0.99
温度系数 = 0.2 那个动作的对数机会 = −0.8

┌─ DDPG ─ 目标 = −1.2 + 0.99 × 2.1 = **0.88**
│ ↑ 只有一个批判者,用它给的 2.1

├─ TD3 ─ 目标 = −1.2 + 0.99 × min(2.1, 1.6) = **0.38**
│ ↑ 两个批判者取小,用 1.6 ★ 比上面低了 0.50 ★

└─ SAC ─ 目标 = −1.2 + 0.99 × (1.6 + 0.2 × 0.8) = **0.54**
↑ 在 TD3 的基础上,给「这一步没那么确定」发一笔奖金 0.16
★ 比 TD3 高回 0.16 ★

图说:这就是本章的主走查。三个算法在同一次更新里,只有这一行不一样。
第 3 节推出第一行,第 4 节推出第二行(以及那个 0.42 是怎么来的),
第 5 节推出第三行。三个式子都是书里的;上面那六个数是为演示编的。

这一章要回答的是:那两处改动分别在救什么。

1. 两条线的长短,正好是对方的强项

这一节回答:为什么该合、以及合的时候图的是什么。

先看两笔账

书里在这一章开头把两条线的毛病各说了一遍。

价值那条线(第 07 章那个)的毛病: 书里说它虽然输入可以是高维的状态, 但是它只能处理离散的、低维的动作空间;对于连续的、高维的动作, 它无法直接计算出每个动作对应的 Q 值2

策略那条线(第 08 章那个)的毛病: 书里说原始的演员-批判者 仍然是一种在线策略的算法,而在线策略方法的采样效率远低于离线策略方法3

「在线策略」与「离线策略」是第 04 章第 8 节那对词 —— 学的是不是自己现在这个策略走出来的路。

书里的那张对照表

书里用一张表把这件事摆得很清楚4:

在线还是离线样本效率动作空间
DQN离线策略只能离散
演员-批判者在线策略能连续
★ 两者结合 ★离线策略离散和连续都行

★ 第三行就是这一章的全部目标:每一列都取两者里好的那个。★

合了之后具体好在哪

书里把好处写死了:因为有 DQN 的存在,演员-批判者方法转化为离线策略方法, 可以使用回放缓存的样本对网络进行训练,从而提高采样效率5

而且还捎带一个好处:从回放缓存里随机采样也可以「打乱数据的序列关系」, 最小化样本之间的相关性,从而使价值函数的学习更加稳定5

★ 这两句话是第 07 章第 2 节那个回放缓存的原样复用 —— 它治的两件事(重复利用经验、打散相关性),在这里一件不少地被继承下来。★

2. 焊接点只有一个动作:让网络直接吐出那个最好的动作

这一节讲这一章唯一真正新的那个东西。

先看现象:那个「取最大」卡在哪

价值那条线的每一次更新里,都有这么一步:算下一个局面的价值时, 要把每个动作都问一遍批判者,取最高的那个分。

动作是「上/下/左/右」时,问四遍就完了。 动作是「往哪边使多大劲」时 —— 从 −2.0 到 +2.0 之间有无穷多个数,问不完。

做法:养一个网络专门回答「最好的那个动作是哪个」

既然「挨个问一遍再取最大」做不到,那就训一个网络,让它直接把答案说出来。

原来: 下一个局面 → 把每个动作都问一遍批判者 → 取最高分
★ 连续动作上这一步做不到 ★

改成: 下一个局面 → 演员网络直接给出一个动作 → 只问这一个动作的分
★ 「取最大」被这个网络替掉了 ★

这种「输入局面、直接输出一个动作」的策略,书里叫确定性策略。 书里写得很明确:在这里演员是一个确定性策略函数,每个动作直接算出来, 不需要从随机策略中采样6

★ 「确定性」这个词在这本书里出现过两次,意思不一样,别混:★

说法意思
转移是确定的(第 03 章第 5 节)做了这个动作,下一个局面一定是那一个,环境不掷骰子
策略是确定的(这里)同一个局面,这个策略每次都给出同一个动作,它自己不掷骰子

前者说的是环境,后者说的是策略。 这一章讲的是后者。

它和第 08 章那条线是什么关系

第 08 章那条线输出的是「一组机会」,这里输出的是「一个动作」——看着像两回事。

书里专门证明了它们不是两回事: 有一条定理叫**「确定性策略梯度作为随机性策略梯度的极限」7, 说的是把随机策略的「上下浮动多少」一路收到 0,它就变成确定性策略, 而它的梯度也正好收敛到确定性策略梯度**7

书里的结论句是:这表示确定性那个梯度是标准的随机性梯度的极限情况7书里也老实交代:这个证明超出了本书的范畴,不做讨论7

3. DDPG:把 DQN 那两件套套在确定性策略上

这一节走主走查的第一行。

它是什么

书里给这个算法的定位很干脆:它可以看作深度 Q 网络算法在连续动作空间中的扩展, 解决的正是深度 Q 网络无法直接应用于连续动作空间的问题8

拆开看,它只有三个零件,而其中两个是第 07 章的原件:

零件从哪来干什么
回放缓存第 07 章第 2 节存经验、随机抽,打散相关性
目标网络第 07 章第 3 节算目标值时用一份慢半拍的参数,把靶子钉住
★ 确定性演员 ★本章第 2 节替掉那个做不到的「取最大」

批判者怎么学:和 DQN 完全一样 —— 用贝尔曼方程算出目标值,再最小化「目标值减当前估计」的平方9

演员怎么学:让批判者给的分越高越好。 具体做法是把两个网络串起来求一次导 —— 先问「动作改一点点,分会涨多少」,再问「参数改一点点,动作会变多少」,两者相乘10

主走查的第一行:目标 = −1.2 + 0.99 × 2.1 = 0.88。 这里的 2.1 是目标批判者对「目标演员给出的那个动作」打的分。

目标网络的更新方式改了一处

第 07 章那个目标网络是「隔一段时间整个抄过来」。这里换了一种。

书里说 DDPG 采用了类似深度 Q 网络算法的目标网络,但这里通过指数平滑方法 而不是直接替换参数来更新11

DQN: 每隔 C 步,把学习中的参数整个复制到目标网络 ← 阶跃式
DDPG: 每一步都更新一点点:目标网络 ← 0.995 × 目标网络 + 0.005 × 学习中的
★ 挪一丁点 ★

图说:书里的说法是「由于那个系数远小于 1,目标网络的更新缓慢且平稳,
这种方式提高了学习的稳定性」。[^11]
(0.995 与 0.005 是为演示举的常见值;「远小于 1」这个条件是书里的。)

确定性策略有个新麻烦:它自己不会探索

第 08 章那条线天生带随机,所以天生会探索。确定性策略不会 —— 同一个局面,它永远给同一个动作。

书里把这个问题点名了:一个关键问题是如何平衡这种确定性策略的探索和利用; 做法是在训练过程中给每个输出的动作加随机噪声12

加什么噪声?书里给了原论文的选择和一句很实在的实践反馈:

  • 原论文用的是一种「这一刻的随机量和上一刻有关」的噪声(O-U 过程)。 书里给的理由是:马尔可夫决策过程本身就是「只取决于上一个时刻」的, 这种带时间相关性的噪声与它的性质相符13;
  • ★ 但书里紧接着说:实践表明,时间不相关的零均值高斯噪声也能取得很好的效果。★13

★ 记住这一句 —— 第 20 章会把它升级成一条通则:不要过拟合论文里的实现细节。★

4. TD3:三招按住过估计

这一节走主走查的第二行,是本章最实用的一节。

先看现象:DDPG 很脆

书里在第 2 章里对 DDPG 有一句相当不客气的评价:这个算法「使用起来有一定挑战性, 由于它在实践中往往很脆弱而对超参数敏感」14

病根是老熟人。 书里说:我们知道在深度 Q 网络里取最大这个操作会导致 Q 值过估计的问题, 这个问题同样存在于 DDPG 中15

「过估计」就是第 07 章第 5 节那个词 —— 对一堆带噪声的估计取最大,结果会系统性偏高。

书里把机理又讲了一遍,而且讲得比第 4 章那里更清楚:

表格法里没有这个问题 —— 书里的原话是「因为 Q 值是精确存储的」。[^15]

换成神经网络之后,每个估计都带一点误差,这些误差平均下来是 0(有的偏高、有的偏低)。
但是:★ 取最大这个操作「总是为每个状态选择最大的 Q 值」★ [^16]
→ 它专挑那些「误差恰好偏高」的 → 于是偏差的平均值大于 0

★ 误差本身是公平的,是「取最大」这个动作让它变得不公平。★

三招

书里列的三个关键技术16其中第二招名字里的延迟就是字面意思: 该更新的时候先按住不更新,等价值那边多学几轮再说。

做法治的是什么
① 截断的 Double Q-Learning学两个批判者,算目标时取小的那个16过估计
② 延迟策略更新策略网络的更新频率低于价值网络16拿没估准的价值去改策略
③ 目标策略平滑在目标策略输出的动作上加噪声16对价值曲面上的窄尖峰过拟合

第一招:两个批判者取小

主走查的第二行:两个批判者打 2.1 和 1.6,取小的 1.6。 目标 = −1.2 + 0.99 × 1.6 = 0.38 ——★ 比 DDPG 的 0.88 低了 0.50。★

取小当然会偏低,那不是也错了吗?书里正面回答了这一条:

虽然此更新规则可能导致低估,但这对更新影响不大。 因为与过估计的动作不同,低估的动作的 Q 值不会被显式更新17

★ 这句话值得咂摸:偏高的估计会被「取最大」反复选中、反复强化,像滚雪球; 偏低的估计根本不会被选中,所以它就在那儿躺着,不会传播。★ 两种错误的代价完全不对称 —— 所以宁可偏低。

「和第 07 章第 5 节那一招什么关系?」 那里的做法是把「选哪个动作」和 「这个动作值多少」交给两个网络;这里的做法是两个批判者都打分、取小的★ 同一个病,两种药 —— 离散动作那边一种,连续动作这边一种。★

第二招:让演员少更新几次

书里的推理链是这样的18:

① 目标网络存在的理由是:函数逼近需要多次梯度更新才能收敛,
目标网络给算法提供了一个稳定的更新目标
② 如果在价值还没估准的时候就去改策略,策略更新会发散
③ 所以:★ 策略网络应该以比价值网络更低的频率更新 ★
④ 具体做法:策略网络只在价值网络更新 d 次之后才更新一次

书里给的收益:这种方式「可以使 Q 值函数的估计具有更小的方差,
从而获得质量更高的策略更新」。[^19]

主走查上这一招占哪一步: 设 d = 2(为演示取的)。 这是批判者的第 3 次更新,而演员上一次更新是在第 2 次之后 —— ★ 所以这一步只更新两个批判者,演员一动不动。★

第三招:给目标动作抖一下

先看现象:确定性策略会盯着价值曲面上的一根尖刺不放。

书里说:确定性策略的一个问题是,该类方法对于值空间中的窄峰估计可能存在过拟合19

「窄峰」是什么: 批判者是个网络,它估出来的「分数随动作怎么变」这条曲线, 可能在某个动作上凭空冒出一根很细的尖刺(那纯粹是估计误差)。 确定性演员会一头扎向那根尖刺 —— 因为那里分最高。

书里给的解法和它的理由:原文作者认为相似的动作应该具有相似的值估计, 因此将目标动作周围的一小块区域的值进行模糊拟合是有道理的19; 具体做法是在每个动作中加入截断的正态分布噪声作为正则化20

主走查上这一招占哪一步:

目标演员给出的动作 = 0.35
加一个截断在 ±0.1 内的噪声 = +0.07
实际拿去问批判者的动作 = ★ 0.42 ★

★ 这一步的意思是:别只问「0.35 值多少分」,问「0.35 附近值多少分」。★
一根宽度只有 0.01 的尖刺,这么一抖就被抹平了;
一个真实的好动作,它周围一片都是好的,抖一下不影响。
(0.35、0.07、截断幅度 0.1 都是为演示编的;做法与理由是书里的。)

这三招各治一处:①治估高、②治时机、③治尖刺。 它们互不重叠,拿掉任何一招剩下两招照样成立 —— 书里没有做消融实验,这是我们从做法本身读出来的。

5. SAC:把「保持不确定」写进目标本身

这一节走主走查的第三行。

先看现象:加噪声是外挂,不是内生

第 3 节那个「往动作上加噪声」很像打补丁 —— 探索的力度是你手动设的, 和「怎样才算好策略」这件事完全无关。

噪声调大了乱走,调小了早早认死一个动作。而它该多大,没人告诉你。

做法:把探索本身写进要最大化的那个目标

书里说 SAC 继续采用了上一章提到的最大化熵的想法 —— 学习的目标是最大化熵正则化的累积奖励而不只是累计奖励,从而鼓励更多的探索21

「熵」就是第 05 章第 5 节那个词 —— 一组机会「有多说不准」的一个数:全押一个动作时它最小,几个动作机会均等时它最大。

原来的目标: 最大化 ( 累计奖励 )

SAC 的目标: 最大化 ( 累计奖励 + 温度系数 × 每一步的「有多说不准」)
★ 保持不确定,本身就有分拿 ★

图说:书里管那个系数叫「正则化系数」[^22],通常也叫温度。
★ 它就是「多想探索一点」的价钱:调大了愿意为不确定性多付,调小了就退回老样子。★

主走查的第三行: 那个动作的对数机会是 −0.8,温度是 0.2, 所以这一步的「不确定奖金」= 0.2 × 0.8 = 0.16。

目标 = −1.2 + 0.99 × (1.6 + 0.16) = 0.54 ——★ 比 TD3 的 0.38 高回 0.16。★

★ 注意这个方向:TD3 那一招把目标压低(防估高),SAC 这一项又把它抬高一点 —— 但抬高的理由完全不同:不是「这一步分高」,而是「这一步没那么武断,值得鼓励」。★

SAC 还留了两件从别处搬来的东西

  • 两个批判者取小,SAC 也用了。 书里写明:实际中 SAC 也使用了两个 Q 值函数 (同时还有两个目标网络)来处理 Q 值估计的偏差问题22;
  • 第 08 章第 3 节那个「把抽签挪到网络外面」的技巧,在这里派上了用场。 书里说在连续动作的设定下可以用策略网络的再参数化来优化, 「这样往往能够减少梯度估计的方差」22★ 这是那个技巧欠下的第一笔兑现。★

温度自己也能学

「那个温度取多少?」——书里给了一个自动的办法。

书里说 SAC 还提供了自动调节正则化参数的方法23,做法是最小化一个专门的损失。 而它的原理书里也点了:在「给定每一步平均熵至少为某个值」这个约束下, 原来那个策略优化问题的对偶形式23

翻译成人话:你不再直接设「探索的价钱」,而是设「我希望策略至少保持多不确定」, 温度自己会调到能满足这个要求的值。 书里管这个叫自动熵调节23

6. SAC 不是拼凑:书里给了它的理论保证

这一节回答:加一项进去,原来的收敛结论还成立吗?

为什么值得问这一句

第 04 章第 2 节那个「评估当前策略、再照评估结果改进策略」的来回, 之所以敢反复做,是因为有一条保证:每来回一次,策略只会更好、不会更差。

现在往目标里塞了一项新东西 —— 那条保证还在吗?

书里的回答:在

书里为此专门讲了一个叫柔性策略迭代的算法,并说它是 一个有理论保证的学习最优最大化熵策略的算法24

它和第 04 章那个来回是一模一样的形状,只是两步都加了熵那一项:

柔性策略评估 ←→ 柔性策略提高 [^25]
(估当前策略值多少) (照估值改进策略)

书里给的三条结论:
① 评估那一步会收敛(和普通的策略评估同理);
② ★ 提高那一步「也有单调提高的性质」★ —— 每来回一次只会更好[^26];
③ 而且这个性质在「用 KL 散度把解投影回你的策略集合」之后仍然成立[^26]。

书里还顺手点了一句:★ 这一点和上一章提到的 TRPO 类似。★[^26]
(第 09 章那个「把新策略拉回旧策略附近」的动作,在这里换了个位置出现。)

最后书里给了一条定理:柔性策略迭代和普通策略迭代类似,收敛到最优解25

★ 所以 SAC 不是「往损失里多加一项试试看」,它下面有一整套推导。★

但书里也很坦白:「我们省略了这一章提到的各个结论的证明过程」, 让感兴趣的读者去看 2018 年那篇原论文25

那个最优策略长什么样

推导里有一个中间结果值得记:在这个新目标下,最优策略的形状是「分数越高、机会越大, 按指数放大,再归一化成一组机会」26

★ 这个形状很眼熟:它就是第 05 章第 4 节那个 softmax,而温度就是那里的除数。★

  • 温度趋近 0 → 指数把最高分那一个放大到压倒一切 → 退化成「只挑最好的」,也就是确定性策略;
  • 温度很大 → 各个动作的机会被拉平 → 接近乱走。

★ 所以温度不是一个外挂的旋钮,它是「确定性策略 ←→ 随机策略」这根轴上的位置。★

7. 三个算法只差目标值那一行

这一节收口,并回答「实际项目里该选谁」。

把三行放在一起

这就是顶层全景那张图。同一条经验、同一次更新,三个算法的差别全在这一行:

目标值怎么算主走查上算出来
DDPG奖励 + 折扣 × 目标批判者对目标动作的打分0.88
TD3奖励 + 折扣 × 两个批判者取小(目标动作先加噪声)0.38
SAC奖励 + 折扣 × (两个批判者取小 + 温度 × 不确定奖金)0.54

其余部分 —— 回放缓存、目标网络的慢更新、批判者最小化平方误差、演员往批判者给高分的方向走 —— 三家一模一样。

书里两个真实项目都选了 SAC,理由写得很具体

第 17 章那个赛跑项目和第 18 章那个机器人抓取项目,用的都是 SAC。 书里在抓取那一章把选它的理由列了出来27:

  • 它用对角高斯策略,能应对高维连续动作空间(「对角高斯」是第 08 章第 2 节那个词);
  • ★ 它在训练中比 DDPG「更加稳定并且对参数鲁棒」,尤其是在采用了自动熵调节之后;★
  • 熵正则化「对像机器人抓取这类难以训练的任务来说可以促进探索」;
  • ★ 因为它是离线策略的,所以「在实践中可以较方便地改成并行版本」★ —— 这一条直接指向第 17 章。

判断(我们的,不是书里的): 这三个算法读起来像三代产品,但它们在工程上的地位不一样。 SAC 是这一路今天的默认选择;DDPG 基本只作为「为什么需要 TD3 和 SAC」的前置来读。 理由就在书里那句自评上 —— 一个「往往很脆弱而对超参数敏感」的算法14, 在没时间做彻底超参搜索的真实项目里就是不能用的。 如果错,会错在: TD3 并没有被 SAC 取代,它在一些确定性策略更合适的场合仍然是首选, 而且它比 SAC 少一个要调的温度。判据是:看你的任务需不需要策略保持随机 —— 有对手、或者需要持续探索的,选 SAC;只求稳定复现一个动作的,TD3 更省心。

作者的判断与证据

书里给了推导或证明的:

  • 确定性策略梯度是随机性策略梯度的极限(定理 2.4)7 —— 但书里明说「证明超出了本书的范畴,不做讨论」;
  • 取最大为什么导致过估计,书里给了误差项的分解式,并指出取最大让偏差的期望大于 01528;
  • 柔性策略迭代的单调提高性质与收敛性(定理 6.1)2925 —— 同样明说「省略了各个结论的证明过程」;
  • 新目标下的最优策略是「分数取指数再归一化」的形状26

作者的判断与经验性说法:

  • ★「实践表明,时间不相关的零均值高斯噪声也能取得很好的效果」★13 —— 这是一句实践反馈,它推翻的是原论文的推荐;
  • 「低估的动作的 Q 值不会被显式更新,所以低估影响不大」17 —— 书里给了机理上的说法,但没有实验;
  • DDPG「往往很脆弱而对超参数敏感」14 —— 书里引了 2016 年那篇对照工作;
  • 选 SAC 的四条理由27 —— 是那个项目的工程判断,不是普遍结论。

书里没有给的:

  • DDPG → TD3 → SAC 的性能对照数据一个都没有。 三招各值多少、SAC 比 TD3 好多少, 这一章全无数字 —— 和第 07 章那个消融实验形成鲜明对照;
  • 那三招的消融:书里只说了三招各治什么,没说拿掉哪一招会怎样。

边界与局限

  • 这一整章只处理连续动作。 离散动作上这条合流路线用不上 —— 那边第 07 章那条线本来就是最优解;
  • 确定性策略把随机性整个丢掉了。 第 08 章第 2 节说过「面对会针对你的对手, 确定性策略必输」—— DDPG 和 TD3 在有对手的场合是不能用的(SAC 因为保留了随机性没这个问题);
  • 合流之后仍然有一个没解决的东西:回放缓存里的经验是旧策略采的,而批判者要估的是新策略。 书里在这一章没有讨论这个偏差怎么处理;
  • 温度该取多少,自动熵调节把问题换成了「目标熵取多少」,并没有消掉这个超参数;
  • 书里对 O-U 噪声的数学定义给得比它的实用价值多得多(维纳过程的三条性质), 而结论却是「普通高斯噪声也一样好」 —— 这一节的详略是失衡的;
  • 书里说的「离散和连续都行」在这一章的算法里没有兑现: DDPG、TD3、SAC 讲的全是连续动作。离散动作怎么用,要到第 20 章那个救场技巧。

可带走的

全章那条走查,一行写完: 倒立摆上的同一条经验(奖励 −1.2、折扣 0.99) → DDPG 用单个批判者的 2.1,目标 = 0.88TD3 先给目标动作 0.35 抖成 0.42,再让两个批判者打 2.1 和 1.6、取小的 1.6,目标 = 0.38 (比 DDPG 低 0.50,砍掉的就是过估计),而且这一步只更新批判者、演员不动 → SAC 在 1.6 上加一笔「不确定奖金」0.2 × 0.8 = 0.16,目标 = 0.54(三个式子和倒立摆的 3 维观测 / 1 维动作是书里的;六个具体数值是为演示编的。)

  1. 两条线的长短正好互补 —— 一个省样本但只能离散,一个能连续但样本用一次就扔;
  2. ★ 焊接点只有一个动作:让一个网络直接吐出「最好的那个动作」,替掉做不到的「取最大」。★ 这种策略叫确定性策略;
  3. 「转移是确定的」和「策略是确定的」是两件事 —— 前者说环境,后者说策略;
  4. 合流的收益是回放缓存回来了 —— 经验能重复用,而且随机抽还能打散相关性;
  5. DDPG = 回放缓存 + 目标网络 + 确定性演员,目标网络改成每步挪一丁点;
  6. 确定性策略自己不会探索,所以要往动作上加噪声; ★ 而书里当场说了:论文推荐的那种带时间相关性的噪声,普通高斯噪声也一样好。★
  7. DDPG 很脆,书里自己说它「对超参数敏感」;病根还是过估计;
  8. ★ 过估计的机理:误差本身是公平的,是「取最大」专挑偏高的那些,才让它变得不公平。★
  9. TD3 三招:两个批判者取小、演员少更新几次、给目标动作抖一下 —— 分别治估高、时机、尖刺;
  10. ★ 宁可偏低:偏高的估计会被反复选中、滚雪球;偏低的根本不会被选中,躺着不动。★
  11. SAC 把「保持不确定」写进目标本身 —— 探索不再是外挂的噪声,而是有分可拿的;
  12. 温度 = 「多想探索一点」的价钱;而它决定了最优策略在 「只挑最好的 ←→ 乱走」这根轴上的位置;
  13. SAC 有推导不是拼凑 —— 书里证了加熵之后策略迭代仍然单调变好、仍然收敛;
  14. ★ 三个算法在同一次更新里只差目标值那一行。★ 其余零件完全一样;
  15. 书里两个真实项目都选 SAC,四条理由里最实在的一条是:离线策略,所以好改成并行版本。

原文地图

主题原书章原文位置
倒立摆环境第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:394(搜「它有 3 维观测空间和 1 维动作空间」) · text/10-ch06-6-q-actor-critic.txt:395(搜「让倒立摆尽」)
两条线各自的毛病第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:18(搜「它只能处理离散的、低维的动作空间」) · text/10-ch06-6-q-actor-critic.txt:19(搜「无法直接计算出每个动作对应的 Q 值」) · text/10-ch06-6-q-actor-critic.txt:27(搜「而在线策略方法的采样效率远低于离线策略方法」)
表 6.1 三行对照第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:39(搜「离散和连续」)
合流的收益第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:28(搜「可以同时利用这两种算法的优点」) · text/10-ch06-6-q-actor-critic.txt:30(搜「打乱数据的序列关系」)
确定性策略第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:50(搜「不需要从随机策略中采样」)
确定性梯度是随机梯度的极限第2章 强化学习入门text/06-ch02.txt:2453(搜「确定性策略梯度作为随机性策略梯度的极限」) · text/06-ch02.txt:2460(搜「这表示 DPG 的梯度」) · text/06-ch02.txt:2461(搜「以上关系的证明超出了本书的范畴」)
DDPG 的定位与三个零件第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:43(搜「深度 Q 网络算法在连续动作空间」) · text/10-ch06-6-q-actor-critic.txt:44(搜「它可以解决深度 Q 网络算法无法直接应用于连续动作空间的问题」)
演员用链式法则更新第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:91(搜「通过将链式法则应用于期望回报函数」)
目标网络的指数平滑更新第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:105(搜「采用了类似深度 Q 网络算法的目标网络」) · text/10-ch06-6-q-actor-critic.txt:115(搜「目标网络的更新缓慢且平稳」)
探索靠加噪声、O-U 与高斯第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:53(搜「通过在训练过程中添加随机噪声解决该问题」) · text/10-ch06-6-q-actor-critic.txt:71(搜「与马尔可夫决策过程的性」) · text/10-ch06-6-q-actor-critic.txt:72(搜「时间不相关的零均值高斯」)
DDPG 很脆第2章 强化学习入门text/06-ch02.txt:2463(搜「一种最著名的 DPG 算法是深度确定性策略梯度」) · text/06-ch02.txt:2472(搜「由于它在实践中往往很脆弱而对超参数敏感」)
过估计的机理第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:162(搜「因为 Q 值是精确存储的」) · text/10-ch06-6-q-actor-critic.txt:181(搜「操作总是为每个状态选择最大」)
TD3 三招第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:149(搜「其中运用了三个关键技术」) · text/10-ch06-6-q-actor-critic.txt:150(搜「通过学习两个 Q 值函数」) · text/10-ch06-6-q-actor-critic.txt:152(搜「策略网络的更新频率低于 Q 值网络」) · text/10-ch06-6-q-actor-critic.txt:153(搜「在目标策略的输出动作中加入噪声」)
低估为什么无害第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:196(搜「虽然此更新规则可能导致低估」) · text/10-ch06-6-q-actor-critic.txt:197(搜「动作的 Q 值不会被显式更新」)
延迟策略更新的推理第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:201(搜「目标网络在学习过程中给算法提供了一个稳定的更新目标」) · text/10-ch06-6-q-actor-critic.txt:205(搜「可以使 Q 值函数的估计具有更小的方差」)
目标策略平滑第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:207(搜「窄峰估计可能存在过拟」) · text/10-ch06-6-q-actor-critic.txt:208(搜「作者认为相似的动作应该具有相似的值估计」) · text/10-ch06-6-q-actor-critic.txt:213(搜「通过在每个动作中加入截断的正态分布噪声作为正则化」)
最大熵目标与温度第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:243(搜「继续采用了上一章提到的最大化熵的想法」) · text/10-ch06-6-q-actor-critic.txt:244(搜「从而鼓励更多的探索」) · text/10-ch06-6-q-actor-critic.txt:253(搜「这里 α 是正则化系数」)
柔性策略迭代的两步与保证第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:258(搜「有理论保证的学习最优最大化熵策略的算法」) · text/10-ch06-6-q-actor-critic.txt:318(搜「上面描述的柔性策略提高阶段也有单调提高的性质」) · text/10-ch06-6-q-actor-critic.txt:319(搜「这一点和上一章提到的 TRPO 类似」)
定理 6.1 与省略证明第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:320(搜「收敛到最优解」) · text/10-ch06-6-q-actor-critic.txt:323(搜「我们省略了这一章提到的各个结论的证明过程」)
最优策略的指数形状第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:306(搜「归一化常数」)
SAC 的两个批判者与再参数化第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:345(搜「也使用了两个 Q 值函数」) · text/10-ch06-6-q-actor-critic.txt:349(搜「这样往往能够减少梯度估计的方差」)
自动熵调节第6章 DQN与Actor-Critic的结合text/10-ch06-6-q-actor-critic.txt:361(搜「还提供了自动调节正则化参数」) · text/10-ch06-6-q-actor-critic.txt:367(搜「这里 κ 是一个可以理解为目标熵的超参数」)
项目为什么选 SAC第16章 模拟环境中机器人学习text/22-ch16.txt:569(搜「策略来应对高维连续动作空间」) · text/22-ch16.txt:570(搜「更加稳定并且对参数鲁棒」) · text/22-ch16.txt:573(搜「所以它在实践中可以较方便地改成并行版本」)

Footnotes

  1. 出处:「第6章 DQN与Actor-Critic的结合」第 394 段(text/10-ch06-6-q-actor-critic.txt:394,搜「它有 3 维观测空间和 1 维动作空间」)与第 395 段(text/10-ch06-6-q-actor-critic.txt:395,搜「让倒立摆尽」)。原文说明:每步中环境根据当前的旋转角度、速度和加速度返回一个奖励,目标是让倒立摆尽量直立不动。

  2. 出处:「第6章 DQN与Actor-Critic的结合」第 18 段(text/10-ch06-6-q-actor-critic.txt:18,搜「它只能处理离散的、低维的动作空间」)与第 19 段(text/10-ch06-6-q-actor-critic.txt:19,搜「无法直接计算出每个动作对应的 Q 值」)。

  3. 出处:「第6章 DQN与Actor-Critic的结合」第 26 段(text/10-ch06-6-q-actor-critic.txt:26,搜「仍然是一种在线策略的算法」)与第 27 段(text/10-ch06-6-q-actor-critic.txt:27,搜「而在线策略方法的采样效率远低于离线策略方法」)。

  4. 出处:「第6章 DQN与Actor-Critic的结合」第 39 段(text/10-ch06-6-q-actor-critic.txt:39,搜「离散和连续」)。这是原书表 6.1,三行分别是深度 Q 网络、Actor-Critic,以及两者的结合。

  5. 出处:「第6章 DQN与Actor-Critic的结合」第 28 段(text/10-ch06-6-q-actor-critic.txt:28,搜「可以同时利用这两种算法的优点」)与第 30 段(text/10-ch06-6-q-actor-critic.txt:30,搜「打乱数据的序列关系」)。 2

  6. 出处:「第6章 DQN与Actor-Critic的结合」第 49 段(text/10-ch06-6-q-actor-critic.txt:49,搜「Actor 是一个确定性策略函数」)与第 50 段(text/10-ch06-6-q-actor-critic.txt:50,搜「不需要从随机策略中采样」)。

  7. 出处:「第2章 强化学习入门」第 2453 段(text/06-ch02.txt:2453,搜「确定性策略梯度作为随机性策略梯度的极限」)、第 2460 段(text/06-ch02.txt:2460,搜「这表示 DPG 的梯度」)与第 2461 段(text/06-ch02.txt:2461,搜「以上关系的证明超出了本书的范畴」)。这是原书的定理 2.4;它还给了一个额外条件(「常规 Delta-近似」),我们没有展开。 2 3 4 5

  8. 出处:「第6章 DQN与Actor-Critic的结合」第 43 段(text/10-ch06-6-q-actor-critic.txt:43,搜「深度 Q 网络算法在连续动作空间」)与第 44 段(text/10-ch06-6-q-actor-critic.txt:44,搜「它可以解决深度 Q 网络算法无法直接应用于连续动作空间的问题」)。原文还说 DDPG 可以看作「确定性策略梯度算法和深度神经网络的结合」。

  9. 出处:「第6章 DQN与Actor-Critic的结合」第 74 段(text/10-ch06-6-q-actor-critic.txt:74,搜「通过贝尔」)与第 85 段(text/10-ch06-6-q-actor-critic.txt:85,搜「使用梯度下降算法最小化损失函数」)。

  10. 出处:「第6章 DQN与Actor-Critic的结合」第 91 段(text/10-ch06-6-q-actor-critic.txt:91,搜「通过将链式法则应用于期望回报函数」)。原书给的式子是「对动作求 Q 的梯度」乘「对参数求策略的梯度」,并给了按批量样本平均的版本。

  11. 出处:「第6章 DQN与Actor-Critic的结合」第 105 段(text/10-ch06-6-q-actor-critic.txt:105,搜「采用了类似深度 Q 网络算法的目标网络」)与第 115 段(text/10-ch06-6-q-actor-critic.txt:115,搜「目标网络的更新缓慢且平稳」)。原文对系数的要求只写了「远小于 1」,没有给推荐值。

  12. 出处:「第6章 DQN与Actor-Critic的结合」第 51 段(text/10-ch06-6-q-actor-critic.txt:51,搜「一个关键问题是如何平衡这种确定性策略的探索和利用」)与第 53 段(text/10-ch06-6-q-actor-critic.txt:53,搜「通过在训练过程中添加随机噪声解决该问题」)。

  13. 出处:「第6章 DQN与Actor-Critic的结合」第 71 段(text/10-ch06-6-q-actor-critic.txt:71,搜「与马尔可夫决策过程的性」)与第 72 段(text/10-ch06-6-q-actor-critic.txt:72,搜「时间不相关的零均值高斯」)。原书为 O-U 过程给了完整的随机微分方程和维纳过程的三条性质,而结论一句话:普通高斯噪声也一样好。 2 3

  14. 出处:「第2章 强化学习入门」第 2467 段(text/06-ch02.txt:2467,搜「但是众所周知」)与第 2472 段(text/06-ch02.txt:2472,搜「由于它在实践中往往很脆弱而对超参数敏感」)。原书在这里引了 Duan 等人 2016 年的对照工作。注意这句评价出现在第 2 章,而不是专门讲 DDPG 的第 6 章。 2 3

  15. 出处:「第6章 DQN与Actor-Critic的结合」第 155 段(text/10-ch06-6-q-actor-critic.txt:155,搜「操作会导致 Q 值过估计的问题」)与第 162 段(text/10-ch06-6-q-actor-critic.txt:162,搜「因为 Q 值是精确存储的」)。 2

  16. 出处:「第6章 DQN与Actor-Critic的结合」第 149 段(text/10-ch06-6-q-actor-critic.txt:149,搜「其中运用了三个关键技术」)、第 150 段(text/10-ch06-6-q-actor-critic.txt:150,搜「通过学习两个 Q 值函数」)、第 152 段(text/10-ch06-6-q-actor-critic.txt:152,搜「策略网络的更新频率低于 Q 值网络」)与第 153 段(text/10-ch06-6-q-actor-critic.txt:153,搜「在目标策略的输出动作中加入噪声」)。TD3 的全名原书译作「孪生延迟 DDPG」——「孪生」指两个批判者,「延迟」指策略少更新几次。 2 3 4

  17. 出处:「第6章 DQN与Actor-Critic的结合」第 196 段(text/10-ch06-6-q-actor-critic.txt:196,搜「虽然此更新规则可能导致低估」)与第 197 段(text/10-ch06-6-q-actor-critic.txt:197,搜「动作的 Q 值不会被显式更新」)。原书引的是 Fujimoto 等人 2018 年那篇 TD3 原论文。 2

  18. 出处:「第6章 DQN与Actor-Critic的结合」第 201 段(text/10-ch06-6-q-actor-critic.txt:201,搜「目标网络在学习过程中给算法提供了一个稳定的更新目标」)与第 205 段(text/10-ch06-6-q-actor-critic.txt:205,搜「可以使 Q 值函数的估计具有更小的方差」)。原文没有给出更新频率之比的推荐值,只写作「d 次」。

  19. 出处:「第6章 DQN与Actor-Critic的结合」第 207 段(text/10-ch06-6-q-actor-critic.txt:207,搜「窄峰估计可能存在过拟」)与第 208 段(text/10-ch06-6-q-actor-critic.txt:208,搜「作者认为相似的动作应该具有相似的值估计」)。注意这里是原书在转述 TD3 论文作者的看法。 2

  20. 出处:「第6章 DQN与Actor-Critic的结合」第 213 段(text/10-ch06-6-q-actor-critic.txt:213,搜「通过在每个动作中加入截断的正态分布噪声作为正则化」)。原书的伪代码里把噪声的截断幅度列为超参数。

  21. 出处:「第6章 DQN与Actor-Critic的结合」第 243 段(text/10-ch06-6-q-actor-critic.txt:243,搜「继续采用了上一章提到的最大化熵的想法」)、第 244 段(text/10-ch06-6-q-actor-critic.txt:244,搜「从而鼓励更多的探索」)与第 253 段(text/10-ch06-6-q-actor-critic.txt:253,搜「这里 α 是正则化系数」)。原书在这里列了五篇提出最大熵想法的论文。

  22. 出处:「第6章 DQN与Actor-Critic的结合」第 345 段(text/10-ch06-6-q-actor-critic.txt:345,搜「也使用了两个 Q 值函数」)与第 349 段(text/10-ch06-6-q-actor-critic.txt:349,搜「这样往往能够减少梯度估计的方差」)。原书还提到另一条路:用「似然比例梯度估计」来优化,再参数化只是其中更好的那一条。 2

  23. 出处:「第6章 DQN与Actor-Critic的结合」第 361 段(text/10-ch06-6-q-actor-critic.txt:361,搜「还提供了自动调节正则化参数」)、第 367 段(text/10-ch06-6-q-actor-critic.txt:367,搜「这里 κ 是一个可以理解为目标熵的超参数」)与第 369 段(text/10-ch06-6-q-actor-critic.txt:369,搜「调节方法的严格表述感兴趣的读者」)。原书对这个方法的严格表述同样让读者去看 2018 年那篇论文。 2 3

  24. 出处:「第6章 DQN与Actor-Critic的结合」第 258 段(text/10-ch06-6-q-actor-critic.txt:258,搜「有理论保证的学习最优最大化熵策略的算法」)与第 259 段(text/10-ch06-6-q-actor-critic.txt:259,搜「柔性策略评估和柔性策略提高」)。

  25. 出处:「第6章 DQN与Actor-Critic的结合」第 320 段(text/10-ch06-6-q-actor-critic.txt:320,搜「收敛到最优解」)与第 323 段(text/10-ch06-6-q-actor-critic.txt:323,搜「我们省略了这一章提到的各个结论的证明过程」)。这是原书的定理 6.1。 2 3

  26. 出处:「第6章 DQN与Actor-Critic的结合」第 306 段(text/10-ch06-6-q-actor-critic.txt:306,搜「归一化常数」)。原书给的解是「把 Q 除以温度再取指数,然后除以一个归一化常数」;它还指出,当你的策略模型表达不了这个最优解时,可以改成「在你的策略集合里找一个 KL 散度最小的」。 2

  27. 出处:「第16章 模拟环境中机器人学习」第 569 段(text/22-ch16.txt:569,搜「策略来应对高维连续动作空间」)、第 570 段(text/22-ch16.txt:570,搜「更加稳定并且对参数鲁棒」)与第 573 段(text/22-ch16.txt:573,搜「所以它在实践中可以较方便地改成并行版本」)。原书还说这个项目复用了第 13 章那个并行框架。 2

  28. 出处:「第6章 DQN与Actor-Critic的结合」第 181 段(text/10-ch06-6-q-actor-critic.txt:181,搜「操作总是为每个状态选择最大」)与第 183 段(text/10-ch06-6-q-actor-critic.txt:183,搜「从而导致过估计问题」)。原书把这个误差写成了一个显式的差值,并指出它的期望大于 0。

  29. 出处:「第6章 DQN与Actor-Critic的结合」第 318 段(text/10-ch06-6-q-actor-critic.txt:318,搜「上面描述的柔性策略提高阶段也有单调提高的性质」)与第 319 段(text/10-ch06-6-q-actor-critic.txt:319,搜「这一点和上一章提到的 TRPO 类似」)。原文写明:即使在使用 KL 散度投影回策略集合之后,单调提高的性质也仍然成立。