核心问题
强化学习要求智能体从经验中改进自己的行为,而没有一个监督者在每个状态告诉它”正确答案”是哪个动作。策略梯度对此给出的回答是:把策略本身当作被优化的对象,而不是先单独解决价值估计问题,再事后从价值里提取行为。贯穿本笔记的核心问题是:
智能体如何更新策略
πθ(a∣s)
才能让通向更高未来回报的动作变得更可能被采样到?
这个问题听起来很简单,但背后藏着两个真正的困难。第一,策略赋予的是动作的概率,而不是直接赋予那些动作最终带来的回报,所以这里并没有一个现成的损失函数可以直接求导。第二,θ 的一个微小变化,与它最终引起的期望回报变化之间,中间隔着整条未来状态、动作与奖励构成的轨迹,而不是一步就能算出的单一数字。本笔记接下来的内容,本质上就是在回答如何把这条连接关系变得精确、并且可微。
定义策略、轨迹与回报
策略 πθ(a∣s) 就是被优化的对象:一个以 θ 为参数、在给定状态下输出动作条件分布的函数,行为完全由 θ 控制。
πθ(a∣s)让这个策略在环境中 rollout 一整个回合,得到的就是一条轨迹:从回合开始到结束所经历的完整状态-动作序列。
τ=(s1,a1,s2,a2,…,sT,aT,sT+1)每条轨迹都带有一个轨迹回报,也就是沿着这条轨迹收集到的(折扣)奖励总和。
R(τ)由于轨迹本身是随机的(它既取决于策略恰好采样出了哪些动作,也取决于环境恰好如何响应),真正值得优化的量,并不是某一次具体 rollout 的回报,而是期望轨迹回报:对 πθ 下所有可能的 rollout 取平均之后的量。
J(θ)=Eτ∼pθ[R(τ)]
与基于价值方法的关系
在正式展开推导之前,先把策略梯度放到它所偏离的那一整个方法家族里对照一下会更有帮助。基于价值的方法(动态规划、蒙特卡洛控制、时序差分学习)都是先估计一个状态或状态-动作对有多”好”,然后才从这些估计值里事后导出行为。形式上,它们学习的是这样的价值量:
Qπ(s,a)
再事后从中提取策略,通常是对学到的价值贪心地选择动作。
策略梯度方法完全跳过了这个中间步骤。它不是先学习”这个动作有多好”,再把这个判断转换成决策规则,而是直接对决策规则本身参数化,并直接调整它的参数:
πθ(a∣s)
关键的转变在于:从”估计哪个动作有价值”变成”根据回报或 advantage,直接增大或减小被采样动作的概率”。这并不只是两种同样好的做法之间的风格选择,下面第 1 节会具体讲清楚,基于价值的提取方式究竟会遇到哪些实际问题,而直接对策略参数化又是如何绕开这些问题的。
推导
这里 J(θ) 是策略 πθ 的期望回报,∇θJ(θt) 是期望回报关于参数 θ 在时间步 t 处的梯度。梯度上升的目标是沿着正梯度方向迭代更新参数,从而最大化期望回报。
1. 目标、记号与直觉
动机
在确定性策略中,策略把状态直接映射到一个动作:
μθ:S→A.
但策略梯度方法通常从随机性策略出发:
πθ(a∣s),
它把一个状态映射到动作上的一个概率分布。采样出的动作记作:
at∼πθ(⋅∣st),
这里的点号表示动作变量是留空的:给定状态 st,πθ(⋅∣st) 是所有可能动作上的完整概率分布。
在实践中,πθ 可以由一个神经网络、一个线性函数近似器,或者其他带参数的控制器来实现。关键点在于:θ 控制着策略的行为,即使这个策略不是一张简单的表。
这一点很重要,因为策略梯度并不先更新一张价值表,而是直接更新那些给采样动作赋予概率的策略参数。
更早的动态规划、蒙特卡洛和时序差分方法,通常学习的是像这样的价值估计:
Vπ(s)orQπ(s,a).
在表格型方法中,这些价值会为每个状态或状态-动作对显式存储。例如,一个表格型 Q-learning 风格的更新形如:
Q(st,at)←Q(st,at)+α[rt+1+γa′maxQ(st+1,a′)−Q(st,at)].
这一类方法在概念上很重要,但有实际的局限性。只有当状态和动作空间小到可以枚举时,表格型价值函数才是自然的选择。一旦状态变成高维观测、图像、视频或连续特征向量,为每一个可能的 (s,a) 对维护单独的价值就变得不可行了。
即便 Q(s,a) 可以用一个函数来近似,策略通常仍然是间接导出的,例如通过:
a∗(s)=argamaxQ(s,a).
这种间接提取在连续动作空间中也会很别扭,因为在每个决策步计算 argmaxaQ(s,a) 可能需要求解一个困难的优化问题。当我们想要的行为本身就是一个随机性策略而不是确定性贪心动作时,这种做法也不自然。
策略梯度直接对策略参数化并优化其参数,从而解决了这个问题:
θt+1=θt+α∇θJ(θt).
这是在期望回报目标 J(θ) 上做梯度上升,形式上类似于神经网络的梯度下降,
θt+1=θt−α∇θL(θt),
但符号不同,因为监督学习通常是在最小化一个损失 L(θ),而策略梯度是在最大化期望回报 J(θ)。
顾名思义,策略梯度是一种寻找最优策略 πθ 的 on-policy 方法,θ 是策略的参数向量。这仍然是一个优化问题,但我们并不是直接对一个监督损失关于某个 ground-truth 标签求导,而是在当前策略采样出的轨迹下,最大化期望回报。
定义马尔可夫决策过程
考虑一个由元组
(S,A,P,R,γ)定义的完整 MDP 系统,其中:
- S 是状态空间;
- A 是动作空间;
- P 是转移概率;
- R 是奖励函数;
- γ 是折扣因子。
单步奖励函数 R 可以写作:
R(s,a)=E[Rt+1∣st=s,at=a]
当动作由策略采样得到,
at∼πθ(⋅∣st),
观测到的奖励就通过被采样的动作和下一步的环境转移变成了随机量。奖励函数本身并不直接被 θ 参数化;θ 改变的是动作上的分布,进而改变轨迹上的分布。
关键点在于:at 是一个随机变量,单步奖励函数通常并不能直接对 θ 求导。
定义回报与轨迹回报
回报 Gt 定义为从时间步 t 到该回合结束的折扣奖励总和。一种常见的约定是:
Gt=k=t∑T−1γk−tRk+1=Rt+1+γRt+2+γ2Rt+3+…+γT−t−1RT回忆轨迹 τ=(s1,a1,s2,a2,…,sT,aT,sT+1)。这里把最后一个状态也包含进来,是因为转移项 p(st+1∣st,at) 会出现在轨迹概率中;有些文献会在简写记号里省略它。
由此可以把一条轨迹的回报定义为:
R(τ)=t=1∑Tγt−1Rt=G0
综上,直观来说(用 → 表示因果关系):
θ→πθ(st)→at→st+1,Rt+1→τ→R(τ) or Gt
2. 轨迹概率
一条轨迹并不是提前固定好的。它是通过在环境中 rollout 当前策略 πθ 采样得到的,所以我们记作:
τ∼pθ
其中 pθ 是由策略和环境动态共同诱导出的轨迹分布。
定义轨迹分布
这里,pθ 表示整个轨迹分布,而 pθ(τ) 表示赋给某一条具体轨迹的概率质量或密度。轨迹概率可以分解为:
pθ(τ)=p(s1)πθ(a1∣s1)p(s2∣s1,a1)πθ(a2∣s2)p(s3∣s2,a2)⋯=p(s1)t=1∏Tπθ(at∣st)p(st+1∣st,at).这里,p(s1) 和 p(st+1∣st,at) 来自环境本身。策略项 πθ(at∣st) 才是被 θ 控制的部分。
这一点很重要,因为它说明期望回报 J(θ) 是通过轨迹分布成为 θ 的函数的,而不是直接通过奖励函数。期望回报目标为:
J(θ)=Eτ∼pθ[R(τ)]=τ∑pθ(τ)R(τ).
关键点在于:τ 是随机的,因而 R(τ) 是一个随机回报。但是对固定的参数向量 θ 而言,J(θ) 并不是一个随机变量;它是一个确定的标量目标:策略 πθ 的平均回报。
从优化的角度看,策略梯度试图求解:
θ∗∈argθmaxJ(θ).
在实践中,我们并不知道如何枚举所有可能的轨迹,环境动态通常也无法对智能体的参数求导。这里的技巧是:从采样到的轨迹中估计 J(θ) 的梯度,然后应用随机梯度上升:
θk+1=θk+α∇θJ(θk).
假设正则性条件
下面的推导假设 R(τ) 不直接被 θ 参数化,环境动态 p(st+1∣st,at) 不依赖于 θ,并且轨迹分布在被采样到的支撑集上对 θ 是可微的。它还假设我们可以交换梯度与求和(或期望)的顺序:
∇θτ∑pθ(τ)R(τ)=τ∑R(τ)∇θpθ(τ).对于 log-derivative 技巧,我们还需要在求值 logpθ(τ) 的轨迹上有 pθ(τ)>0。
3. Log-Derivative 技巧
我们从求和形式的目标出发:
J(θ)=τ∑pθ(τ)R(τ).
关于 θ 求梯度:
∇θJ(θ)=∇θτ∑pθ(τ)R(τ).
由于奖励函数被视为与 θ 无关,梯度作用在轨迹概率上:
∇θJ(θ)=τ∑R(τ)∇θpθ(τ).
到这一步,表达式还不太方便,因为它要求我们对一整条轨迹的概率求导。log-derivative 技巧用一个正的、可微的函数 fθ(x) 重写了这一项。
引理Log-Derivative(Score-Function)恒等式
对一个正的、关于 θ 可微的函数 fθ(x),
∇θfθ(x)=fθ(x)∇θlogfθ(x).
请仔细看左边这个式子。结果 x 是固定的;只有参数 θ 在变动。所以 ∇θfθ(x) 的意思是:
如果我们稍微改变一下 θ,赋给这个固定结果 x 的概率或密度会怎么变?
它不是关于 x 的导数。在策略梯度中,x 之后会变成一条被采样的轨迹 τ,我们要问的是:当前的策略参数如何改变赋给这条轨迹的概率。
证明Log-Derivative 恒等式的证明
对标量参数 θ,链式法则给出:
∂θ∂logfθ(x)=fθ(x)1∂θ∂fθ(x).对向量参数 θ=(θ1,…,θd),同样的结论逐分量成立:
∂θj∂logfθ(x)=fθ(x)1∂θj∂fθ(x),j=1,…,d.把这些偏导数堆叠回一个梯度向量:
∇θlogfθ(x)=fθ(x)1∇θfθ(x).两边同乘 fθ(x) 得到:
∇θfθ(x)=fθ(x)∇θlogfθ(x).条件 fθ(x)>0 存在的唯一原因是 logfθ(x) 必须有定义。在概率场景下,这意味着我们只在采样结果具有非零概率或密度的支撑集上应用这个恒等式。
推论轨迹概率上的 Log-Derivative 技巧
将引理应用到 fθ(x)=pθ(τ) 上:
∇θpθ(τ)=pθ(τ)∇θlogpθ(τ).
这里 τ 在求导中被当作一条固定的采样轨迹。我们并不是在对已经实现的状态和动作本身求导,而是在对”当前策略赋给观测到这整条轨迹的概率有多大”这件事求导。
定理策略梯度恒等式(Score-Function 形式)
∇θJ(θ)=Eτ∼pθ[R(τ)∇θlogpθ(τ)].
证明
∇θJ(θ)=τ∑R(τ)pθ(τ)∇θlogpθ(τ)=τ∑pθ(τ)R(τ)∇θlogpθ(τ)=Eτ∼pθ[R(τ)∇θlogpθ(τ)].第一行把上面的推论代入 ∇θJ(θ)=∑τR(τ)∇θpθ(τ);最后一行就是期望的定义。
这就是核心的策略梯度恒等式。它把一个关于期望回报的优化问题,转化成了一个 score function 的期望,即 ∇θlogpθ(τ)。用优化的语言来说,这给了我们一个随机梯度估计量:从当前策略采样轨迹,计算回报,计算被采样轨迹的 score,然后把 θ 沿着估计出的上升方向移动。
4. 消去环境项
这里的”展开”不是指泰勒展开,而是指代入上一节中分解好的轨迹概率,然后使用对数乘积的规则。
命题轨迹概率的 Score 可以归约为策略的对数概率
∇θlogpθ(τ)=t=1∑T∇θlogπθ(at∣st).
证明
回忆轨迹概率:
pθ(τ)=p(s1)t=1∏Tπθ(at∣st)p(st+1∣st,at).两边取 log:
logpθ(τ)=log[p(s1)t=1∏Tπθ(at∣st)p(st+1∣st,at)]=logp(s1)+t=1∑Tlog[πθ(at∣st)p(st+1∣st,at)]=logp(s1)+t=1∑Tlogπθ(at∣st)+t=1∑Tlogp(st+1∣st,at).这里用到的代数运算只有:
log(xy)=logx+logy,logt=1∏Txt=t=1∑Tlogxt.关于 θ 求梯度:
∇θlogpθ(τ)=∇θlogp(s1)+t=1∑T∇θlogπθ(at∣st)+t=1∑T∇θlogp(st+1∣st,at).环境项不依赖于 θ,所以它们的梯度为零:
∇θlogp(s1)=0,∇θlogp(st+1∣st,at)=0.因此:
∇θlogpθ(τ)=t=1∑T∇θlogπθ(at∣st).
推论实用的策略梯度公式
把上面的命题代入策略梯度恒等式,得到:
∇θJ(θ)=Eτ∼pθ[R(τ)t=1∑T∇θlogπθ(at∣st)].
这正是策略梯度之所以实用的原因:我们不需要对环境的转移模型求导,只需要当前策略赋给它实际采样出的动作的对数概率。
5. 采样梯度估计
上面的期望在大多数环境中仍然无法精确计算。
算法蒙特卡洛策略梯度估计
通过 rollout 当前策略采样 N 条轨迹,
τ(i)∼pθ,i=1,…,N,用样本均值近似期望:
∇θJ(θ)=N1i=1∑NR(τ(i))t=1∑T∇θlogπθ(at(i)∣st(i)).然后执行梯度上升:
θk+1=θk+α∇θJ(θk).
这就是最基本的 REINFORCE 思路:出现在高回报轨迹中的动作会被更强地强化。由于策略参数化和动作上的归一化,提高某些采样动作的概率也会改变分配给其他动作的概率质量。
所以其数学本质与许多随机优化算法是一样的:
- 定义一个目标 J(θ);
- 推导一个梯度恒等式;
- 用样本代替真实期望;
- 用随机梯度上升更新参数。
6. 核心推导之后:信用分配
上面的推导给出了最”干净”的形式:
R(τ)t=1∑T∇θlogπθ(at∣st).
但这把同一个整条轨迹的回报 R(τ) 分配给了这一回合中的每一个动作。这在数学上是成立的,但噪声很大。如果一个动作发生在回合早期,用这个动作之前就已经发生的奖励来评价它,在信用分配上并不合乎因果直觉。
一种常见的改进是:用 reward-to-go 替换整条轨迹的回报。沿用上面固定的约定,这意味着使用采样动作之后的未来回报 Gt=∑k=tT−1γk−tRk+1。和到目前为止的推导不同,这个改进本身是一个真正需要证明的命题:用 Gt 替换 R(τ) 之后,估计量的期望基本不变,值得真正证明一遍,而不只是断言。
引理Score Function 的期望为零
对任意状态 s,
Ea∼πθ(⋅∣s)[∇θlogπθ(a∣s)]=0.
证明
Ea∼πθ(⋅∣s)[∇θlogπθ(a∣s)]=a∑πθ(a∣s)∇θlogπθ(a∣s)=a∑∇θπθ(a∣s)=∇θa∑πθ(a∣s)=∇θ1=0,第二个等号用了第 3 节的 log-derivative 技巧,最后一个等号用了 πθ(⋅∣s) 对任意 θ 求和都等于 1 这一事实。
命题因果性:只有未来的奖励依赖于当下的动作
Eτ∼pθ[R(τ)t=1∑T∇θlogπθ(at∣st)]=Eτ∼pθ[t=1∑TγtGt∇θlogπθ(at∣st)]
证明
展开 R(τ)=∑t′=1Tγt′−1Rt′,并交换求和顺序:
Eτ∼pθ[R(τ)t=1∑T∇θlogπθ(at∣st)]=t=1∑Tt′=1∑Tγt′−1Eτ∼pθ[Rt′∇θlogπθ(at∣st)].固定 t,在 t′=t 处把内层求和拆开。对 t′≤t,奖励 Rt′ 是由 (s1,a1,…,st′−1,at′−1) 决定的(这些状态和动作都严格早于 at 被采样),所以以直到 st 的轨迹前缀为条件时,Rt′ 已经固定,只有 at∼πθ(⋅∣st) 仍然是随机的,用上面的引理就得到:
Eτ∼pθ[Rt′∇θlogπθ(at∣st)]=0(t′≤t).只有 t′≥t+1 的项能留下来:
t=1∑Tt′=t+1∑Tγt′−1Eτ∼pθ[Rt′∇θlogπθ(at∣st)]=t=1∑TγtEτ∼pθ[(t′=t+1∑Tγt′−1−tRt′)∇θlogπθ(at∣st)],把 γt 从留下来的项里提出来。剩下的内层求和按定义恰好就是 Gt=∑t′=t+1Tγt′−1−tRt′,这就得到了要证明的恒等式。
命题Reward-to-Go 策略梯度估计量(常规形式)
∇θJ(θ)=N1i=1∑Nt=1∑TGt(i)∇θlogπθ(at(i)∣st(i)).
这并没有改变策略梯度最基本的思想,只是为每个被采样的动作给出了一个与未来回报更相关的度量。
7. Baseline 与 Advantage 作为方差缩减
Baseline 和 advantage 很有用,但它们并不属于核心的 log-trick 推导本身。它们回答的是一个数值优化问题:在不改变梯度估计量期望方向的前提下,如何降低采样梯度估计量的方差?
定义Baseline
Baseline 减去一个与状态相关的参考值:
Gt→Gt−b(st).常见的选择是 b(st)=Vπ(st)。
命题Baseline 的无偏性
如果 baseline b(st) 不依赖于被采样的动作 at,它就不会在期望意义上给策略梯度的方向引入偏差。
证明
减去一个 baseline,给估计量的期望带来的变化恰好是
Eτ∼pθ[t=1∑Tb(st)∇θlogπθ(at∣st)]=t=1∑TE[b(st)由上面的引理=0Eat∼πθ(⋅∣st)[∇θlogπθ(at∣st)]]=0,这里用到 b(st) 只依赖于 st,因此可以提到关于 at∼πθ(⋅∣st) 的内层期望之外,因为它不依赖于 at。只要 b 满足这个条件,baseline 这一项对 E[∇θJ(θ)] 的贡献就恰好是零。
定义Advantage 函数
Aπ(st,at)=Qπ(st,at)−Vπ(st).
定义样本 Advantage 估计
记 At(i):=Gt(i)−b(st(i)) 为加了 baseline 的 reward-to-go,并取 b(st)=Vπ(st) 如上所述,那么 At(i) 就是 Aπ(st(i),at(i)) 的一个蒙特卡洛估计:采样得到的 reward-to-go Gt(i) 是 Qπ(st(i),at(i)) 的一个无偏(但高方差)估计,因为 Qπ(s,a)=Eπ[Gt∣St=s,At=a],所以 At(i) 估计的正是 Qπ(st(i),at(i))−Vπ(st(i))=Aπ(st(i),at(i))。
推论基于 Advantage 的策略梯度估计量
∇θJ(θ)≈N1i=1∑Nt=1∑TAt(i)∇θlogπθ(at(i)∣st(i)).
这正是通往 actor-critic 和 PPO 的桥梁。就本笔记而言,关键点只是:advantage 用一个对随机梯度上升更稳定的信号,替换了原始的回报。
REINFORCE
REINFORCE 是与上面推导相对应的蒙特卡洛策略梯度算法。它在当前策略下采样完整的回合,并用它们的回报来估计 J(θ) 的上升方向。
算法REINFORCE
∇θJ(θ)≈N1i=1∑Nt=1∑TGt(i)∇θlogπθ(at(i)∣st(i)).
用文字来说:从当前策略采样轨迹,估计哪些被采样的动作带来了较好的未来回报,然后通过梯度上升提高这些动作的对数概率。
通往 PPO 的桥梁
PPO 保留了策略梯度的核心思想,但限制了新策略相对旧策略能够移动多远。
定义概率比
rt(θ)=πθold(at∣st)πθ(at∣st)
在能够把策略梯度的推导讲清楚之前,不要急着深入学习 PPO。
延伸阅读
这篇笔记假设读者已经熟悉作为概率分布的策略里搭建起来的策略记号,以及回报、价值与 Bellman 方程里的价值函数和 Bellman 方程,Bellman 方程尤其是理解本文所对照的基于价值方法的有用背景,而 Vπ、Qπ、Aπ 正是上文 baseline 和 advantage 那两节直接用到的对象。这里推导出的估计量是 on-policy 的,意味着每一批轨迹只够支撑一次更新就会变馊。近端策略优化直接接手这个问题:它用重要性采样买来样本重用,然后用整章的篇幅为此付账。
参考资料
评论