📘策略梯度(Policy Gradient)完整数学推导
1️⃣ 问题定义:最大化期望回报
我们有一个参数化策略:
目标是找到最优参数 θ,使得期望折扣累积回报最大:
其中:
τ=(s0,a0,r0,s1,a1,r1,…) 是一条轨迹(trajectory)
s0∼ρ0(⋅):初始状态分布
at∼πθ(⋅∣st):策略采样动作
st+1∼P(⋅∣st,at):环境转移(与 θ 无关)
γ∈[0,1):折扣因子
2️⃣ 核心目标:计算梯度 ∇θJ(θ)
直接对期望求导:
其中 p(τ;θ) 是轨迹 τ 在策略 πθ 下的概率密度:
注意:只有 πθ(at∣st) 依赖 θ,环境动力学 P 和初始分布 ρ0 不依赖 θ。
3️⃣ 关键技巧:Log-Derivative Trick(似然比方法)
我们使用恒等式:
代入梯度表达式:
即:
4️⃣ 展开 logp(τ;θ)
对 θ 求导,不含 θ 的项导数为 0:
代入梯度:
交换求和与期望:
5️⃣ 重要重构:按时间步分配回报
注意到 R(τ) 是整条轨迹的回报,但我们可以将它“归属”到每个时间步:
定义从时间 t 开始的折扣回报:
于是:
(因为 R(τ) 中只有 Rt 与 (st,at) 之后的动作有关,前面的动作不影响 Rt)
6️⃣ 转换为状态-动作期望形式
我们可以将轨迹期望,写成在“折扣状态访问分布”下的期望:
其中:
dπθ(s)=∑t=0∞γtP(st=s∣πθ) 是折扣状态分布
Qπθ(s,a)=Eτ∼πθ[Rt∣st=s,at=a] 是动作值函数
7️⃣ 引入优势函数(降低方差)
因为 Qπθ(s,a) 包含环境噪声,方差大,我们引入基线 b(s):
只要 b(s) 不依赖 a,就不会引入偏差。
最优选择是状态值函数:
于是我们定义优势函数:
最终策略梯度公式:
8️⃣ 实际算法:REINFORCE with Baseline
因为我们不知道 Aπθ,实践中用采样估计:
用 πθ 采样一条完整轨迹:τ={(st,at,rt)}t=0T
计算回报:Gt=∑k=tTγk−trk
估计优势:A^t=Gt−V^(st)(V^ 可用另一个网络估计,或忽略)
梯度估计:
更新参数:
这就是著名的 REINFORCE 算法。
9️⃣ 示例:高斯策略(连续动作空间)
设策略为高斯分布:
则:
梯度:
(如果 σ 固定)
更新方向:如果动作 a 比均值 μ 大,且优势为正 → 鼓励增大 μ → 下次更可能选大动作!
🔟 为什么 PG 不稳定?(为 TRPO/PPO 做铺垫)
虽然数学正确,但:
梯度是“一阶局部近似”,步长 α 难选
如果 θ 更新太大,采样分布 dπθ 和优势估计 Aπθ 就不准了
可能“一步天堂,一步地狱” → 训练崩溃
👉 这就是为什么我们需要 约束策略更新的幅度 —— 于是 TRPO 登场!
🧩 小明骑车的数学映射
st:车身倾斜角度、速度
at:把手转动角度
πθ(a∣s):神经网络输出的“推荐动作分布”
A(s,a):这个动作比“平均动作”好多少
∇θlogπ:如果这次右转5度稳住了车(A>0),就让网络下次在类似状态下更倾向输出“右转5度”
但如果一次更新让网络从“右转5度”变成“右转50度”,A 的估计就失效了 → 翻车!
✅ 至此,Policy Gradient 的数学推导完成!
📎 附:常用符号表
$$\pi_\theta(a
s)$$
J(θ)
期望总回报目标函数
Rt
从时间 t 开始的折扣回报
Aπ(s,a)
优势函数 = Qπ−Vπ
dπ(s)
折扣状态访问分布
∇θlogπ
策略梯度方向(似然比)
最后更新于