先记住一句话

Actor 决定 action distribution,critic 只负责估计未来回报/advantage 来降低 actor 梯度方差;actor-critic 并不是两个独立 agent。

policy 采样收集 rewards/values反向算 TD residualGAE advantagesactor losscritic loss
Actorπθ(a|s)
Trajectorys,a,r
CriticVφ(s)
AdvantageÂₜ
Actor updatelogπ·Â
Critic 不选动作;它把 trajectory return 压缩成较低方差的 advantage,作为 actor 更新权重。

1. Log-derivative trick

∇θ pθ(x) = pθ(x)∇θ log pθ(x)

一条轨迹概率包含每一步 policy probability 和不依赖 θ 的环境 transition。把期望回报求导后,可得到 REINFORCE 形式:

∇θJ ≈ Σ_t ∇θ log πθ(a_t|s_t) G_t

G_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 准确,δ_tA(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 → scalelog-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