先记住一句话
Actor 决定 action distribution,critic 只负责估计未来回报/advantage 来降低 actor 梯度方差;actor-critic 并不是两个独立 agent。
1. Log-derivative trick
∇θ pθ(x) = pθ(x)∇θ log pθ(x)一条轨迹概率包含每一步 policy probability 和不依赖 θ 的环境 transition。把期望回报求导后,可得到 REINFORCE 形式:
∇θJ ≈ Σ_t ∇θ log πθ(a_t|s_t) G_tG_t>0 时提高采样 action 的 log probability,负时降低。环境可以不可微,因为梯度穿过 log policy,不穿过真实 transition。
2. Reward-to-go 与 causality
时间 t 的 action 不可能影响过去 reward,因此用从 t 开始的 G_t 代替整条 episode return,可减少无关方差。若 reward timing 错位一格,credit assignment 也会错。
3. Baseline 为什么不改变期望
∇θJ ≈ E[∇θ logπθ(a|s)(G_t−b(s))]只依赖 state 的 baseline 在 action expectation 下梯度为 0,因此不改变无偏期望。用 learned Vφ(s) 作 baseline,权重就是 advantage estimate Â_t。
4. Actor-Critic 的两条 loss
L_actor = −E[logπθ(a_t|s_t) stopgrad(Â_t)]L_value = E[(Vφ(s_t)−V_target_t)²]通常阻断 advantage 对 critic 的梯度进入 actor loss。共享 backbone 时 actor/value loss 仍会通过共同特征互相影响,loss coefficient 和梯度尺度因此重要。
5. 一步 TD advantage
δ_t = r_t + γV(s_{t+1}) − V(s_t)若 critic 准确,δ_t 是 A(s_t,a_t) 的低方差样本;但只看一步且 value 不准时 bias 大。GAE 将未来 TD residual 指数累积:
Â_t^GAE(γ,λ)=δ_t+(γλ)δ_{t+1}+(γλ)²δ_{t+2}+...6. GAE 的反向递推
gae = 0
for t in reversed(range(T)):
nonterminal = 1 - terminated[t]
delta = r[t] + gamma * V[t+1] * nonterminal - V[t]
gae = delta + gamma * lam * nonterminal * gae
advantage[t] = gae
return_target = advantage + V
若 rollout 只是 batch 边界或 truncation,末端要从 critic bootstrap;若是真 terminal,future value 为 0。
7. 随机策略怎样参数化
| 动作 | 常见 distribution | 注意 |
|---|---|---|
| 离散 | Categorical(logits) | mask 非法 action,log-softmax 数值稳定 |
| 连续有界 | Gaussian → tanh → scale | log-prob 需 Jacobian correction |
| 多离散 | 多个 categorical / autoregressive | 独立假设可能忽略 action 相关性 |
固定或可学习 log standard deviation 控制探索尺度。过早降到极小方差会停止探索;方差过大则动作噪声压倒任务。
8. Entropy bonus
J_entropy = J_reward + c_H E[H(π(·|s))]entropy 奖励分布保持随机,帮助探索并防止过早 collapse。PPO 常把它作为额外 bonus;SAC 将 entropy 正式放进 maximum-entropy objective,并可自动调 temperature α。
9. On-policy 的含义
REINFORCE/A2C/PPO 的 rollout 主要来自当前/old policy。更新后 probability ratio 改变,数据逐渐变“旧”,不能无限 replay 同一 batch。A3C/A2C 通过并行 actor 提高吞吐;PPO 用 ratio+clip 允许同一 rollout 做有限多个 minibatch epochs。
10. 四个 policy-gradient 与 GAE 计算
例 1:log-prob 加权
某 action 的 ∇logπ=[0.4,−0.2],return=3,则 REINFORCE gradient estimate=3×[0.4,−0.2]=[1.2,−0.6];gradient ascent 增加带来正 return 的 action 概率。
例 2:baseline 只改权重
同一 return=3,baseline V=2.5,advantage=0.5,gradient 变为 [0.2,−0.1]。方向仍由 log-prob 决定,但幅度显著减小;state-only baseline 不偏向某 action。
例 3:一步 TD advantage
r=1、γ=0.9、V(s)=2、V(s′)=3,则 δ=1+0.9×3−2=1.7。正值表示这一步结果比 critic 对当前 state 的预测更好。
例 4:GAE 反向递推
γ=0.9、λ=0.8,所以 γλ=0.72。若最后两拍 δ₁=2、δ₀=1,则 A₁=2,A₀=δ₀+γλA₁=1+0.72×2=2.44。
critic 不一定让 actor gradient 完全无偏。用不准确 value 和有限 λ 构造 advantage 会引入 bias;换来的是显著降低方差与更快训练。
自测
1. 为什么不能直接用 reward 代替 advantage?
即时 reward 没包含延迟影响,也没有减去 state baseline;长时任务的 credit 与方差都会更差。
2. λ 越大一定越好吗?
不是。λ 大减少 bootstrap bias 但增加长轨迹随机性带来的方差,还依赖 rollout 长度和 critic 质量。
3. 连续动作 tanh 后为什么要修正 log-prob?
变量变换改变 probability density;不加 Jacobian correction,importance ratio/entropy 和 policy gradient 都不对应实际动作分布。
一手资料
Schulman et al., Generalized Advantage Estimation 系统给出 GAE 的 bias–variance 结构;policy gradient 与 actor-critic 基础见 Sutton & Barto。