LECTURE 04

强化学习基础:MDP、目标函数与算法全景

这一讲不教任何一个具体算法,却是全课最重要的一讲——它把「强化学习」这四个字翻译成一个精确的数学问题,并给出后面二十讲的索引地图。

讲师:Sergey Levine UC Berkeley 原始材料:lec-4.pdf(41 页)

0. 本讲导读

前三讲我们一直在做模仿学习(imitation learning):给定人类专家演示 $\{(s_t^{(i)},a_t^{(i)})\}$,用最大似然把策略拟合出来,再用 DAgger 之类的手段修补分布漂移。整条路线的前提是——你手上有足够好的演示数据。可现实里这个前提经常不成立:没人能演示怎么控制一座电网,没人能演示怎么让四足机器人在冰面上跑,更没人能演示如何在围棋上超越人类。一旦没有演示,「模仿谁」这个问题就没有答案了。

本讲要做的事是换一个问题定义:不再要求「模仿某个人」,而是要求「让某个标量指标尽可能大」。这个指标就是奖励函数(reward function) $r(s,a)$。一旦有了它,学习的目标就从「像专家」变成了「拿高分」,而这正是强化学习(reinforcement learning, RL)的全部内容。

这一讲的结构可以概括成五个递进的问题:

  • 问题长什么样? 从马尔可夫链(Markov chain)出发,加上动作和奖励得到 MDP,再加上观测得到 POMDP。这三个定义会一直用到第 25 讲。
  • 目标是什么? $\theta^\star=\argmax_\theta \E_{\tau\sim p_\theta(\tau)}\left[\sum_t r(s_t,a_t)\right]$。这个式子有两种等价写法:有限步(finite horizon)用状态-动作边缘分布 $p_\theta(s_t,a_t)$,无限步(infinite horizon)用平稳分布 $\bar\mu$。后者要用到「平稳分布是转移算子特征值为 1 的特征向量」这个线性代数事实。
  • 为什么是期望? 因为奖励本身可以极度不光滑(掉下悬崖 $-1$,没掉 $+1$),但期望关于策略参数是光滑的。这是所有基于梯度的 RL 方法能成立的根本原因。
  • 怎么处理这些嵌套期望? 引入 $Q^\pi(s,a)$ 和 $V^\pi(s)$——它们把「从此刻起往后所有的期望」打包成一个数,于是策略改进变成了一件局部的、可操作的事。
  • 有哪些做法? 策略梯度、值函数方法、actor-critic、model-based,四大类算法都装在同一个「生成样本 → 拟合模型/估计回报 → 改进策略」的三步循环里,差别只在于第二、三步各自做什么。它们在采样效率、稳定性、适用假设上有截然不同的取舍。
核心结论
  • RL 问题 = $\mathcal{M}=\{\mathcal{S},\mathcal{A},\mathcal{T},r\}$ + 一个参数化策略 $\pi_\theta(a|s)$,目标是最大化期望累积奖励。
  • 策略 $\pi_\theta$ 和转移 $\mathcal{T}$ 合起来把 MDP 变成一条关于 $(s_t,a_t)$ 增广状态的马尔可夫链,转移算子记作 $\mathcal{T}_\theta$;于是目标可写成 $\sum_t \mu_t^\top \vec r$,其中 $\mu_{t+1}=\mathcal{T}_\theta\mu_t$。
  • 无限步时目标取时间平均,$\mu_t\to\bar\mu$ 满足 $\mathcal{T}_\theta\bar\mu=\bar\mu$,即 $(\mathcal{T}_\theta-I)\bar\mu=0$,$\bar\mu$ 是特征值 1 的特征向量。
  • $Q^\pi(s_t,a_t)=\sum_{t'=t}^{H}\E_{\pi}[r(s_{t'},a_{t'})|s_t,a_t]$,$V^\pi(s_t)=\E_{a_t\sim\pi}[Q^\pi(s_t,a_t)]$,而 $\E_{s_1\sim p(s_1)}[V^\pi(s_1)]$ 就是 RL 目标本身。
  • 所有 RL 算法都是同一个三步循环的不同实例;是否 off-policy 是决定采样效率的最重要单一因素,但采样效率 ≠ 墙钟时间(wall clock time)。

1. 从模仿学习到强化学习:奖励函数登场

先把上一讲的终点接上。模仿学习的训练目标是一个纯粹的监督学习问题:

$$ \argmax_\theta \sum_{i=1}^{N}\sum_{t=1}^{H} \log \pi_\theta\!\left(a_t^{(i)} \mid s_t^{(i)}\right) $$

这里 $\pi_\theta(a_t|s_t)$ 是一个神经网络,输入状态 $s_t$(比如车载摄像头图像),输出动作 $a_t$(方向盘转角、油门)上的一个概率分布,$\theta$ 是网络权重;$N$ 条演示轨迹、每条 $H$ 步。这个目标里完全没有出现环境——它只是在拟合数据集里的条件分布。

模仿学习的最大似然目标,以及「如果没有好的演示数据怎么办」的提问
模仿学习的完整设定:观测 $s_t$ 经过卷积网络得到策略 $\pi_\theta(a_t|s_t)$,输出方向盘与油门动作 $a_t$;训练就是在演示数据上做最大似然。整讲的出发点是最后那句话——如果我们没有好的演示数据,这个目标就无从写起。

没有演示数据时,我们需要另一种方式告诉智能体「什么算好」。最直接的办法是给出一个函数,对任意状态-动作对打分:

$$ r:\mathcal{S}\times\mathcal{A}\to\R,\qquad r(s,a)\ \text{告诉我们哪些状态和动作更好} $$

Levine 用开车做例子:车稳稳地在路上开是高奖励,撞到别的车是低奖励。看起来很简单,但立刻有一个关键的、贯穿整个 RL 的观察:

核心结论

只优化当下这一步的奖励是完全没用的。等到你「马上要撞上别人」的那一刻,$r$ 才变成很低,可这时候方向盘已经救不回来了——by the time you're about to hit someone, it's too late。真正需要优化的是长期奖励:从现在起,未来所有时刻奖励之和的期望。

这句话是 RL 与监督学习最本质的分野。监督学习里每个样本的损失是独立的、当下就能算清的;RL 里当下这一步动作的「好坏」取决于它把你带到什么状态、以及在那个状态上你还能拿多少分。这种时序信用分配(temporal credit assignment)问题,正是后面所有值函数、Bellman 方程、TD 学习存在的理由。

奖励函数 r(s,a) 的引入:高奖励与低奖励的对比,以及 MDP 四元组的定义
同一个策略网络,但训练信号换成了奖励。右边这句话是本讲的定义式:状态 $s_t$、动作 $a_t$、奖励函数 $r(s_t,a_t)$、转移概率 $p(s_{t+1}|s_t,a_t)$,这四样东西共同定义了一个马尔可夫决策过程。注意奖励和转移都是环境给的,策略是我们要学的。
注意

「奖励函数是给定的」这个假设在本讲成立,但它其实是深度 RL 落地时最大的痛点之一。真实任务里写出一个既能表达意图、又不会被智能体钻空子(reward hacking)的 $r$ 极其困难。后面的课程会讲两条出路:逆强化学习(inverse RL)——从演示里把 $r$ 反推出来;以及基于人类偏好的奖励建模。本讲暂且把 $r$ 当成上帝给的。

2. 马尔可夫链、MDP 与 POMDP

2.1 最基础的模型:马尔可夫链

先把动作和奖励都扔掉,只看一个随机演化的动力系统。马尔可夫链定义为一个二元组

$$ \mathcal{M}=\{\mathcal{S},\mathcal{T}\} $$

其中 $\mathcal{S}$ 是状态空间(state space),状态 $s\in\mathcal{S}$ 可以是离散的(比如 $\{1,2,\dots,n\}$)也可以是连续的(比如 $\R^d$);$\mathcal{T}$ 是转移算子(transition operator),也就是条件概率 $p(s_{t+1}|s_t)$。

「马尔可夫性(Markov property)」这个词的精确含义是条件独立:

$$ s_{t+1}\perp s_{t-1}\mid s_t $$

读作「给定当前状态 $s_t$,下一个状态 $s_{t+1}$ 与过去的状态 $s_{t-1}$ 条件独立」。直觉上就是:当前状态包含了预测未来所需的全部信息,历史是多余的。 这不是对世界的描述,而是对「状态」这个词的定义——如果某个量不满足这条性质,它就不配叫状态。

马尔可夫链定义:状态空间、转移算子,以及转移算子作为矩阵作用在状态边缘向量上
马尔可夫链的完整定义。右下角是本讲最重要的一块线性代数:把状态边缘分布写成向量 $\mu_t$(第 $i$ 个分量是 $p(s_t=i)$),把转移概率写成矩阵 $\mathcal{T}_{i,j}=p(s_{t+1}=i|s_t=j)$,那么边缘分布的演化就是一次矩阵-向量乘法 $\mu_{t+1}=\mathcal{T}\mu_t$。Levine 特意用黄色标注「这块线性代数后面很重要」——它在无限步目标那里会派上用场。

2.2 为什么叫「算子」

这是学生常问的一个问题:$p(s_{t+1}|s_t)$ 明明是个条件概率,为什么要叫「算子」?答案在于我们关心的其实不是单条轨迹,而是分布的演化。边缘化掉 $s_t$:

$$ p(s_{t+1})=\sum_{s_t} p(s_{t+1}\mid s_t)\,p(s_t) $$

把 $p(s_t)$ 看成一个概率向量(状态数为 $n$ 时它是 $n$ 维的、非负的、和为 1 的向量),记作

$$ \mu_t=\begin{bmatrix} p(s_t=1)\\ p(s_t=2)\\ \vdots \end{bmatrix},\qquad \mathcal{T}_{i,j}=p(s_{t+1}=i\mid s_t=j) $$

那么上面那个求和恰好就是矩阵乘向量:

$$ \mu_{t+1}=\mathcal{T}\mu_t $$

所以 $\mathcal{T}$ 是一个作用在「分布空间」上的线性算子。这个线性性质极其重要:虽然每条轨迹的演化是随机的、非线性的,但分布的演化永远是线性的。它意味着 $\mu_t=\mathcal{T}^{t-1}\mu_1$,也意味着我们可以用特征值/特征向量这套工具来分析长期行为。

直觉

举个两状态的具体例子。设 $\mathcal{S}=\{\text{晴},\text{雨}\}$,$\mathcal{T}=\begin{bmatrix}0.9 & 0.5\\ 0.1 & 0.5\end{bmatrix}$(列是「今天」,行是「明天」:晴天后 90% 还是晴,雨天后 50% 转晴)。若今天必定是晴,$\mu_1=[1,0]^\top$,则 $\mu_2=[0.9,0.1]^\top$,$\mu_3=[0.86,0.14]^\top$,$\mu_4=[0.844,0.156]^\top$……很快收敛到 $\bar\mu=[5/6,1/6]^\top\approx[0.833,0.167]^\top$。验证一下:$0.9\times\frac56+0.5\times\frac16=\frac{0.75+0.0833}{1}=0.8333$ ✓。这个 $\bar\mu$ 就是平稳分布,也就是 $\mathcal{T}$ 特征值为 1 的特征向量。第 4 节会正式用到它。

2.3 加上动作:马尔可夫决策过程

马尔可夫链里没有「选择」,系统自己演化,我们只能围观。把动作加进去,就得到了 Bellman 在 1950 年代形式化的马尔可夫决策过程(Markov Decision Process, MDP):

$$ \mathcal{M}=\{\mathcal{S},\mathcal{A},\mathcal{T},r\} $$
  • $\mathcal{S}$:状态空间,$s\in\mathcal{S}$;
  • $\mathcal{A}$:动作空间(action space),$a\in\mathcal{A}$,同样可离散可连续;
  • $\mathcal{T}$:转移算子,现在是 $p(s_{t+1}|s_t,a_t)$——注意它现在依赖于动作,所以严格说它是一个三阶张量 $\mathcal{T}_{i,j,k}=p(s_{t+1}=i|s_t=j,a_t=k)$;
  • $r:\mathcal{S}\times\mathcal{A}\to\R$:奖励函数。
MDP 的定义与图模型,以及把 MDP 化为马尔可夫链的增广状态构造
MDP 的图模型:动作 $a_t$ 作为外部输入注入到转移里。下半部分回答了那个提问「能把 MDP 变回马尔可夫链吗?」——可以,只要把 $(s_t,a_t)$ 打包成一个增广状态。此时转移变成 $p((s_{t+1},a_{t+1})|(s_t,a_t))=p(s_{t+1}|s_t,a_t)\,\pi_\theta(a_{t+1}|s_{t+1})$:先按环境转移走一步,再按策略采一个新动作。
核心结论

MDP 本身不是马尔可夫链,因为动作还没确定。但一旦固定一个策略 $\pi_\theta(a|s)$,MDP 就退化成一条关于增广状态 $(s,a)$ 的马尔可夫链,其转移算子为

$$ \mathcal{T}_{\theta}:\quad p\big((s_{t+1},a_{t+1})\mid (s_t,a_t)\big)=p(s_{t+1}\mid s_t,a_t)\,\pi_\theta(a_{t+1}\mid s_{t+1}) $$

这一步转换是本讲后面所有线性代数推导的基础:它让我们可以把「策略的好坏」写成一个矩阵幂级数作用在初始分布上再和奖励向量做内积。

2.4 加上观测:部分可观测 MDP

现实中智能体往往看不到真实状态。摄像头拍到的是像素,不是「前车的速度和距离」。这就是部分可观测马尔可夫决策过程(Partially Observed Markov Decision Process, POMDP),它是一个六元组:

$$ \mathcal{M}=\{\mathcal{S},\mathcal{A},\mathcal{O},\mathcal{T},\mathcal{E},r\} $$

新增的两样东西是:观测空间(observation space) $\mathcal{O}$,观测 $o\in\mathcal{O}$;以及发射算子(emission operator) $\mathcal{E}$,即 $p(o_t|s_t)$。注意奖励函数仍然定义在真实状态上,$r:\mathcal{S}\times\mathcal{A}\to\R$。

POMDP 的六元组定义与图模型:真实状态链在下,观测挂在每个状态上
POMDP 的图模型。关键在于看清楚哪些边存在、哪些不存在:真实状态 $s_1\to s_2\to s_3$ 构成马尔可夫链,观测 $o_t$ 从 $s_t$ 发射出来,动作 $a_t$ 影响的是 $s_{t+1}$。观测序列本身不是马尔可夫的——$o_{t+1}$ 与 $o_{t-1}$ 在给定 $o_t$ 时通常并不条件独立,因为 $o_{t-1}$ 携带了关于隐藏状态 $s_t$ 的额外信息。

幻灯片上的提问「能把它写成马尔可夫链吗?」值得认真回答,因为答案揭示了 POMDP 为什么难:

推导

观测层面不行。 若只看 $o_1,o_2,\dots$,则 $o_{t+1}\not\perp o_{t-1}\mid o_t$。举个极端例子:状态是机器人的位置,观测是一张有遮挡的图片。看到 $o_t$ 是一堵白墙,你不知道自己在哪;但如果你还记得 $o_{t-1}$ 是走廊尽头,你就能定位。历史含有信息 ⟹ 马尔可夫性破坏。

信念状态层面可以。 定义信念状态(belief state) $b_t = p(s_t\mid o_{1:t},a_{1:t-1})$,它是 $\mathcal{S}$ 上的一个概率分布。由贝叶斯滤波,$b_{t+1}$ 只由 $b_t,a_t,o_{t+1}$ 决定:

$$ b_{t+1}(s')\ \propto\ p(o_{t+1}\mid s')\sum_{s} p(s'\mid s,a_t)\,b_t(s) $$

所以 $(b_t)$ 构成一条马尔可夫链,POMDP 等价于一个定义在信念空间上的 MDP。代价是:信念空间是原状态空间上的概率单纯形,即使 $|\mathcal{S}|=10$,信念状态也是一个 9 维连续向量;$|\mathcal{S}|$ 一大就彻底不可解。

Levine 的实际建议是:先把全部精力放在完全可观测的情形上。深度 RL 实践中处理部分可观测的常见做法不是精确的信念状态,而是「把最近 $k$ 帧堆叠起来当状态」(DQN 在 Atari 上叠 4 帧就是这么干的),或者用一个循环网络/Transformer 把历史压成隐藏向量。这些都是信念状态的粗糙近似,但工程上够用。第 20 讲左右会专门回来讲这件事。

常见误区

很多教材把 $s$ 和 $o$ 混着写,在完全可观测时这没问题($o_t=s_t$)。但要记住:凡是本课写 $\pi_\theta(a_t|s_t)$ 的地方,都隐含假设了马尔可夫性成立;写 $\pi_\theta(a_t|o_t)$ 时则不然。后面讲策略梯度时会看到,很多算法(比如策略梯度)即使把 $s$ 换成 $o$ 也仍然有效,因为它们的推导没用到马尔可夫性;而值函数类方法(Q-learning、TD)严重依赖马尔可夫性,换成 $o$ 就会出问题。这个区别在第 5 讲末尾会再强调一次。

3. 轨迹分布与 RL 的目标函数

3.1 策略与环境闭环产生的分布

把神经网络策略 $\pi_\theta(a|s)$ 和环境 $p(s'|s,a)$ 接成闭环:状态进网络,网络出动作,动作交给世界,世界返回新状态。反复 $H$ 步,就得到一条轨迹(trajectory) $\tau=(s_1,a_1,s_2,a_2,\dots,s_H,a_H)$。这条轨迹是随机的,它服从的分布叫轨迹分布(trajectory distribution):

$$ p_\theta(\tau)=p_\theta(s_1,a_1,\dots,s_H,a_H)=p(s_1)\prod_{t=1}^{H}\pi_\theta(a_t\mid s_t)\,p(s_{t+1}\mid s_t,a_t) $$
策略网络与环境构成闭环,轨迹分布的因式分解,以及对应的图模型
闭环示意与轨迹分布的定义。左边是策略网络 $\pi_\theta(a|s)$(参数 $\theta$ 分布在各层),右边的地球代表环境的转移分布 $p(s'|s,a)$——这里用 $s'$ 只是不想写 $t+1$ 的简写。下方的公式就是把整条轨迹的联合概率按时间因式分解。
推导

幻灯片上问「这个式子是哪来的?」。它就是概率链式法则 + 两条条件独立假设。链式法则给出

$$ p(s_1,a_1,s_2,a_2,\dots)=p(s_1)\,p(a_1|s_1)\,p(s_2|s_1,a_1)\,p(a_2|s_1,a_1,s_2)\,p(s_3|s_1,a_1,s_2,a_2)\cdots $$

这一步是恒等式,任何联合分布都能这么写。然后代入两条假设:

  1. 策略是马尔可夫的且平稳的:$p(a_t|s_{1:t},a_{1:t-1})=\pi_\theta(a_t|s_t)$,即选动作只看当前状态,且各时刻用同一套参数 $\theta$;
  2. 环境是马尔可夫的:$p(s_{t+1}|s_{1:t},a_{1:t})=p(s_{t+1}|s_t,a_t)$。

代进去就得到了那个连乘。注意下标 $\theta$ 只出现在 $\pi$ 上——环境的 $p(s_1)$ 和 $p(s_{t+1}|s_t,a_t)$ 与我们的参数无关,这一点在第 5 讲推导策略梯度时会成为关键(它们求导后消失)。

3.2 状态边缘分布

有时候我们只关心「第 $t$ 步时智能体在哪」,而不关心它是怎么走过来的。这就是状态边缘分布(state marginal) $p_\theta(s_t)$,把轨迹分布里其余变量全部积掉:

$$ p_\theta(s_t)=\sum_{a_{1:H},\,s_{1:t-1},\,s_{t+1:H}} p(s_1)\prod_{t'=1}^{t-1}\pi_\theta(a_{t'}|s_{t'})\,p(s_{t'+1}|s_{t'},a_{t'}) $$

幻灯片上做了一步化简:由于 $t$ 之后的变量在被积掉之后概率之和为 1,它们对 $p_\theta(s_t)$ 没有贡献,于是可以直接砍掉:

$$ p_\theta(s_t)=\sum_{a_{1:t-1},\,s_{1:t-1}} p(s_1)\prod_{t'=1}^{t-1}\pi_\theta(a_{t'}|s_{t'})\,p(s_{t'+1}|s_{t'},a_{t'}) $$

这个「未来不影响现在」的因果性质看似平凡,但它是后面 reward-to-go 技巧的同一个数学事实的另一面。

轨迹分布与状态边缘分布的定义,以及如何从状态边缘采样的提问
状态边缘的推导:第一行是完整的边缘化,第二行砍掉了 $t$ 之后的所有变量。右侧的黄色提问「如果只想从状态边缘里采样怎么办?」有一个非常简单的答案,见下方。
直觉

那个提问的答案是:直接跑策略,跑到第 $t$ 步,把 $s_t$ 记下来就行了。 你完全不需要显式计算那个巨大的求和。这就是蒙特卡洛方法的全部精髓——采样比求和容易得多。整个 RL 领域几乎所有算法都建立在这个观察之上:我们从来不去算那些高维积分,我们只是运行策略、收集样本、用样本均值近似期望。至于那些既不想跑完整策略、又想估计边缘分布的场合(比如离线 RL 里估计状态分布偏移),课程后面会讲一些别的估计手段。

3.3 目标函数

现在可以写出强化学习的目标了。我们要找一组参数 $\theta$,使得按 $p_\theta(\tau)$ 采样出来的轨迹,其累积奖励的期望最大:

$$ \theta^\star=\argmax_\theta\ \E_{\tau\sim p_\theta(\tau)}\!\left[\sum_{t=1}^{H} r(s_t,a_t)\right] $$
RL 目标函数的正式定义,以及「必须优化长期奖励」的标注
RL 目标的正式写法。上方两条黄色标注是它的动机:单步奖励太晚(快撞上了才知道糟糕),所以必须优化长期奖励;下方回顾了轨迹分布的定义,说明期望是对由策略诱导出的整条轨迹分布取的。

把这个式子拆开来看,有三处值得注意:

  • $\theta$ 在哪? 不在被求期望的函数 $\sum_t r(s_t,a_t)$ 里——奖励函数是环境给的,跟 $\theta$ 无关;$\theta$ 在分布 $p_\theta(\tau)$ 里。所以这不是一个普通的「$\min_\theta f_\theta(x)$」型优化,求导需要特殊技巧(log-derivative trick),这是下一讲的主题。
  • 期望里有未知量。 $p_\theta(\tau)$ 含有环境转移 $p(s_{t+1}|s_t,a_t)$,我们通常不知道它的解析形式。但我们能从中采样(跑策略就行)。「可采样但不可求值」是 RL 与一般随机优化的核心差异。
  • 求和上限 $H$。 $H$ 有限叫 finite-horizon(episodic,回合制),比如一局游戏;$H=\infty$ 叫 infinite-horizon(continuing,持续任务),比如控制一座工厂。两者的目标写法不同,下一节专门处理。
常见误区

初学者常把 RL 目标理解成「找到一条最好的轨迹」。不是的。目标是找到一个策略,使其产生的轨迹分布的期望回报最高。在随机环境里,即使是最优策略也可能撞上一条倒霉轨迹;反过来,一个糟糕的策略也可能撞大运。评价策略的唯一标准是期望,不是某一次运行的结果。下一节会说明,这个「只看期望」的选择不仅是统计上的合理,更是让优化成为可能的技术前提。

4. 目标的两种写法:状态-动作边缘与平稳分布

4.1 有限步:换成状态-动作边缘的求和

目标里的期望是对整条轨迹取的,这看起来很吓人(轨迹空间的维度是 $H$ 乘以状态动作维度)。但因为被求期望的量是各时刻奖励之和,我们可以用期望的线性性把它拆开:

$$ \E_{\tau\sim p_\theta(\tau)}\!\left[\sum_{t=1}^{H} r(s_t,a_t)\right] =\sum_{t=1}^{H}\E_{\tau\sim p_\theta(\tau)}\big[r(s_t,a_t)\big] =\sum_{t=1}^{H}\E_{(s_t,a_t)\sim p_\theta(s_t,a_t)}\big[r(s_t,a_t)\big] $$

第二个等号成立,是因为 $r(s_t,a_t)$ 只依赖于轨迹中的第 $t$ 个状态-动作对,其余变量可以直接边缘化掉。这里的 $p_\theta(s_t,a_t)$ 叫状态-动作边缘(state-action marginal):

$$ p_\theta(s_t,a_t)=\pi_\theta(a_t\mid s_t)\sum_{a_{1:t-1},\,s_{1:t-1}} p(s_1)\prod_{t'=1}^{t-1}\pi_\theta(a_{t'}|s_{t'})\,p(s_{t'+1}|s_{t'},a_{t'}) $$

也就是上一节的状态边缘再乘上当前策略。这一步的意义是把「对 $H$ 步联合分布求期望」变成了「对 $H$ 个二维边缘分别求期望再相加」——维度从 $O(H\cdot d)$ 降到了 $O(d)$。

用状态-动作边缘改写 RL 目标,并把增广马尔可夫链的转移写成矩阵
目标函数的第一次改写。左下角是关键构造:把所有 $(s,a)$ 二元组排成一列,得到向量 $\mu_t$,其第 $j$ 个分量是 $p(s_t=s_j,a_t=a_j)$;转移矩阵为 $\mathcal{T}_{\theta,i,j}=p(s'=s_i|s=s_j,a=a_j)\pi_\theta(a'=a_i|s'=s_i)$,即「先按环境走一步、再按策略采一个动作」。于是 $\mu_{t+1}=\mathcal{T}_\theta\mu_t$。

4.2 全部写成线性代数

既然增广链的边缘演化是线性的,整个目标就能写成纯粹的矩阵表达式。设状态动作对共 $m$ 个,定义奖励向量 $\vec r\in\R^m$,其第 $i$ 个分量是 $r(s_i,a_i)$。则

$$ \begin{aligned} \sum_{t=1}^{H}\E_{(s_t,a_t)\sim p_\theta}\big[r(s_t,a_t)\big] &=\sum_{t=1}^{H}\sum_{s_t,a_t} p_\theta(s_t,a_t)\,r(s_t,a_t)\\[2pt] &=\sum_{t=1}^{H}\sum_{i} \mu_{t,i}\,\vec r_i\\[2pt] &=\sum_{t=1}^{H}\mu_t^\top \vec r\\[2pt] &=\left[\sum_{t=1}^{H}\mathcal{T}_\theta^{\,t-1}\mu_1\right]^{\!\top}\vec r \end{aligned} $$

最后一步用了 $\mu_t=\mathcal{T}_\theta^{\,t-1}\mu_1$,即从初始分布 $\mu_1$ 出发反复作用转移矩阵。

RL 目标完全写成线性代数形式:奖励向量与边缘分布向量的内积之和
逐行的化简:期望展开成求和 → 求和写成内积 $\mu_t^\top\vec r$ → 用 $\mu_t=\mathcal{T}_\theta^{t-1}\mu_1$ 把所有时刻串起来。红框里的 $\mu_{t+1}=\mathcal{T}_\theta\mu_t$ 是整套推导的引擎。右侧展示了 $\vec r$ 和 $\mu_t$ 的具体分量排列方式。
注意

这套矩阵写法只在离散且有限的状态动作空间下字面成立——$\mathcal{T}_\theta$ 是 $m\times m$ 矩阵,$m=|\mathcal{S}||\mathcal{A}|$,在 Atari 上这个数比宇宙原子数还多,绝不可能显式写出来。Levine 明确说了:我们在实际算法里几乎从不显式求解这些东西。 它的价值是理论分析:许多 RL 的收敛性证明、离线 RL 的分布偏移界、以及后面会讲的「策略改进定理」,都是在这个线性代数框架下写出来的。对连续空间,把矩阵换成积分算子,结论形式基本不变。

4.3 无限步:平稳分布登场

如果 $H=\infty$,上面那个和就发散了(每步拿 $+1$,累积奖励是 $\infty$)。有两种标准修补方式,本讲用的是平均奖励(average reward):除以 $H$ 再取极限。

$$ \lim_{H\to\infty}\frac{1}{H}\sum_{t=1}^{H}\E_{(s_t,a_t)\sim p_\theta(s_t,a_t)}\big[r(s_t,a_t)\big] $$

(另一种是引入折扣因子(discount factor) $\gamma\in(0,1)$,用 $\sum_t\gamma^{t-1}r_t$,这个下一讲会详细讲。)

这个极限存在吗?关键问题是:$p_\theta(s_t,a_t)$ 随 $t\to\infty$ 会收敛到某个固定分布吗?如果会,记这个极限分布为 $\bar\mu$,那么按 Cesàro 均值,时间平均也收敛到同一个东西,于是

$$ \lim_{H\to\infty}\frac{1}{H}\sum_{t=1}^{H}\E_{p_\theta(s_t,a_t)}[r] \;=\; \E_{(s,a)\sim\bar\mu}\big[r(s,a)\big]\;=\;\bar\mu^\top \vec r $$
无限步目标:时间平均收敛到平稳分布下的期望奖励,平稳分布是转移算子特征值 1 的特征向量
无限步情形的完整论证。上半部分把时间平均写成平稳分布 $\bar\mu$ 下的期望;下半部分是核心的线性代数:平稳(stationary)的定义就是「转移前后一样」,即 $\bar\mu=\mathcal{T}_\theta\bar\mu$,移项得 $(\mathcal{T}_\theta-I)\bar\mu=0$,所以 $\bar\mu$ 恰是 $\mathcal{T}_\theta$ 对应特征值 1 的特征向量。右侧黄框提醒:实际算法里我们不去解这个特征值问题,但它对理论理解非常有用。
推导

为什么平稳分布是特征值 1 的特征向量,而且一定存在?

「平稳」的定义是:作用一次转移之后分布不变,

$$ \bar\mu=\mathcal{T}_\theta\bar\mu\quad\Longleftrightarrow\quad(\mathcal{T}_\theta-I)\bar\mu=0 $$

这正是「$\bar\mu$ 属于 $\mathcal{T}_\theta$ 的特征值 $\lambda=1$ 的特征空间」的定义。

存在性来自 $\mathcal{T}_\theta$ 是列随机矩阵(每一列非负、和为 1)。注意 $\mathbf{1}^\top\mathcal{T}_\theta=\mathbf{1}^\top$,所以 $\mathbf 1$ 是 $\mathcal{T}_\theta^\top$ 的特征值为 1 的(左)特征向量;而矩阵与其转置有相同的特征值集合,故 $\mathcal{T}_\theta$ 也有特征值 1,对应的右特征向量就是 $\bar\mu$。由 Perron–Frobenius 定理,若链是不可约(irreducible)且非周期(aperiodic)的(即幻灯片上说的「某些正则性条件」,ergodicity),则特征值 1 是单重的、模最大的,对应特征向量可取为各分量严格为正、和为 1 的概率向量,且对任意初始分布都有 $\mathcal{T}_\theta^{\,t}\mu_1\to\bar\mu$。

收敛速度由第二大特征值的模 $|\lambda_2|$(谱隙 spectral gap)决定:$\|\mu_t-\bar\mu\|=O(|\lambda_2|^{t})$。回到 2.2 节的天气例子,$\mathcal{T}$ 的特征值是 $1$ 和 $0.4$,所以误差每步缩小到 $0.4$ 倍——第 4 步偏差就只有 $0.4^3\approx 0.064$,和我们算出来的数吻合($0.844$ vs $0.833$,差 $0.011$,因为初始偏差本身只有 $1/6$)。谱隙小 = 混合慢 = RL 需要更长的轨迹才能看清策略的真实好坏,这在实践中表现为「探索难、需要更大的 horizon」。

常见误区

不可约 + 非周期这两个条件不是走过场。举反例:一个只有两个状态、每步必然在两者之间来回跳的链,$\mathcal{T}=\begin{bmatrix}0&1\\1&0\end{bmatrix}$,特征值是 $\pm 1$。$\mu_t$ 永远在 $[1,0]^\top$ 和 $[0,1]^\top$ 之间震荡,不收敛;但时间平均仍然收敛到 $[0.5,0.5]^\top$,这也正是为什么无限步目标写成时间平均而不是 $\lim_t \mu_t$ 的原因之一。另外,如果 MDP 有吸收态(比如游戏结束),链是可约的,平稳分布不唯一——它取决于你从哪出发。这类任务应该用有限步或折扣形式来建模。

5. 为什么强化学习永远在谈期望

把两种情形并排放在一起,就是 RL 目标的最终形态:

$$ \underbrace{\theta^\star=\argmax_\theta\ \E_{(s,a)\sim p_\theta(s,a)}\big[r(s,a)\big]}_{\text{无限步(infinite horizon)}} \qquad \underbrace{\theta^\star=\argmax_\theta\ \sum_{t=1}^{H}\E_{(s_t,a_t)\sim p_\theta(s_t,a_t)}\big[r(s_t,a_t)\big]}_{\text{有限步(finite horizon)}} $$

两个式子的共同点是:被优化的都是期望,而不是任何一次具体的结果。 这不只是「统计上更稳健」这么轻描淡写的理由。Levine 在这里给了一个非常漂亮的例子,说明期望是让整个优化问题有意义的前提。

有限步与无限步目标并列,以及悬崖公路例子说明期望关于策略参数是光滑的
期望为什么至关重要。图里是一条悬崖边的盘山公路:留在路上得 $+1$,掉下悬崖得 $-1$。奖励函数 $r(x)$ 作为「车的横向位置 $x$」的函数是不光滑的——一个阶跃。但如果策略是「以概率 $\theta$ 掉下去」,那么期望奖励 $\E_{\pi_\theta}[r(x)]$ 作为 $\theta$ 的函数是光滑的(这里甚至是线性的)。
推导

把这个例子算干净。设车的横向位置为 $x$,奖励是一个阶跃函数:

$$ r(x)=\begin{cases}+1,& x \text{ 在路面上}\\ -1,& x \text{ 已经越过悬崖边}\end{cases} $$

这个 $r$ 关于 $x$ 既不连续也不可导,在悬崖边处导数不存在(或者说处处为 0 加一个 Dirac 冲激)。如果我们直接对「某一次的结果」做梯度上升,梯度要么是 0(离边缘远时,微调方向盘不改变结果),要么是无穷(正好在边缘上)。这样的目标根本没法用梯度方法优化。

现在引入随机策略。设策略以概率 $\theta$ 输出「掉下去」的动作,以概率 $1-\theta$ 输出「留在路上」:

$$ \pi_\theta(a=\text{fall})=\theta $$

那么期望奖励是

$$ \E_{\pi_\theta}\big[r(x)\big]=\theta\cdot(-1)+(1-\theta)\cdot(+1)=1-2\theta $$

这是一个关于 $\theta$ 的光滑(这里是线性)函数,导数恒为 $-2$。梯度信息明确地告诉你:把 $\theta$ 调小。奖励本身的不连续性被期望「抹平」了。

核心结论

期望运算把一个关于随机变量的、可能极度不光滑的函数,变成了一个关于分布参数的光滑函数。这是所有基于梯度的强化学习方法(策略梯度、actor-critic、乃至用 RL 微调语言模型)能够工作的根本原因——也解释了为什么 RL 里的策略通常是随机的:随机性不只是为了探索,它还是让目标可导的技术手段。

5.1 这个观察的三个推论

推论一:RL 能处理不可微的奖励。 这是 RL 相对于「直接对目标做反向传播」的最大优势。奖励可以是「游戏是否获胜」(0/1)、「代码是否通过单元测试」(0/1)、「人类标注员是否更喜欢这个回答」(离散偏好)。这些量对模型参数没有梯度,但它们的期望有。用 RL 微调大语言模型(RLHF)之所以成立,用的正是这一条。

推论二:光滑性来自分布,不是来自奖励。 所以需要 $\pi_\theta$ 对 $\theta$ 可微,且是真正的分布(不能是确定性的 $\delta$ 函数)。如果策略是确定性的 $a=f_\theta(s)$,期望就退化成 $r(f_\theta(s))$,不光滑性又回来了。这就是为什么策略梯度类方法要求随机策略;而确定性策略梯度(DPG/DDPG)必须另辟蹊径——它借助 $Q$ 函数的可微性,把 $\nabla_\theta Q(s,f_\theta(s))$ 拿来当梯度,这已经不是同一套推导了。

推论三:期望也带来了新麻烦。 我们能优化期望,但我们无法直接计算期望——只能用有限个样本去估计它。这就引出了整个 RL 领域的核心矛盾:偏差-方差权衡。用 $N$ 条轨迹估计期望,标准误差是 $O(1/\sqrt N)$;而回报的方差随 horizon $H$ 增长(大致是 $O(H^2)$ 量级,因为回报是 $H$ 项之和)。这意味着长任务上策略梯度的信噪比会非常糟糕,第 5、6 讲会花大量篇幅对付它。

直觉

还有一个常被忽略的实践意义:期望目标意味着我们对风险是中性的。一个「90% 概率拿 0 分、10% 概率拿 100 分」的策略,和一个「100% 拿 10 分」的策略,在标准 RL 目标下完全等价。这在自动驾驶、医疗这类场景里显然不合适——你不会接受 1% 概率撞车换取平均速度更快。处理这类需求需要风险敏感 RL(优化 CVaR、方差惩罚等),本课不涉及,但值得记住标准公式里藏着这个假设。

6. RL 算法的解剖:一个贯穿全课的三步循环

接下来是本讲最有「地图」价值的部分。Levine 给出一个抽象框架,本课后面二十讲的每一个算法都能塞进这个框架里:

强化学习算法的三步循环:生成样本、拟合模型或估计回报、改进策略
RL 算法的通用骨架。橙色框「生成样本」= 跑当前策略与环境交互,收集轨迹;绿色框「拟合模型 / 估计回报」= 用这批数据学点什么(一个值函数、一个环境模型,或者仅仅算一下回报的均值);蓝色框「改进策略」= 用绿色框的产物更新 $\theta$。然后回到橙色框,循环往复。

三个框各自可以填不同的东西,填法的组合就构成了不同的算法族。先看两个具体实例。

6.1 实例一:最朴素的策略梯度

三步循环的第一个实例:用样本均值估计目标 J(theta),再对 theta 做梯度上升
最简单的填法。绿色框只做一件极其廉价的事:用样本均值估计目标 $J(\theta)=\E_\pi\left[\sum_t r_t\right]\approx\frac{1}{N}\sum_{i=1}^{N}\sum_t r_t^i$,也就是把 $N$ 条轨迹的总回报平均一下。蓝色框做梯度上升 $\theta\leftarrow\theta+\alpha\nabla_\theta J(\theta)$。右上角的曲面示意了参数空间中的回报地形与几条上升路径。

这里的 $J(\theta)$ 就是第 3 节写的目标函数。绿色框的「拟合模型」在这个实例里退化成了「算个平均数」——一行代码。真正的难点在蓝色框:$\nabla_\theta J(\theta)$ 怎么算?前面说过,$\theta$ 藏在分布里,而且分布里有未知的环境转移。这个问题的答案(log-derivative trick)就是下一讲的全部内容。

6.2 实例二:靠反向传播做 RL

三步循环的第二个实例:学习环境动力学模型 f_phi,再通过它反向传播训练确定性策略
完全不同的填法。绿色框学一个动力学模型 $f_\phi$,使得 $s_{t+1}\approx f_\phi(s_t,a_t)$——这是一个标准的监督回归问题,输入 $(s_t,a_t)$ 输出 $s_{t+1}$。蓝色框则把 $f_\phi$ 和 $r$ 串成一条可微的计算图,直接反向传播到策略参数上,训练确定性策略 $\pi_\theta(s_t)=a_t$。

这个思路值得展开一下,因为它揭示了 model-based RL 的本质。如果我们知道 $f_\phi$ 和 $r$,且两者都可微,那么整条轨迹就是一个巨大的可微计算图:

$$ s_1\xrightarrow{\pi_\theta} a_1\xrightarrow{f_\phi} s_2\xrightarrow{\pi_\theta}a_2\xrightarrow{f_\phi}s_3\to\cdots $$

总回报 $\sum_t r(s_t,a_t)$ 是这个图的输出,对 $\theta$ 求导就是标准的时序反向传播(BPTT)。这在概念上极其简洁——RL 变成了一个普通的深度学习问题。但实践中它非常脆弱,原因和训练很深的 RNN 一样:梯度沿时间维度连乘,会指数爆炸或消失;而且模型误差也会沿时间累积,策略很容易学会「利用模型的错误」(在真实世界不成立的作弊路径)。第 10–12 讲会专门讲怎么把它做对。

6.3 哪一步贵?

三步循环各步骤的计算代价对比:真实世界采样只能 1 倍实时,模型训练昂贵,估计回报廉价
代价分析。左边红框:在真实机器人/汽车/电网上采样,速度锁死在 1 倍实时——除非发明时间旅行;快速仿真器则可以到 10000 倍实时。右上:算样本均值「trivial, fast」;右中:训练一个神经网络动力学模型「expensive」;右下:一次梯度更新很便宜,而通过模型反向传播则中等偏贵。
核心结论

哪一步是瓶颈,完全取决于你的场景,而这决定了你该选哪类算法。

  • 真机器人、真车、真电网、真用户:采样贵到离谱。此时应该不惜一切代价省样本——用 model-based 或 off-policy 方法,哪怕它们每步计算量大 100 倍。
  • MuJoCo、Atari、围棋自对弈这类快仿真:采样几乎免费。此时简单、稳定、易调的 on-policy 方法(PPO)反而更省你的时间。

这正是第 9 节要讲的「采样效率 ≠ 墙钟时间」的前身。

6.4 把骨架写成代码

为了让这个循环不停留在框图层面,下面给出一个能真正跑起来的骨架。它把三步循环显式地写出来,绿色框和蓝色框留成可替换的函数——后面每一讲学到新算法,本质上都只是替换这两个函数。

import numpy as np
import torch, torch.nn as nn

class GaussianPolicy(nn.Module):
    """连续动作的高斯策略: a ~ N(mu_theta(s), exp(log_std)^2)"""
    def __init__(self, obs_dim, act_dim, hidden=64):
        super().__init__()
        self.mu = nn.Sequential(
            nn.Linear(obs_dim, hidden), nn.Tanh(),
            nn.Linear(hidden, hidden), nn.Tanh(),
            nn.Linear(hidden, act_dim))
        self.log_std = nn.Parameter(torch.zeros(act_dim))

    def dist(self, obs):
        return torch.distributions.Normal(self.mu(obs), self.log_std.exp())

    def act(self, obs_np):
        with torch.no_grad():
            a = self.dist(torch.as_tensor(obs_np, dtype=torch.float32)).sample()
        return a.numpy()


# ---------- 橙色框:生成样本(跑策略) ----------
def collect_trajectories(env, policy, n_traj, max_len):
    batch = []
    for _ in range(n_traj):
        obs, _ = env.reset()
        obs_l, act_l, rew_l = [], [], []
        for _t in range(max_len):
            a = policy.act(obs)
            nxt, r, term, trunc, _ = env.step(a)
            obs_l.append(obs); act_l.append(a); rew_l.append(r)
            obs = nxt
            if term or trunc:
                break
        batch.append(dict(obs=np.array(obs_l, dtype=np.float32),
                          act=np.array(act_l, dtype=np.float32),
                          rew=np.array(rew_l, dtype=np.float32)))
    return batch


# ---------- 绿色框:估计回报 / 拟合模型 ----------
def estimate_return(batch):
    """最朴素的填法:J(theta) 的蒙特卡洛估计 = 各轨迹总回报的平均"""
    return float(np.mean([traj["rew"].sum() for traj in batch]))


# ---------- 蓝色框:改进策略 ----------
def improve_policy(policy, optimizer, batch):
    """占位:具体形式由算法决定(第 5 讲填入策略梯度)"""
    raise NotImplementedError


# ---------- 三步循环 ----------
def rl_loop(env, policy, n_iters=200, n_traj=32, max_len=1000, lr=1e-3):
    optimizer = torch.optim.Adam(policy.parameters(), lr=lr)
    for it in range(n_iters):
        batch = collect_trajectories(env, policy, n_traj, max_len)   # 橙
        J_hat = estimate_return(batch)                               # 绿
        improve_policy(policy, optimizer, batch)                     # 蓝
        print(f"iter {it:4d}  avg return = {J_hat:8.2f}")

注意 estimate_return 目前只是打印用的诊断量,并没有参与梯度计算——因为 J_hat 是一个 Python 浮点数,早就和计算图断开了。「怎样构造一个其梯度恰好等于 $\nabla_\theta J(\theta)$ 的损失函数」是下一讲要解决的核心工程问题。

7. 值函数与 Q 函数:把嵌套期望打包

7.1 动机:期望套期望套期望

把 RL 目标按时间展开写成条件期望的嵌套形式:

$$ \E_{\tau\sim p_\theta(\tau)}\!\left[\sum_{t=1}^{H}r(s_t,a_t)\right] =\E_{s_1\sim p(s_1)}\Big[\E_{a_1\sim\pi(a_1|s_1)}\big[r(s_1,a_1)+\E_{s_2\sim p(s_2|s_1,a_1)}\big[\E_{a_2\sim\pi(a_2|s_2)}[\,\cdots\,]\big]\big]\Big] $$

这是一个深度为 $2H$ 的期望嵌套:状态期望、动作期望、状态期望、动作期望……交替出现。直接对付它没有希望。但仔细看会发现一个结构:最外层的 $s_1$ 和 $a_1$ 之后的那一大坨,只依赖于 $(s_1,a_1)$。如果我们能给这一大坨起个名字、并且知道它的值,问题就一下子简单了。

RL 目标的嵌套期望展开,以及「如果我们知道内层那部分会怎样」的提问引出 Q 函数
Q 函数是怎么被「发明」出来的。中间那条大括号圈住的就是「从 $(s_1,a_1)$ 出发之后的全部期望累积奖励」,把它命名为 $Q(s_1,a_1)$。于是整个目标塌缩成 $\E_{s_1}\big[\E_{a_1\sim\pi}[Q(s_1,a_1)|s_1]\big]$。最下面一行是关键的实用价值:如果 $Q(s_1,a_1)$ 已知,改进 $\pi_\theta(a_1|s_1)$ 就变得非常容易——直接令 $\pi(a_1|s_1)=1$ 当且仅当 $a_1=\argmax_{a_1}Q(s_1,a_1)$。

7.2 定义

核心结论

Q 函数(Q-function / action-value function):在状态 $s_t$ 采取动作 $a_t$,其后一直遵循策略 $\pi$ 所能获得的期望累积奖励。

$$ Q^\pi(s_t,a_t)=\sum_{t'=t}^{H}\E_{\pi_\theta}\big[r(s_{t'},a_{t'})\,\big|\,s_t,a_t\big] $$

值函数(value function / state-value function):在状态 $s_t$,遵循策略 $\pi$ 所能获得的期望累积奖励。

$$ V^\pi(s_t)=\sum_{t'=t}^{H}\E_{\pi_\theta}\big[r(s_{t'},a_{t'})\,\big|\,s_t\big] $$
Q 函数与值函数的正式定义,以及 V 是 Q 关于策略的期望、RL 目标是 V 在初始状态分布下的期望
两个定义并列。注意上标 $\pi$:它们都是关于某个特定策略定义的,换个策略这两个函数就变了。最下面两行给出了它们之间以及与 RL 目标的关系。

两者的关系一目了然——$V$ 就是 $Q$ 关于策略的动作期望:

$$ V^\pi(s_t)=\E_{a_t\sim\pi(a_t|s_t)}\big[Q^\pi(s_t,a_t)\big] $$

而 RL 目标本身就是 $V^\pi$ 在初始状态分布下的期望:

$$ \E_{\tau\sim p_\theta(\tau)}\!\left[\sum_t r(s_t,a_t)\right]=\E_{s_1\sim p(s_1)}\big[V^\pi(s_1)\big] $$
推导

还有一个同样重要的关系是Bellman 一致性方程,它把 $Q$ 用「一步奖励 + 下一步的 $V$」表达出来。从定义出发拆开第一项:

$$ \begin{aligned} Q^\pi(s_t,a_t)&=r(s_t,a_t)+\sum_{t'=t+1}^{H}\E_{\pi_\theta}\big[r(s_{t'},a_{t'})\mid s_t,a_t\big]\\[2pt] &=r(s_t,a_t)+\E_{s_{t+1}\sim p(\cdot|s_t,a_t)}\left[\sum_{t'=t+1}^{H}\E_{\pi_\theta}\big[r(s_{t'},a_{t'})\mid s_{t+1}\big]\right]\\[2pt] &=r(s_t,a_t)+\E_{s_{t+1}\sim p(\cdot|s_t,a_t)}\big[V^\pi(s_{t+1})\big] \end{aligned} $$

第二个等号用了全期望公式(对 $s_{t+1}$ 做条件化),第三个等号用了马尔可夫性——给定 $s_{t+1}$,未来与 $(s_t,a_t)$ 无关,所以内层期望正好是 $V^\pi(s_{t+1})$ 的定义。把 $V^\pi(s)=\E_{a\sim\pi}[Q^\pi(s,a)]$ 代进去还可得

$$ Q^\pi(s_t,a_t)=r(s_t,a_t)+\E_{s_{t+1}}\Big[\E_{a_{t+1}\sim\pi}\big[Q^\pi(s_{t+1},a_{t+1})\big]\Big] $$

这个递推关系是第 6 讲 actor-critic、第 7–8 讲 Q-learning 的全部基础:它把「估计一个长期量」变成了「让一个函数满足一个一步的自洽条件」。

7.3 用它们改进策略的两个思路

使用 Q 函数与值函数改进策略的两个思路:贪心改进与提高优势动作的概率
两个思路,对应后面两大算法族。思路 1 是贪心改进,构造确定性的新策略 $\pi'$,这条路通向 Q-learning / DQN;思路 2 是提高优于平均的动作的概率,这条路通向策略梯度 / actor-critic。Levine 说这两个想法「会一遍又一遍地回来」,一点也不夸张。

思路 1(策略改进 / policy improvement)。 若已有策略 $\pi$ 且知道 $Q^\pi(s,a)$,定义新策略

$$ \pi'(a\mid s)=\begin{cases}1,& a=\argmax_{a'} Q^\pi(s,a')\\ 0,&\text{否则}\end{cases} $$

则 $\pi'$ 至少不比 $\pi$ 差,通常更好。而且——这是最妙的地方——$\pi$ 是什么根本不重要。哪怕 $\pi$ 是一个随机乱动的策略,只要你能算出它的 $Q^\pi$,按上式贪心就一定能得到一个更好的策略。反复「评估 → 贪心」就是策略迭代(policy iteration)。

推导

为什么 $\pi'$ 一定不比 $\pi$ 差? 这就是经典的策略改进定理。首先由 $\pi'$ 的贪心定义,对任意 $s$:

$$ \E_{a\sim\pi'(\cdot|s)}\big[Q^\pi(s,a)\big]=\max_a Q^\pi(s,a)\ \ge\ \E_{a\sim\pi(\cdot|s)}\big[Q^\pi(s,a)\big]=V^\pi(s) $$

(最大值一定不小于任何加权平均。)然后反复代入 Bellman 方程展开:

$$ \begin{aligned} V^\pi(s_t)&\le \E_{a_t\sim\pi'}\big[Q^\pi(s_t,a_t)\big] = \E_{a_t\sim\pi'}\Big[r(s_t,a_t)+\E_{s_{t+1}}\big[V^\pi(s_{t+1})\big]\Big]\\[2pt] &\le \E_{a_t\sim\pi'}\Big[r(s_t,a_t)+\E_{s_{t+1}}\big[\E_{a_{t+1}\sim\pi'}[Q^\pi(s_{t+1},a_{t+1})]\big]\Big]\\[2pt] &\le\ \cdots\ \le\ \E_{\pi'}\left[\sum_{t'=t}^{H}r(s_{t'},a_{t'})\,\Big|\,s_t\right]=V^{\pi'}(s_t) \end{aligned} $$

每一步都在把「后面用 $\pi$」替换成「后面用 $\pi'$」,而每次替换都不减小值。递推到底就得到 $V^{\pi}(s)\le V^{\pi'}(s)$ 对所有 $s$ 成立。

思路 2(提高优势动作的概率)。 注意 $V^\pi(s)=\E_{a\sim\pi}[Q^\pi(s,a)]$ 说明 $V^\pi(s)$ 是 $Q^\pi(s,\cdot)$ 在当前策略下的平均值。于是:

$$ Q^\pi(s,a)\ \gt\ V^\pi(s)\quad\Longrightarrow\quad a\ \text{比当前策略的平均水平更好} $$

那就修改 $\pi(a|s)$,提高这些动作的概率。这个差值太重要了,以至于它有自己的名字——优势函数(advantage function):

$$ A^\pi(s,a)=Q^\pi(s,a)-V^\pi(s) $$

由定义立刻有 $\E_{a\sim\pi}[A^\pi(s,a)]=0$:在当前策略下,优势的平均值为零。这正是我们想要的「相对好坏」度量——它消除了状态本身好坏带来的偏移。第 6 讲会证明,把策略梯度里的回报换成 $A^\pi$ 能大幅降低方差,而这就是 actor-critic 的由来。

直觉

为什么优势比 Q 值本身更有用?想象一个状态 $s$,所有动作的 $Q$ 值都在 $1000$ 附近:$Q(s,a_1)=1002$,$Q(s,a_2)=998$。如果直接用 $Q$ 当权重去调整动作概率,两个动作的权重几乎一样,梯度信号被巨大的公共偏移淹没了。减掉 $V^\pi(s)=1000$ 之后,优势变成 $+2$ 和 $-2$,方向立刻清晰。基线(baseline)的全部意义就在这里:它不改变梯度的期望,却极大地降低了方差。

三步循环中,绿色框「拟合模型/估计回报」经常就是在拟合 Q 函数或值函数
回到三步循环,现在可以给绿色框一个更具体的答案:「拟合模型 / 估计回报」这一步,在绝大多数现代 RL 算法里就是拟合一个 $Q$ 函数或 $V$ 函数。值函数不是一个可选的技巧,它是这个循环的默认填充物。

8. RL 算法全景:四大类

目标只有一个:

$$ \theta^\star=\argmax_\theta\ \E_{\tau\sim p_\theta(\tau)}\!\left[\sum_t r(s_t,a_t)\right] $$

但通往它的路有四条。

RL 算法的四大分类:策略梯度、值函数方法、actor-critic、model-based
四大类算法的定义。注意区分 value-based 和 actor-critic:前者估计的是最优策略的值函数(而且没有显式策略,策略是从 $Q$ 里 argmax 出来的),后者估计的是当前策略的值函数,并用它去改进一个显式的策略网络。
类别绿色框做什么蓝色框做什么有显式策略吗代表算法
策略梯度
policy gradient
算回报 $R_\tau=\sum_t r(s_t,a_t)$$\theta\leftarrow\theta+\alpha\nabla_\theta\E\left[\sum_t r\right]$有REINFORCE、NPG、TRPO、PPO
值函数方法
value-based
拟合 $V(s)$ 或 $Q(s,a)$(最优策略的)令 $\pi(s)=\argmax_a Q(s,a)$(不训练网络)无Q-learning、DQN、fitted value iteration
Actor-critic拟合当前策略的 $V^\pi$ 或 $Q^\pi$$\theta\leftarrow\theta+\alpha\nabla_\theta\E[Q(s_t,a_t)]$有A3C、SAC、DDPG、TD3
Model-based拟合转移模型 $p(s_{t+1}\mid s_t,a_t)$规划 / 反传 / 学值函数(三选一)不一定Dyna、MBPO、MuZero、iLQR

8.1 Model-based RL

Model-based RL 在三步循环中的位置:绿色框学转移模型,蓝色框有多种选择
Model-based RL 的绿色框非常明确:学 $p(s_{t+1}|s_t,a_t)$。但蓝色框被红圈标出来了,因为它有好几种截然不同的做法——这也是 model-based 这个词涵盖范围极广、内部差异极大的原因。
Model-based RL 中「改进策略」的三种做法:纯规划、反向传播到策略、用模型学值函数
红圈里的三条路。这张图基本就是第 10–12 讲的目录。
  1. 只用模型做规划,根本不要策略。 连续动作空间用轨迹优化 / 最优控制(trajectory optimization / optimal control)——本质上就是对动作序列做反向传播,代表方法是 iLQR、MPC、CEM;离散动作空间用离散规划,比如蒙特卡洛树搜索(MCTS),AlphaGo/MuZero 用的就是它。
  2. 把梯度反传到策略里。 就是 6.2 节讲的那条路,「需要一些技巧才能跑通」(Levine 原话)——主要是对付 BPTT 的梯度爆炸/消失和模型误差累积。
  3. 用模型学一个值函数。 若模型已知,可以直接做动态规划(dynamic programming)解 Bellman 方程;或者用模型生成模拟经验喂给一个 model-free 学习器——这就是 Dyna 的思想,现代版本是 MBPO。

8.2 值函数方法

值函数方法在三步循环中的位置:绿色框拟合 V 或 Q,蓝色框直接 argmax,不训练策略网络
值函数方法的循环。绿色框拟合 $V(s)$ 或 $Q(s,a)$,蓝色框「改进策略」这一步没有任何参数更新——策略就定义为 $\pi(s)=\argmax_a Q(s,a)$,它是 $Q$ 的一个函数,$Q$ 变了策略自动就变了。所以这类方法「没有显式策略」。

这是思路 1 的直接落地。它的巨大优势在于 off-policy:$Q^\star$(最优 $Q$)满足的 Bellman 最优方程

$$ Q^\star(s,a)=r(s,a)+\E_{s'\sim p(\cdot|s,a)}\Big[\max_{a'}Q^\star(s',a')\Big] $$

右边的期望只对环境转移取,完全不涉及采样用的策略。这意味着任何来源的 $(s,a,r,s')$ 四元组都能用来拟合 $Q^\star$——去年收集的数据、别人的数据、随机策略的数据统统可以。这就是经验回放(replay buffer)能存在的理论依据,也是 Q-learning 类方法样本效率高的根源。代价是稳定性:在深度网络下,Bellman 误差最小化不保证收敛(第 9 节详述);而且 $\max_{a'}$ 在连续动作空间里本身就是个难题。

8.3 直接策略梯度

策略梯度在三步循环中的位置:绿色框只算回报,蓝色框对目标做梯度上升
策略梯度的循环。绿色框最简单——只是把采样到的回报 $R_\tau=\sum_t r(s_t,a_t)$ 算出来;蓝色框直接对真实目标做梯度上升 $\theta\leftarrow\theta+\alpha\nabla_\theta\E\left[\sum_t r(s_t,a_t)\right]$。

这类方法的定位很特殊:它是唯一真正在对我们关心的目标做梯度上升的方法。这带来了最好的理论保证(在合适的学习率下必然收敛到局部最优),但也带来了最差的样本效率——因为一旦策略更新了,之前的样本就来自旧策略,严格来说不能再用了(on-policy)。

8.4 Actor-critic:把两者缝在一起

Actor-critic 在三步循环中的位置:绿色框拟合当前策略的值函数,蓝色框用它做策略梯度
Actor-critic 的循环。绿色框和值函数方法一样拟合 $V(s)$ 或 $Q(s,a)$,但拟合的是当前策略的值函数;蓝色框和策略梯度一样更新策略网络,但梯度里用的不再是采样回报,而是 critic 给出的 $Q(s_t,a_t)$(实际实现里通常用优势 $A^\pi$)。

直觉是这样的:策略梯度的方差主要来自「用一条采样轨迹的总回报去估计期望回报」。而 critic 是一个学出来的、平滑的函数逼近器,它把很多条轨迹的信息压缩进去了,用它替代单条采样回报能大幅降低方差——代价是引入了偏差(critic 拟合得不准)。Actor-critic 就是这条偏差-方差谱线上的一族方法:纯策略梯度是「零偏差、高方差」的一端,纯值函数方法是「高偏差、低方差」的另一端。第 6 讲会精确刻画这条谱线($n$-step return、GAE)。

常见误区

「Actor-critic 就是 policy gradient 加个 baseline」——不完全对。加 baseline(用 $V$ 减掉一个与动作无关的量)本身不引入偏差,纯粹降方差,那还是策略梯度。而 actor-critic 是用 critic 替换掉了回报估计本身(比如用 $r_t+V(s_{t+1})$ 代替 $\sum_{t'\ge t}r_{t'}$),这一步引入了 bootstrapping,是有偏的。两者的界限就在于:你有没有用 critic 去替代「未来奖励之和」这个采样量。

9. 权衡:为什么 RL 算法这么多

为什么有这么多 RL 算法:不同的权衡、不同的假设、不同设定下难易不同
三类原因。不同的权衡:采样效率、稳定性与易用性;不同的假设:环境是随机还是确定?动作空间是连续还是离散?任务是回合制还是无限时长?不同的东西在不同场景下难易不同:有时候策略比模型好表示,有时候反过来。

如果只有一个算法在所有维度上都最好,这门课就不用上二十讲了。现实是每一类方法都在某个维度上做了牺牲。下面逐个维度拆开。

9.1 采样效率与 on-policy / off-policy

采样效率(sample efficiency)的定义是:要得到一个足够好的策略,需要在环境里交互多少步?

采样效率的定义,以及 off-policy 与 on-policy 的区别
决定采样效率的最重要因素。Off-policy:不需要用当前策略生成的新样本,就能改进策略;On-policy:策略只要变了一点点,之前的样本就作废,必须重新采。右下角是最刺眼的地方——策略梯度做完一次梯度步,整批数据就全扔了。
核心结论

为什么策略梯度必须 on-policy?因为它的梯度是

$$ \nabla_\theta J(\theta)=\E_{\tau\sim p_\theta(\tau)}\big[\cdots\big] $$

期望是对 $p_\theta(\tau)$ 取的,下标 $\theta$ 是当前参数。用旧策略 $\theta_{\text{old}}$ 的样本去估计这个期望,得到的是 $\nabla J$ 在 $\theta_{\text{old}}$ 处的值,不是在 $\theta$ 处的值——这是有偏的。而 Q-learning 的目标 $Q^\star$ 满足的方程里根本没有出现策略分布,所以任何数据都能用。「目标里的期望是不是对当前策略取的」,就是 on-policy 与 off-policy 的分水岭。

各类 RL 算法在采样效率轴上的排序,从 model-based 最省样本到进化算法最费样本
采样效率光谱(从省样本到费样本)。model-based deep RL → off-policy Q 函数学习 → actor-critic 类 → on-policy 策略梯度 → 进化算法 / 无梯度方法。off-policy 与 on-policy 的分界线正好落在 actor-critic 附近(因为 actor-critic 既有 on-policy 版本如 A3C,也有 off-policy 版本如 SAC)。最后两句话是本节的点睛之笔。
算法族on/off-policy相对样本量为什么省 / 为什么费
Model-based deep RL
(Dyna、MBPO、MuZero)
off-policy最少每个转移样本都用于监督式地训练动力学模型,信息利用率最高;训好模型后可以在「想象」里无限采样
Off-policy Q 函数学习
(DQN、SAC 的 critic)
off-policy少Bellman 最优方程与行为策略无关,replay buffer 里的老数据可以反复使用
Actor-critic两者都有中等critic 可以 off-policy 复用数据,但 actor 的策略梯度部分通常需要较新的数据
On-policy 策略梯度
(REINFORCE、TRPO、PPO)
on-policy多每次更新后数据作废;PPO 靠重要性采样 + 裁剪把一批数据用几个 epoch,属于近似 on-policy
进化 / 无梯度算法
(CEM、CMA-ES、ES)
on-policy最多完全不利用轨迹的时序结构,只把「整个策略 → 一个标量分数」当黑箱来搜索,丢掉了每一步的信息
注意

幻灯片最后两句必须重读:「为什么还要用效率低的算法?」「墙钟时间不等于采样效率!」

采样效率衡量的是「需要多少环境交互」,但你真正在意的往往是「需要多少小时才能得到结果」。进化算法虽然要 100 倍的样本,但它完全并行、每步计算极廉价、几乎没有超参数需要调——在一个能开 10000 个并行仿真实例的集群上,它可能比 model-based 方法更快出结果。反过来,MBPO 在 MuJoCo 上样本效率是 SAC 的十几倍,但单步计算慢一个数量级,在快仿真里墙钟时间未必占优。只有当采样本身昂贵(真实机器人、真实用户)时,采样效率才等价于总耗时。

9.2 稳定性与收敛性

Levine 在这里问了一个初看很怪的问题:「这怎么会成为一个问题?」 监督学习里我们从来不担心「算法会不会收敛」——梯度下降就是梯度下降,学习率够小就单调下降。但 RL 里:

方法它实际在做什么优化收敛吗收敛到什么
Q-learning / 值函数拟合不是梯度下降,是不动点迭代(fixed point iteration)表格情形收敛;非线性函数逼近下没有保证好的情况下最小化 Bellman 误差;坏的情况下什么都不优化,甚至发散
Model-based RL最小化模型的拟合误差(监督学习)模型训练会收敛收敛到一个好模型 —— 但好模型不等于好策略
策略梯度真真正正的梯度上升,对象就是 $J(\theta)$ 本身标准 SGD 保证(局部最优)$J$ 的局部极大 —— 但往往是效率最低的
推导

为什么 Q-learning 不是梯度下降? 它的更新长这样:

$$ \phi\leftarrow\phi-\alpha\,\nabla_\phi\big(Q_\phi(s,a)-y\big)^2,\qquad y=r+\max_{a'}Q_{\phi}(s',a') $$

看起来像在最小化平方误差,但目标 $y$ 自己也依赖 $\phi$,而我们在求导时假装它不依赖(这叫「半梯度 semi-gradient」,实现上就是对 $y$ 做 detach())。所以这个更新不是任何一个固定损失函数的梯度。它真正在做的是迭代 Bellman 算子 $\mathcal{B}$:$Q\leftarrow \Pi\mathcal{B}Q$,其中 $\Pi$ 是往函数类上的投影。$\mathcal{B}$ 在 $\ell_\infty$ 范数下是 $\gamma$-收缩的,$\Pi$ 在 $\ell_2$ 下是非扩张的——两个在不同范数下的良性算子复合起来,可以不是收缩。这就是著名的「致命三要素(deadly triad):函数逼近 + bootstrapping + off-policy 数据」,三者同时出现时 Q-learning 可以发散。第 8 讲会给出具体的发散例子。

Model-based 的问题则更微妙:模型训练是标准监督学习,一定收敛;但你的模型是按「预测下一状态的均方误差」训的,不是按「用它规划出来的策略好不好」训的。一个在训练分布上误差很小的模型,可能在策略优化推向的新区域里错得离谱,而优化器恰恰会主动去寻找那些「模型预测收益很高但其实是幻觉」的区域。这叫 model exploitation,是 model-based RL 最核心的难题。

核心结论

这里有一个残酷的对偶:唯一有可靠收敛保证的方法(策略梯度)恰恰是样本效率最差的;样本效率最好的方法(model-based、off-policy Q)恰恰是最容易崩的。 这个张力贯穿整门课,也解释了为什么工业界大量使用 PPO——它不是最优的,但它是最不容易莫名其妙炸掉的。

9.3 假设与表示难度

假设维度谁需要它违反了会怎样
完全可观测(状态满足马尔可夫性)值函数方法、model-based 强依赖Bellman 方程失效;策略梯度相对更鲁棒,因为其推导未用马尔可夫性
连续 vs 离散动作Q-learning 需要 $\max_a Q$,离散才好算连续动作下 $\max_a$ 需要内层优化(DDPG 用一个 actor 网络近似它)
回合制 vs 无限时长纯策略梯度、model-based 常假设有限 horizon无限时长要用折扣或平均奖励形式(见第 4 节)
确定性 vs 随机环境一些轨迹优化方法假设确定性随机环境下开环规划严重次优,需要 MPC 反复重规划
策略易表示 vs 模型易表示决定选 model-free 还是 model-based例:叠积木的物理模型极难学,但「抓起来放上去」的策略很简单;反之,围棋的规则(模型)是已知且精确的,但最优策略极其复杂

最后这一行值得多说一句,因为它是选型时最实用的判据。Levine 举的例子是:想象一个装满水的杯子被打翻——模拟液体流动(模型)极难,但「别碰倒杯子」(策略)极简单。反过来,在围棋里模型完全已知且精确(就是规则),而最优策略复杂到人类几千年都没穷尽。所以围棋适合用 MCTS + 模型,而灵巧操作更适合直接学策略。先问自己「这个任务里,是策略更简单还是动力学更简单」,答案往往直接决定了该走哪条技术路线。

10. 具体算法清单与两个例子

把上面的分类落到具体名字上,就得到了本课后半程的目录。

类别算法一句话大致在第几讲
值函数方法Q-learning / DQN用神经网络拟合 $Q^\star$,配 replay buffer 和 target network7–8
时序差分学习(TD learning)用 bootstrapping 而非完整回报来更新值估计6–7
拟合值迭代(fitted value iteration)把动态规划的值迭代搬到函数逼近上7
策略梯度方法REINFORCE最基础的策略梯度,log-derivative trick 的直接产物5
自然策略梯度(natural policy gradient)用 Fisher 信息矩阵做预条件,梯度方向对参数化不敏感9
PPO用裁剪的重要性比值近似信赖域约束,工业界默认选择9
Actor-criticA3C异步并行的优势 actor-critic6
SAC(soft actor-critic)最大熵框架下的 off-policy actor-critic,连续控制的强基线6 / 19
Model-basedDyna(及 MBPO 等 Dyna 类方法)用学到的模型生成想象数据,喂给 model-free 学习器11–12
MuZero学一个「只需支持规划」的隐空间模型 + MCTS11–12

10.1 例子一:用 Q 函数玩 Atari

Atari 游戏上用 Q-learning 与卷积网络训练智能体
DQN 在 Atari 上的经典结果。输入是原始屏幕像素(叠若干帧以近似恢复马尔可夫性),卷积网络输出每个离散动作的 $Q$ 值,动作直接由 $\argmax_a Q(s,a)$ 给出——没有策略网络。这是 8.2 节「值函数方法」的教科书实例。

这个工作(Mnih et al., 2013)之所以成为深度 RL 的引爆点,是因为它第一次证明:同一套超参数、同一个网络结构,不做任何针对单个游戏的调整,就能在几十个 Atari 游戏上达到甚至超过人类水平。它把「函数逼近 + Q-learning」这个理论上不保证收敛的组合,用两个工程技巧(experience replay 打破样本相关性,target network 稳定回归目标)掰成了能用的东西。

10.2 例子二:用策略梯度学走路

用带广义优势估计的信赖域策略优化训练仿真人形机器人行走
连续控制的代表性结果(Schulman et al., 2016)。仿真人形机器人有几十个关节,动作是连续的力矩向量,$\argmax_a Q$ 在这里根本没法算——所以必须用显式策略。方法是 TRPO(信赖域策略优化)+ 值函数逼近 + GAE(广义优势估计),正是 8.4 节的 actor-critic 路线。

把两个例子并排看,四大分类的选型逻辑就清楚了:离散动作 + 像素输入 + 便宜仿真 → 值函数方法;连续高维动作 + 需要稳定训练 → 策略梯度 / actor-critic。而如果场景换成真实机器人、样本以「小时」计,那就该考虑 model-based 了。

本讲小结

速查表:本讲定义的所有记号

记号名称定义 / 含义
$s_t\in\mathcal{S}$状态满足马尔可夫性:给定 $s_t$,未来与过去独立
$a_t\in\mathcal{A}$动作智能体的输出,可离散可连续
$o_t\in\mathcal{O}$观测由 $p(o_t|s_t)$ 生成;观测序列一般不马尔可夫
$\pi_\theta(a|s)$策略参数为 $\theta$ 的条件分布,本课主要是神经网络
$p(s'|s,a)$、$\mathcal{T}$转移 / 转移算子环境动力学;作为算子它线性地作用在分布上
$r(s,a)$奖励函数$\mathcal{S}\times\mathcal{A}\to\R$,本讲假设已知
$\tau$轨迹$(s_1,a_1,\dots,s_H,a_H)$
$p_\theta(\tau)$轨迹分布$p(s_1)\prod_t \pi_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t)$
$p_\theta(s_t)$、$p_\theta(s_t,a_t)$状态 / 状态-动作边缘轨迹分布对其余变量的边缘化
$\mu_t$、$\mathcal{T}_\theta$边缘向量 / 增广链转移矩阵$\mu_{t+1}=\mathcal{T}_\theta\mu_t$,$\mu_t=\mathcal{T}_\theta^{t-1}\mu_1$
$\bar\mu$平稳分布$\mathcal{T}_\theta\bar\mu=\bar\mu$,即特征值 1 的特征向量
$Q^\pi(s_t,a_t)$Q 函数$\sum_{t'\ge t}\E_\pi[r(s_{t'},a_{t'})|s_t,a_t]$
$V^\pi(s_t)$值函数$\E_{a_t\sim\pi}[Q^\pi(s_t,a_t)]$;$\E_{s_1}[V^\pi(s_1)]$ 即 RL 目标
$A^\pi(s,a)$优势函数$Q^\pi(s,a)-V^\pi(s)$,满足 $\E_{a\sim\pi}[A^\pi]=0$

要点清单

  • 三个模型层级:Markov chain $\{\mathcal S,\mathcal T\}$ → MDP $\{\mathcal S,\mathcal A,\mathcal T,r\}$ → POMDP $\{\mathcal S,\mathcal A,\mathcal O,\mathcal T,\mathcal E,r\}$。固定策略后 MDP 退化为增广状态 $(s,a)$ 上的马尔可夫链。
  • 目标的三种等价写法:轨迹期望 $\E_{\tau\sim p_\theta(\tau)}\left[\sum_t r\right]$;边缘求和 $\sum_t\E_{p_\theta(s_t,a_t)}[r]$;线性代数 $\left[\sum_t\mathcal{T}_\theta^{t-1}\mu_1\right]^\top\vec r$。无限步时取时间平均,等于 $\bar\mu^\top\vec r$。
  • 平稳分布的论证:平稳 ⟺ $(\mathcal{T}_\theta-I)\bar\mu=0$ ⟺ $\bar\mu$ 是特征值 1 的特征向量;在遍历性条件下存在唯一,且收敛速度由谱隙决定。
  • 期望是可优化的前提:奖励可以是阶跃函数(掉崖 $-1$ / 不掉 $+1$),但 $\E_{\pi_\theta}[r]=1-2\theta$ 关于 $\theta$ 光滑。这是所有梯度型 RL 方法成立的根基,也是 RL 能处理不可微奖励(游戏胜负、人类偏好)的原因。
  • 三步循环:生成样本 → 拟合模型 / 估计回报 → 改进策略。四大算法族只是这三个框的不同填法。
  • $Q$ 与 $V$ 的两个用法:贪心改进(通向 Q-learning,改进定理保证不变差);提高优势为正的动作的概率(通向策略梯度 / actor-critic)。
  • 核心权衡:off-policy ⟹ 样本效率高;策略梯度是唯一真正做梯度上升的方法,稳定但费样本;值函数方法是不动点迭代,非线性下无收敛保证;model-based 模型一定收敛,但好模型 ≠ 好策略。采样效率 ≠ 墙钟时间。
  • 选型判据:采样贵不贵?动作连续还是离散?策略好表示还是模型好表示?这三问基本决定了技术路线。
直觉

如果这一讲只能记住一句话:强化学习就是在「由策略诱导出的轨迹分布」上做期望最大化,而所有算法的差别,都在于它们如何绕开「无法直接计算这个期望及其梯度」这个障碍。 策略梯度用采样直接估计梯度;值函数方法用 Bellman 递推把长期期望拆成一步;model-based 干脆把环境学下来自己算。后面每学一个新算法,都可以回来问一句:它在三步循环里填的是什么?它付出了什么代价?

延伸阅读

本讲直接提到的论文

四大算法族的入口论文

打基础的教材与综述

  • Sutton & Barto, Reinforcement Learning: An Introduction(第 2 版,2018,作者官网免费)— 第 3 章讲 MDP 与值函数,第 4 章讲动态规划与策略改进定理,正好覆盖本讲第 2、4、7 节的内容,且推导更细。
  • Puterman, Markov Decision Processes: Discrete Stochastic Dynamic Programming(1994)— 想把平稳分布、遍历性、平均奖励准则这些理论细节搞扎实,看这本;本讲第 4 节的正则性条件在这里有完整处理。
  • An Introduction to Deep Reinforcement Learning (François-Lavet et al., 2018) — 一篇结构清晰的综述,可以当作本讲「算法全景图」的文字版扩写。

关于部分可观测