这里记录一下整理的ChatGPT输出的关于强化学习的公式。
强化学习公式
1. MDP 与回报
一个 一个无限/有限时域的马尔可夫决策过程(MDP)定义为:
M=(S,A,P,r,γ)
轨迹概率为:
pθ(τ)=ρ(s0)t=0∏T−1πθ(at∣st)P(st+1∣st,at)
折扣回报:
Gt=k=0∑∞γkrt+k
优化目标:
J(θ)=Eτ∼pθ[G0]
2. 价值函数与优势
Vπ(s)=E[Gt∣st=s],Qπ(s,a)=E[Gt∣st=s,at=a]
优势函数:
Aπ(s,a)=Qπ(s,a)−Vπ(s)
3. 原始策略梯度
对目标函数求梯度
∇θJ(θ)=∇θ∫pθ(τ)G0dτ=∫∇θpθ(τ)G0dτ.
使用 Log-Derivative Trick:
∇θpθ(τ)=pθ(τ)∇θlogpθ(τ).
∇θJ(θ)=∫pθ(τ)G0∇θlogpθ(τ)dτ=Eτ∼pθ[G0∇θlogpθ(τ)].
因为环境转移 P与参数 θ无关:
logpθ(τ)=t=0∑T−1logπθ(at∣st)+常数.
对 θ求导:
∇θlogpθ(τ)=t=0∑T−1∇θlogπθ(at∣st).
∇θJ(θ)=E[G0t=0∑T−1∇θlogπθ(at∣st)].
将 G0展开到时间步级别,使用分段回报
Gt=k=0∑∞γkrt+k,
∇θJ(θ)=E[(k=0∑T−1γkrk)(t=0∑T−1∇θlogπθ(at∣st))].
∇θJ(θ)=E[t=0∑T−1k=0∑T−1γkrk∇θlogπθ(at∣st)].
∇θJ(θ)=E[t=0∑T−1(k=0∑t−1γkrk+k=t∑T−1γkrk)∇θlogπθ(at∣st)].
“过去的奖励”项的梯度为 0(因果性),故对每个固定的 t,考虑第一项:
k=0∑t−1γkrk∇θlogπθ(at∣st).
在马尔可夫决策过程里,在时间 t 选择的动作 at 只会影响之后的状态和奖励(即 k≥t部分),不会影响已经发生的过去奖励 r0,…,rt−1。形式化一点,可以看作在条件于历史 ht=(s0,a0,…,st)下, 过去的奖励 {rk}k<t对 at的分布是“常数”,于是:
E[k=0∑t−1γkrk∇θlogπθ(at∣st)]=E[(k=0∑t−1γkrk)E[∇θlogπθ(at∣st)∣ht]].
但对任意分布 pθ(at∣st),有:
Eat∼πθ(⋅∣st)[∇θlogπθ(at∣st)]=∇θat∑πθ(at∣st)=∇θ1=0.
因此:
E[k=0∑t−1γkrk∇θlogπθ(at∣st)]=0.
“过去奖励 × 当前 log-prob 梯度”的期望为 0, 对梯度没有贡献,可以整体丢掉。保留“未来的奖励”项于是只剩下 k≥t的那部分:
∇θJ(θ)=E[t=0∑T−1(k=t∑T−1γkrk)∇θlogπθ(at∣st)].
k=t∑T−1γkrk=γtk=t∑T−1γk−trk=γtGt,
Gt=l=0∑T−1−tγlrt+l
因此,我们得到:
∇θJ(θ)=E[t=0∑T−1γtGt∇θlogπθ(at∣st)].
4. 吸收γt到折扣状态分布 dγπ(s)
我们想说明如果我们去采样不同的轨迹$$\tau$$,那么我们得到的各个状态的分布里面已经包含了$$\gamma$$,可以将其剔除上面的公式。
先说明如下式子可以写成对折扣状态分布 dγπ(s)的期望:
E[t=0∑∞γtf(st)]
dγπ(s)=(1−γ)t=0∑∞γtP(st=s∣π).
展开时间期望:
E[t=0∑∞γtf(st)]=t=0∑∞γtE[f(st)]=t=0∑∞γts∑P(st=s∣π)f(s).
交换求和顺序:
=s∑f(s)t=0∑∞γtP(st=s∣π).
定义于是
t=0∑∞γtP(st=s∣π)=1−γ1dγπ(s).
代回原式
E[t=0∑∞γtf(st)]=s∑f(s)1−γ1dγπ(s)=1−γ1s∑dγπ(s)f(s).
这可以写成对 dγπ(s)的期望
E[t=0∑∞γtf(st)]=1−γ1Es∼dγπ[f(s)]
推广到 (st,at)上同样地,对任意函数 g(s,a),有
Eτ[t=0∑∞γtg(st,at)]=1−γ1Es∼dγπ,a∼π(⋅∣s)[g(s,a)]
令 g(st,at)=Aπ(st,at)∇θlogπθ(at∣st),则
E[t∑γtGπ(st,at)∇θlogπθ(at∣st)]=1−γ1Es∼dγπ,a∼π[Gπ(s,a)∇θlogπθ(a∣s)]
这里我们直接写成更常见的形式(省略显式 γt),其实这里求期望的对象已经变了
∇θJ∝E[t∑Gt∇θlogπθ(at∣st)]
5. 引入基线,不改变策略梯度
我们要证明
E[b(st)∇θlogπ(at∣st)]=0
首先展开条件期望
E[b(st)∇θlogπ(at∣st)]=Est[b(st)Eat∼π(⋅∣st)[∇θlogπ(at∣st)]]
因为 baseline 不依赖动作,可以提出来。接着利用 log 概率的恒等式
Eat∼π[∇θlogπ(at∣st)]=at∑π(at∣st)∇θlogπ(at∣st)
将 ∇logπ写回去
=at∑π(at∣st)π(at∣st)∇θπ(at∣st)=at∑∇θπ(at∣st)
=∇θat∑π(at∣st)=∇θ1=0.
所以 baseline 项的期望为 0
E[b(st)∇θlogπ(at∣st)]=Est[b(st)⋅0]=0.
6. Gt 替换成优势函数
Gt→Gt−b(st)
选择
b(st)=Vπ(st)
得到优势:
Aπ(st,at)=Gt−Vπ(st)
最终
∇θJ=E[Aπ(st,at)∇θlogπ(at∣st)]
利用基线不改变期望梯度
∇θJ=E[t∑(Gt−b(st))∇θlogπθ(at∣st)]
取
b(st)=Vπ(st),Aπ(st,at)=Gt−Vπ(st)
得到策略梯度的优势形式
∇θJ=E[t∑Aπ(st,at)∇θlogπθ(at∣st)]
7. Generalized Advantage Estimation(广义优势估计)
GAE 的目标:构造一个既低方差又低偏差的优势估计 A^t。
优势函数
Aπ(st,at)=Qπ(st,at)−Vπ(st).
回报定义
Qπ(st,at)=E[Gt].
TD 残差(1-step advantage)
δt=rt+γV(st+1)−V(st).
-
方差小(只看 1 个 step)
-
偏差大(只用 1-step TD)
更一般的 k-step advantage:
At(k)=l=0∑k−1γlrt+l+γkV(st+k)−V(st).
特殊情况:
- k=1:TD(0)
- k=∞:使用完整回报 Gt,方差最大
GAE 的核心思想: 将不同 k-step 混合。GAE 使用一个系数 λ∈[0,1],将不同 k-step 的优势按几何权重混合:
A^tGAE(γ,λ)=(1−λ)k=1∑∞λk−1At(k).
这是 GAE 的定义,但形式不够适合计算。
8. 将 k-step 展开 → 得到“TD 残差累加”形式(关键步骤)
我们先把几个小的 k 看一眼,观察规律:
At(1)=rt+γV(st+1)−V(st)=δt.
At(2)=rt+γrt+1+γ2V(st+2)−V(st)=δtrt+γV(st+1)−V(st)+γδt+1(rt+1+γV(st+2)−V(st+1))=δt+γδt+1.
At(3)=rt+γrt+1+γ2rt+2+γ3V(st+3)−V(st)=δt+γδt+1+γ2δt+2.
可以猜到一般形式:
At(k)=l=0∑k−1γlδt+l.
GAE 的定义(λ-return 形式)是
A^tGAE(γ,λ)=(1−λ)k=1∑∞λk−1At(k).
现在代入得到:
A^t=(1−λ)k=1∑∞λk−1(l=0∑k−1γlδt+l)=(1−λ)k=1∑∞l=0∑k−1λk−1γlδt+l.
交换求和顺序,把“按 k 累加”变成“按 l 累加”,注意对每个固定的 l,它出现于所有 k≥l+1的项中。于是:
A^t=(1−λ)l=0∑∞(γlδt+lk=l+1∑∞λk−1).
我们只需计算几何级数:
k=l+1∑∞λk−1=λlj=0∑∞λj=λl⋅1−λ1.
代回:
A^t=(1−λ)l=0∑∞γlδt+l(λl⋅1−λ1)=l=0∑∞(γlλl)δt+l=l=0∑∞(γλ)lδt+l.
于是得到 GAE 最常用的形式:
A^t=l=0∑∞(γλ)lδt+l
其中
δt=rt+γV(st+1)−V(st).
9. GAE 的递推形式(计算最方便)
对有限 horizon T,从后往前递推:
A^t=δt+γλA^t+1.
这是所有 PPO 实现使用的形式。
为什么 GAE 好?
- λ=0:纯 TD → 最小方差 / 最大偏差
- λ=1:Monte-Carlo → 无偏 / 最大方差
GAE 用 λ平衡二者:
λ越大 → 更像 MC,偏差小、方差大
λ越小 → 更像 TD,偏差大、方差小
通常 λ=0.95是最佳经验值。
10. 新旧策略与重要性采样比率
在实际算法中,数据通常是用“旧策略” πθold采样得到的,
但我们要优化的是“新策略” πθ。
利用重要性采样:
Ea∼πθ(⋅∣s)[f(s,a)]=Ea∼πθold(⋅∣s)[πθold(a∣s)πθ(a∣s)f(s,a)].
定义比率:
rt(θ)=πθold(at∣st)πθ(at∣st).
于是可以写出一个“替代目标”(surrogate objective):
LPG(θ)=Et∼πθold[rt(θ)A^t].
其梯度就是策略梯度的近似:
∇θLPG(θ)≈∇θJ(θ).
11. TRPO:加 KL 约束的优化
TRPO 的思想:
最优化 LPG(θ),但限制新旧策略的 KL 距离不要太大。
形式为:
θmax Et[rt(θ)A^t]
s.t.Et[KL(πθold(⋅∣st)∥πθ(⋅∣st))]≤δ.
这在实现上需要二阶信息(Fisher 信息矩阵),比较复杂。
12. Proximal Policy Optimization,PPO 用剪切(clip)近似 TRPO
PPO 的想法:
不显式做 KL 约束,而是 直接在比率 rt(θ)上做剪切,
让每次更新“不要离旧策略太远”。
PPO 定义“剪切替代目标”(clipped surrogate objective):
LCLIP(θ)=Et[min(rt(θ)A^t, clip(rt(θ),1−ϵ,1+ϵ)A^t)].
解释:
- 当 rt(θ)在 [1−ϵ,1+ϵ]里面时,
用原始项 rt(θ)A^t。
- 当 rt(θ)偏离 1 太多时,用截断后的
clip(rt(θ),1−ϵ,1+ϵ)A^t,
防止策略变化过大。
这相当于把 TRPO 的 KL 约束替换为一个更简单的“局部更新限制”。
13. PPO 的完整损失(加入价值损失与熵)
实际训练时,PPO 通常同时学习价值函数 Vϕ并加入熵正则:
LPPO(θ,ϕ)=Et[LCLIP(θ)−c1(Vϕ(st)−Vttarget)2+c2H(πθ(⋅∣st))],
- Vttarget:回报或 TD / GAE 对应的 value target;
- H:策略熵,鼓励探索;
- c1,c2:权重超参数。
优化时对 −LPPO做梯度下降(或对 LPPO做梯度上升)。
14. GRPO:Group Relative Policy Optimization
对每个输入 x,采样 K条序列:
y1,…,yK∼πθold(⋅∣x)
奖励:
ri=r(x,yi)
组内基线(核心)
rˉ(x)=K1i=1∑Kri
定义组相对优势:
Ai=ri−rˉ(x)
比率(整条序列级别)
ratioi(θ)=πθold(yi∣x)πθ(yi∣x)
GRPO 目标(PPO + 组优势)
Liclip(θ)=min(ratioi(θ)Ai,clip(ratioi(θ),1−ϵ,1+ϵ)Ai)
组平均:
LGRPO(θ)=Ex[K1i=1∑KLiclip(θ)]
加 KL-正则(常用于 LLM)
LfullGRPO(θ)=Ex[K1i=1∑KLiclip(θ)−βKL(πθ(⋅∣x)∥πref(⋅∣x))]