强化学习--强化学习4_Actor-Critic 方法
2026/9/15 7:21:21 网站建设 项目流程

深度强化学习4:Actor-Critic 方法

依据王树森《深度强化学习》第 4 讲整理。
章节对应大纲:

Actor 与 Critic 的角色;

两个神经网络的构造(策略网络 / 价值网络);

Actor-Critic 的训练思想;

五步更新流程;

用 TD 算法更新价值网络;

用策略梯度更新策略网络;

完整的九步算法;

Baseline(用 δ_t 代替 q_t);

本节总结。


1. Actor 与 Critic:核心思想

  • 前两节课分别讲了Value-Based Methods(价值学习)Policy-Based Methods(策略学习),本节课把两者结合。
  • Actor(运动员)= 策略网络:用来控制 agent 运动、做决策。
  • Critic(裁判)= 价值网络:用来给动作打分,不控制 agent 运动。
  • 通俗比喻:actor 是体操运动员,能做动作但不知道怎样改进;critic 是裁判,给运动员打分,运动员靠分数知道什么动作分高、什么动作分低,从而改进自己让分数越来越高。
  • 本节内容:构造这两个神经网络,然后通过环境给的奖励同时学习这两个网络。

2. 构造两个神经网络

2.1 回顾:状态价值函数与两个未知函数

  • V_π是动作价值函数 Q_π 的期望;动作离散时写成连加形式,动作连续时把连加换成定积分。
  • π(策略函数):计算动作的概率值,用来控制 agent 运动。
  • Q_π(动作价值函数):评价动作的好坏程度。
  • 可惜 π 和 Q_π 这两个函数我们都不知道 → 用两个神经网络分别近似,再用 Actor-Critic 方法同时学习。

2.2 策略网络(Policy Network)= Actor

  • 记为π(a|s;θ),θ 是网络参数,用来近似策略函数 π,控制 agent 运动。
  • 结构(与上一节课相同):输入状态 s(如超级玛丽当前屏幕画面)→ 卷积层把画面变成特征向量 → 一个或多个全连接层把特征向量映射到紫色向量(3 个动作 → 3×1)→Softmax 激活函数
  • Softmax 保证输出是概率分布:元素都是正数、相加等于 1。例如输出红色向量三个元素分别对应三个动作的概率:向左 0.2、向右 0.1、向上 0.7。

2.3 价值网络(Value Network)= Critic

  • 记为q(s,a;w),w 是网络参数,用来近似价值函数 Q_π,只给动作打分、不控制 agent。
  • 结构:两个输入——状态 s 和动作 a。
    • 动作是离散的 → 用one-hot encoding表示一个动作:向左 = (1,0,0),向右 = (0,1,0),向上 = (0,0,1)。
    • 分别用卷积层和全连接层从两个输入中提取特征,得到两个特征向量。
    • 把两个特征向量拼接起来,得到更高的特征向量。
    • 最后用全连接层输出一个实数:这就是裁判给运动员打的分数,说明在状态 s 下做出动作 a 是好还是坏。
  • 价值网络可以与策略网络共享卷积层参数,也可以完全独立、各自有各自的参数。
  • 同时训练策略网络和价值网络,就被称为Actor-Critic Method

3. Actor-Critic 的训练思想

  • 用两个网络近似后,状态价值函数近似为V(s;θ,w),θ 是策略网络参数,w 是价值网络参数。
  • 训练时要更新 θ 和 w,但更新目标不同
    • 更新策略网络参数 θ:为了让 V 函数的值增加(固定 s 时 V 越大说明策略越好)→ 需要更新 θ 使 V 的平均值增加。
    • 更新价值网络参数 w:为了让 q 的打分更精准,更好地估计未来奖励的总和。
  • 学习策略网络的监督信号来自价值网络 q(裁判打分 = 监督信号;运动员靠裁判分数改进技术,争取平均分更高)。
  • 学习价值网络的监督信号来自环境奖励 r
    • 裁判一开始随机初始化、没有判断能力,打分全是瞎猜。
    • 环境给的奖励相当于"上帝打的分数";上帝不会轻易告诉别人,直到游戏结束才公开。
    • 裁判要做的:让打分尽量接近上帝的打分 → 水平逐渐提高。
  • 概括:学习策略网络 π 是为了让运动员平均分更高(V 更大),需要价值网络 q 当裁判;学习价值网络 q 是为了让裁判打分越来越精准。

4. 一次更新的五步流程

  1. 观测到当前状态 s_t。
  2. 把 s_t 作为输入,用策略网络 π 计算概率分布,随机抽样得到动作 a_t。
  3. agent 执行动作 a_t;环境更新状态 s、给出奖励 r_t。
  4. 有了奖励 r_t,用TD 算法更新价值网络参数 w(让裁判更准确)。
  5. Policy Gradient(策略梯度)算法更新策略网络参数 θ(让运动员技术更好;更新 θ 要用裁判对动作 a_t 的打分)。

5. 用 TD 算法更新价值网络

  • 用价值网络 q 给动作打分:分别给 a_t 和 a_{t+1}(按策略网络 π 随机抽样得到)打分,得 q_t 和 q_{t+1}。
  • 计算TD target

y_t = r_t + γ · q(s_{t+1}, a_{t+1}; w_t)

  • γ 是折扣率,让未来奖励没有当前奖励权重高。
  • q(s_t,a_t;w) 与 y_t 都是对未来奖励总和的估计,但y_t 更准确可靠,因为它的一部分(r_t)是真实观测到的奖励。
  • TD 算法把 q(s_t,a_t;w) 作为预测、y_t 作为 target,让预测尽量接近 target:
    • 损失函数 = 预测 q 与 target y_t 之差的平方。
    • 损失函数对参数 w 求导得到梯度,做梯度下降(α 为学习率)更新 w,使损失函数 L 减小。

L = (q(s_t, a_t; w) − y_t)²

6. 用策略梯度算法更新策略网络

  • V 是状态价值函数,相当于运动员所有动作的平均分;策略梯度是 V 关于参数 θ 的导数。
  • 定义 g 函数:

g(a;θ) = ∇_θ log π(a|s;θ) · q(q 是裁判的打分)

  • 策略梯度 = 对 g 函数求期望(把动作 a 消掉);但这个期望很难直接求,用一个 g 值(蒙特卡洛近似)代替即可。
  • g 函数是策略梯度的无偏估计,所以直接拿 g 代替策略梯度:
    • 必须根据策略网络 π 做随机抽样得到动作 a,才能保证样本的无偏性。
  • 有了随机梯度 g,做一次梯度上升

θ ← θ + β · g(β 为学习率;梯度是 V 对 θ 的导数,梯度上升可以增加 V 函数的值)

7. 运动员与裁判的深层理解

  • 运动员靠裁判打分 q 改进自己(技术 = 神经网络参数):通过状态 s、自己的动作 a、裁判打分 q 近似算出策略梯度,再做梯度上升更新参数。
  • 注意:运动员这样做只是在迎合裁判的喜好——平均分变高,可能是因为裁判打分 q 变高了;更高的 q 未必说明运动员真正变优秀了。裁判的水平很重要:迎合二流裁判不会让运动员变成顶尖运动员;如果裁判专业、判断顶尖、评分精准,迎合它就足够了。
  • 为了让运动员真正变优秀,还要让裁判不断改进打分能力:
    • 价值网络一开始随机初始化,裁判啥也不懂、全靠瞎猜 → 帮不了运动员。
    • 裁判靠奖励 r(相当于上帝的判断,即 ground truth)提高水平:裁判基于状态 s 和动作 a 打分 q,比较相邻两次打分 q_t、q_{t+1} 以及奖励 r_t,用TD 算法更新价值网络参数,让打分更精准。

8. 完整算法(九步,每轮迭代做一次动作、观测一个奖励、更新一次参数)

  1. 观测旧状态 s_t;用策略网络 π 计算概率分布,按概率随机抽样得到动作 a_t。
  2. 让 agent 执行动作 a_t;环境告诉我们新状态 s_{t+1} 和奖励 r_t。
  3. 把 s_{t+1} 作为输入,用策略网络 π 计算新概率分布,随机抽样得到动作 a’_{t+1}——这只是假想的动作,仅用来算 q 值,agent 不会真正执行(每轮 agent 只做一次动作)。
  4. 算两次价值网络输出:用 (s_t, a_t) 算出裁判打分 q_t;用 (s_{t+1}, a’{t+1}) 算出裁判打分 q{t+1}(a’_{t+1} 用完就丢掉)。
  5. 计算TD error:q_t 是当前预测,r_t + γ·q_{t+1} 是 TD target,两者之差就是 TD error,记为 δ_t。
  6. 对价值网络求导:TensorFlow、PyTorch 等系统可自动做反向传播,自动算出 q 网络关于 w 的梯度 d_w,t(形状与 w 完全相同,同样大小的矩阵或张量)。
  7. 用 TD 算法更新价值网络(梯度下降):让预测离 TD target 更近,裁判打分更精准。
  8. 对策略网络求导:系统自动求 ∇_θ log π,得到 d_θ,t(形状与 θ 相同)。
  9. 用梯度上升更新策略网络:q_t × d_θ,t 是策略梯度的蒙特卡洛近似,β 是学习率,让运动员平均分更高。

公式:w ← w − α·δ_t·d_w,t(TD 更新);θ ← θ + β·q_t·d_θ,t(策略梯度上升)

9. Baseline:为什么论文里常用 δ_t 而不是 q_t

  • 算法第 9 步用到了 q_t(裁判给动作的分数);但论文和教科书中的这个步骤大多用 δ_t(TD error)而不是 q_t
  • 结论:两种用法都是对的——用 q_t 是标准算法,用 δ_t 叫Policy Gradient with Baseline;两种策略梯度公式都可以数学推导出来,期望完全相等
  • 为什么大家普遍用 δ_t:用不用 baseline 不影响期望,但用好的 baseline 可以降低方差,让算法收敛更快
  • Baseline 是什么:任何接近 q_t 的数都可以作为 baseline,但不能是动作 a_t 的函数
  • 常用选择:用 r_t + γ·q_{t+1} 这个实数(其实就是 TD target,很接近 q_t)作为 baseline;代入后策略梯度近似为 δ_t·d_θ,t。

10. 本节总结

  • 两个神经网络:策略网络 π 叫actor(运动员),价值网络 q 叫critic(裁判)。
  • 训练时:由策略网络 π 操作 agent(动作都按 π 随机抽样);价值网络 q 辅助训练策略网络——相当于裁判给动作打分,分数相当于监督学习中的标签,运动员靠分数改进自己。
  • 训练之后:仍由策略网络 π 操作 agent;价值网络 q 就没用了——运动员已经很完美,不再需要裁判(Actor-Critic 的终极目的是学习策略网络,价值网络只是辅助)。
  • 训练方法
    • 策略网络 π 用策略梯度算法训练:目标是让状态价值函数 V 的平均值变大;策略梯度是 V 关于 θ 的梯度,用蒙特卡洛近似算出梯度后做一次梯度上升。
    • 价值网络 q 用TD 算法训练:用价值网络预测 q_t 和 TD target y_t(y_t 用到真实奖励 r_t,比 q_t 更靠谱,作为标签);损失函数为 (q_t − y_t)²,对 w 求导后做梯度下降,让 q_t 更接近 y_t。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询