深度强化学习中的Actor-Critic方法框架
题目描述
Actor-Critic方法是一种结合了策略梯度(Policy Gradient)方法和价值函数(Value Function)近似优势的深度强化学习算法框架。它旨在解决纯策略梯度方法(如REINFORCE)方差高、训练不稳定的问题,同时也避免了纯价值函数方法(如DQN)难以处理连续动作空间或随机策略的局限性。在本题目中,我们将深入探讨Actor-Critic的核心思想、算法框架以及其关键组件的相互作用。
解题过程
第一步:理解核心思想——策略(Actor)与价值(Critic)的协同
Actor-Critic框架包含两个核心组件:
- Actor(执行者/策略网络):这是一个参数化的策略函数 \(\pi_\theta(a|s)\),输入是状态 \(s\),输出是动作 \(a\) 的概率分布(离散动作)或动作值(连续动作)。Actor负责根据当前策略与环境交互。
- Critic(评论者/价值网络):这是一个参数化的价值函数 \(V_w(s)\)(或 \(Q_w(s, a)\)),输入是状态 \(s\)(或状态-动作对 \((s, a)\)),输出是对应状态的(或状态-动作对的)长期期望回报的估计值。Critic负责评估Actor在当前状态下采取的行动有多好。
核心协同机制:Actor根据Critic的评价来更新自己的策略。Critic告诉Actor:“你在状态s下采取的动作a,相比于平均表现,是好是坏?” Actor则根据这个“批评”来调整自己的策略,使自己未来更倾向于采取获得好评的动作。
第二步:从策略梯度定理到Actor-Critic
我们先回顾基础的策略梯度定理。策略的目标是最大化期望回报 \(J(\theta)\)。策略梯度定理给出了目标函数关于策略参数 \(\theta\) 的梯度:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim d^\pi, a \sim \pi_\theta} [\nabla_\theta \log \pi_\theta(a|s) Q^\pi(s, a)] \]
其中 \(Q^\pi(s, a)\) 是在状态 \(s\) 下采取动作 \(a\) 后,遵循策略 \(\pi\) 所得到的期望回报。
-
REINFORCE算法(仅有Actor):它使用从一次完整回合(episode)中采样得到的实际回报 \(G_t\) 来近似 \(Q^\pi(s_t, a_t)\)。即 \(\nabla_\theta J(\theta) \approx \nabla_\theta \log \pi_\theta(a_t|s_t) G_t\)。虽然是无偏估计,但 \(G_t\) 的方差很高,导致训练不稳定。
-
引入Critic(Actor-Critic):为了降低方差,我们用一个函数近似器(即Critic网络)来估计 \(Q^\pi(s, a)\)。最常用的形式是引入优势函数(Advantage Function) \(A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s)\)。优势函数衡量了在状态 \(s\) 下采取特定动作 \(a\) 比遵循平均策略 \(\pi\) 好多少。此时,策略梯度变为:
\[ \nabla_\theta J(\theta) = \mathbb{E}_{s \sim d^\pi, a \sim \pi_\theta} [\nabla_\theta \log \pi_\theta(a|s) A^\pi(s, a)] \]
使用优势函数后,梯度更新不仅依赖于动作的绝对好坏(Q值),还依赖于相对于状态平均价值(V值)的相对好坏,这能有效降低方差。
第三步:构建Critic——价值网络的训练
Critic的目标是学到一个准确的价值函数 \(V_w(s)\),使其逼近真实的状态价值函数 \(V^\pi(s)\)。这通常通过时序差分(Temporal Difference, TD)误差来监督学习。
- TD目标(Target):在时刻 \(t\),我们观察到状态 \(s_t\),采取动作 \(a_t\),转移到状态 \(s_{t+1}\),并获得奖励 \(r_t\)。TD目标 \(y_t\) 定义为:
\[ y_t = r_t + \gamma V_w(s_{t+1}) \]
其中 \(\gamma\) 是折扣因子。这个目标值结合了即时奖励和下一状态的预估价值。
- TD误差(δ):TD目标是价值网络要拟合的目标,而当前网络对状态 \(s_t\) 的估计值是 \(V_w(s_t)\)。它们之间的差值就是TD误差:
\[ \delta_t = y_t - V_w(s_t) = r_t + \gamma V_w(s_{t+1}) - V_w(s_t) \]
这个TD误差 \(\delta_t\) 恰好就是优势函数 \(A^\pi(s_t, a_t)\) 的一个有效估计!因为 \(Q^\pi(s_t, a_t) \approx r_t + \gamma V^\pi(s_{t+1})\),所以 \(A^\pi(s_t, a_t) = Q^\pi(s_t, a_t) - V^\pi(s_t) \approx r_t + \gamma V^\pi(s_{t+1}) - V^\pi(s_t) \approx \delta_t\)。
- Critic的损失函数:Critic网络的训练目标是最小化TD目标与当前估计之间的均方误差:
\[ L(w) = \frac{1}{2} \delta_t^2 = \frac{1}{2} (r_t + \gamma V_w(s_{t+1}) - V_w(s_t))^2 \]
通过梯度下降更新价值网络参数 \(w\): \(w \leftarrow w - \alpha_w \nabla_w L(w)\),其中 \(\alpha_w\) 是Critic的学习率。
第四步:更新Actor——策略网络的训练
现在,我们有了优势函数的估计 \(A^\pi(s_t, a_t) \approx \delta_t\)。将其代入第二步的策略梯度公式中,得到Actor的更新规则:
\[ \nabla_\theta J(\theta) \approx \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \delta_t \]
然后,我们通过梯度上升来更新策略网络参数 \(\theta\),使期望回报增加:
\[ \theta \leftarrow \theta + \alpha_\theta \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot \delta_t \]
其中 \(\alpha_\theta\) 是Actor的学习率。
更新解读:
- 如果 \(\delta_t > 0\)(正优势),说明动作 \(a_t\) 比平均表现好,更新会增大 \(\pi_\theta(a_t|s_t)\) 的概率。
- 如果 \(\delta_t < 0\)(负优势),说明动作 \(a_t\) 比平均表现差,更新会减小 \(\pi_\theta(a_t|s_t)\) 的概率。
- \(\nabla_\theta \log \pi_\theta(a_t|s_t)\) 指明了参数空间中哪个方向可以增加选择动作 \(a_t\) 的概率。
第五步:算法流程总结
一个最简单的在线Actor-Critic算法(每步更新)流程如下:
- 初始化:随机初始化Actor网络参数 \(\theta\) 和Critic网络参数 \(w\)。
- 循环(每个回合):
a. 初始化状态 \(s\)。
b. 循环(每一步):
i. Actor根据当前策略 \(\pi_\theta(\cdot|s)\) 选择动作 \(a\)。
ii. 执行动作 \(a\),环境返回奖励 \(r\) 和下一状态 \(s‘\)。
iii. Critic计算TD误差: \(\delta = r + \gamma V_w(s’) - V_w(s)\)。
iv. 更新Critic: \(w \leftarrow w + \alpha_w \delta \nabla_w V_w(s)\)。这里是对 \(L(w)\) 求导后的简化形式。
v. 更新Actor: \(\theta \leftarrow \theta + \alpha_\theta \delta \nabla_\theta \log \pi_\theta(a|s)\)。
vi. 状态更新: \(s \leftarrow s’\)。
c. 如果到达终止状态,结束当前回合。
总结
Actor-Critic方法通过引入一个独立的价值网络(Critic)来评估策略(Actor)的表现,并使用TD误差作为优势函数的估计来指导策略更新。这种架构结合了策略梯度方法直接优化策略和处理连续动作空间的能力,以及价值函数方法方差低、学习效率高的优点,成为深度强化学习中许多先进算法(如A3C, DDPG, PPO, SAC等)的基础框架。其成功的关键在于Actor和Critic两个组件的稳定、协同训练。