引言(Introduction)#
在之前的笔记中,我们学习了两种截然不同的强化学习路径:
- Value-Based (如 Q-Learning):通过学习价值函数 Q(s,a) 来间接导出策略。优点是方差小(利用了 TD 的一步更新),缺点是无法处理连续动作。
- Policy-Based (如 REINFORCE):直接学习策略 πθ。优点是可以处理连续动作,缺点是方差极大(因为使用了蒙特卡洛回报 Gt),且只能在回合结束后更新。
Actor-Critic (AC) 架构旨在结合两者的优点:
- Actor (演员):即策略网络 πθ(a∣s),负责由状态输出动作。
- Critic (评论家):即价值网络 Vw(s) 或 Qw(s,a),负责评估 Actor 的动作好不好,帮助 Actor 减小方差加速学习。
降低方差的技巧:基线 (Baseline)#
回顾 REINFORCE 的梯度公式:
∇θJ(θ)=Eτ∼πθ[t=0∑T∇θlogπθ(at∣st)Gt]
这里的 Gt 是从 t 时刻开始的累积回报。由于环境随机性和策略随机性,Gt 的波动非常大,导致梯度估计不稳定。
为了减小方差,我们引入一个 基线函数 (Baseline) b(s)。基线函数只与状态有关,与动作无关。
我们把梯度修改为:
∇θJ(θ)=E[t=0∑T∇θlogπθ(at∣st)(Gt−b(st))]
数学证明:引入基线不改变梯度期望#
我们需要证明减去一项 b(st) 后,梯度的期望值不变。即证明:
Eat∼πθ[∇θlogπθ(at∣st)⋅b(st)]=0
证明如下:
Ea∼π[∇θlogπ(a∣s)⋅b(s)]=a∑π(a∣s)π(a∣s)∇θπ(a∣s)b(s)=b(s)a∑∇θπ(a∣s)=b(s)∇θa∑π(a∣s)=b(s)∇θ(1)=0
结论:只要 b(s) 不依赖于动作 a,我们可以随意减去它而不改变梯度的方向,但能显著改变梯度的方差。通常,我们选择状态价值函数 V(s) 作为基线。
Actor-Critic 架构演变#
Q Actor-Critic#
如果我们用一个神经网络 Qw(s,a) 来近似 REINFORCE 中的 Gt,梯度变为:
∇θJ(θ)≈E[∇θlogπθ(a∣s)Qw(s,a)]
但这并没有解决问题,因为单纯拟合 Q 值还是很难。
Advantage Actor-Critic (A2C)#
为了利用 Baseline 减小方差,我们希望梯度形式为:
∇θJ(θ)≈E[∇θlogπθ(a∣s)(Qw(s,a)−Vv(s))]
其中 Q(s,a)−V(s) 被称为 优势函数 (Advantage Function),记为 A(s,a)。它表示“在状态 s 下,动作 a 比平均情况好了多少”。
但是,如果我们需要同时维护两个网络(一个算 Q,一个算 V),训练会很麻烦。我们可以利用 TD Error 来近似优势函数。
根据贝尔曼方程:
Q(st,at)≈rt+γV(st+1)
因此,优势函数可以写为:
A(st,at)=Q(st,at)−V(st)≈rt+γV(st+1)−V(st)
这恰好就是 TD Error (δt)!
因此,我们只需要维护一个 Actor 网络 πθ(a∣s) 和一个 Critic 网络 Vw(s) 即可。
A2C 算法流程#
在 Advantage Actor-Critic 中,Critic 的任务是把 Vw(s) 估得越准越好,Actor 的任务是利用 Critic 提供的 TD Error 来更新策略。
Critic 的更新 (Value Update)#
Critic 的目标是最小化 TD Error 的平方(即回归问题):
Lcritic(w)=21(rt+γVw(st+1)−Vw(st))2
梯度更新:
w←w+αcδt∇wVw(st)
Actor 的更新 (Policy Update)#
Actor 使用 TD Error 作为优势函数的估计值进行梯度上升:
∇θJ(θ)≈∇θlogπθ(at∣st)δt
梯度更新:
θ←θ+αaδt∇θlogπθ(at∣st)
💡 直觉理解:
- 如果 δt>0(惊喜,结果比预期好):增加动作 at 的概率。
- 如果 δt<0(失望,结果比预期差):减小动作 at 的概率。
- 这里的“预期”就是 Critic 提供的 V(st)。
A2C 伪代码#
∙Initialize Actor πθ and Critic Vw∙For episode =1→E do:∙Initialize state s∙For step t=1→T do:∙Sample action a∼πθ(⋅∣s)∙Execute a, observe r,s′∙// Calculate TD Error (Advantage)∙δ←r+γVw(s′)−Vw(s)∙// Update Critic∙w←w+αcδ∇wVw(s)∙// Update Actor∙θ←θ+αaδ∇θlogπθ(a∣s)∙s←s′∙End For∙End For
偏差与方差的权衡 (Bias-Variance Tradeoff)#
我们可以总结一下不同计算 Advantage 的方法,它们体现了 RL 中核心的权衡:
- 蒙特卡洛 (REINFORCE):
- At≈Gt−V(st)
- 无偏差:Gt 是真实回报。
- 高方差:受整个序列随机性影响。
- Actor-Critic (TD):
- At≈rt+γV(st+1)−V(st)
- 低方差:只受一步随机性影响。
- 有偏差:依赖于 Critic 的估计 V(st+1),如果 Critic 还没练好,Actor 就会被带偏。
为了平衡两者,我们可以使用 多步 TD 或者 GAE (Generalized Advantage Estimation),这是 PPO 等进阶算法的核心技巧。
Actor-Critic 架构是现代深度强化学习的主流架构。
- 它解决了 REINFORCE 方差大、更新慢的问题。
- 它解决了 DQN 无法处理连续动作的问题。
- 它是后续 A3C, DDPG, TRPO, PPO, SAC 等高级算法的共同祖先。