

RL 学习笔记(11):Actor-Critic 方法
Actor-Critic 方法
views
| comments
本内容暂时为 PPT 转述,后续会进行修编
第 13 讲:Actor-Critic 方法#
一、Actor-Critic 方法介绍 (Introduction to Actor-Critic Methods)#
- 目标 (Page 2):回顾策略梯度方法,其目标是直接优化参数化的策略 ,而无需学习价值函数(如纯策略梯度 REINFORCE)。但纯粹基于蒙特卡洛回报的策略梯度估计(如 REINFORCE)存在高方差问题。
- 核心思想 (Page 3-4):Actor-Critic 方法通过引入一个评论家 (Critic) 来学习价值函数,以指导演员 (Actor)(策略)的学习,从而降低策略梯度的方差,并允许在线、单步更新。
- 演员 (Actor):负责选择动作。它通常是一个参数化的策略 ,根据当前状态 输出动作(或动作的概率分布)。其目标是最大化期望回报。参数为 。
- 评论家 (Critic):负责评估动作或状态的好坏。它学习一个价值函数,例如动作价值函数 或状态价值函数 ,用于评价 Actor 所做的决策。参数为 。
- 交互流程 (Page 3 图示):
- Actor 根据状态 选择动作 。
- 动作 在环境中执行,产生奖励 和下一个状态 。
- Critic 利用这个转移 来评估动作 的好坏(例如,计算 TD 误差 )。
- Critic 利用 TD 误差更新自身的参数 ,以更准确地进行评估。
- Actor 利用 Critic 的评估信号(例如 TD 误差 或估计的 Q 值)来更新其参数 ,朝着能获得更高评价(更高价值/更低 TD 误差)的方向调整策略。
- 基本 Actor-Critic 更新 (Page 5):
- 动机:用 Critic 学习的动作价值 来替代 REINFORCE 中高方差的蒙特卡洛回报 。
- 策略梯度近似:
- Actor 更新规则 (随机梯度上升): (这里 是当前步的状态和动作, 是 Actor 的学习率)。
- Critic 更新规则:更新参数 以使 ,通常使用 TD 学习。
二、理论基础与算法变体 (Theoretical Basis and Algorithm Variants)#
- 回顾:随机策略梯度 (Page 6):
- 提醒策略梯度的基本形式:。
- 可以通过采样动作 并计算 来获得梯度的无偏估计。AC 的目标是用 替代 。
- 价值函数估计关系 (Page 7-9):
- 定理 1 (Q 与 V 的关系):动作价值函数 可以通过下一个状态的状态价值函数 表示: (期望是针对 )。
- 定理 2 (贝尔曼期望方程 for V):状态价值函数 满足贝尔曼期望方程: (期望是针对 和 )。
- 单样本近似 (Page 9):对于一个观测到的转移 :
- 的单样本估计:
- 的单样本估计 (TD 目标):
- 基于 V 值的 Actor-Critic 更新 (Page 10):
- 假设 Critic 学习状态价值 。
- Critic 更新 (TD(0) Learning):
- TD 目标:
- TD 误差: (标准的 TD 误差:目标 - 当前估计)
- Critic 参数更新:
- Actor 更新:使用 TD 误差 作为 的(有偏)替代品(或者更准确地说,作为优势函数 的估计)。
- Actor 参数更新: (注意:Page 10 的公式是 且 ,两者负号抵消,结果与这里一致)。
- 基于 Q 值的 Actor-Critic 更新 (Page 11):
- 假设 Critic 学习动作价值 ,例如使用线性近似 。
- Critic 更新 (线性 TD(0),类似 Sarsa):
- 观察
- TD 误差:
- Critic 参数更新: ( 是 Critic 学习率)
- Actor 更新:
- Actor 参数更新: ( 是 Actor 学习率)
- 算法:QAC (Page 11)
plaintextfunction QAC 初始化状态 s, 策略参数 theta, 价值参数 w 采样动作 a ~ pi_theta(s, a) 循环 对每一步: // 与环境交互 采样奖励 r = R_s^a; 采样下一状态 s' ~ P_ss'^a // Actor 选择下一动作 (用于 Critic 更新目标) 采样下一动作 a' ~ pi_theta(s', a') // Critic 更新 delta = r + gamma * Q_w(s', a') - Q_w(s, a) w <- w + beta * delta * phi(s, a) // 假设线性 Q_w = phi^T w // Actor 更新 (使用更新前的 Q_w(s, a)?) theta <- theta + alpha * nabla_theta log pi_theta(s, a) * Q_w(s, a) // 状态动作更新 a <- a', s <- s' 结束循环 end function
- 注意: 这个版本的 Actor 更新直接使用了 ,而不是 TD 误差。这可能导致高方差。更常见的 AC 形式会使用某种形式的优势估计。
三、Actor-Critic 神经网络 (Actor-Critic Neural Networks)#
- 网络结构 (Page 12-15):
- 使用神经网络来参数化 Actor 和 Critic。
- 策略网络 (Actor) (Page 14):输入状态 ,输出动作的概率分布(例如,通过 Softmax 层)。
- 价值网络 (Critic) (Page 15):
- Q-Critic :输入状态 ,输出每个动作的 Q 值。
- V-Critic :输入状态 ,输出一个状态价值 V 值。
- 共享网络 (Page 23):Actor 和 Critic 可以共享底层的特征提取层(例如 CNN 处理图像输入),然后在顶部分别接策略头(Policy Head)和价值头(Value Head)。
- 训练过程 (Page 16-22):
- 目标 (Page 16):同时优化 Actor () 和 Critic ()。Actor 试图改进策略以获得更高价值,Critic 试图更准确地估计价值以更好地指导 Actor。
- 通用流程 (Page 17, 20):通过与环境交互获得转移 ,然后分别更新 Critic 和 Actor。
- Critic 更新 (Q-Critic, Page 18):
- 需要下一个状态-动作对 的 Q 值。通常 从 采样 (Sarsa 风格)。
- TD 目标:。
- 损失(MSE):。
- 更新:通过梯度下降最小化损失 。
- Actor 更新 (Q-Critic, Page 19):
- 随机梯度:。
- 更新:。
- 训练算法示例 (Q-Critic AC, Page 20):
- 观测 ,采样 。
- 执行 ,观测 。
- 采样下一个动作 (仅用于计算 TD 目标)。
- 计算 Q 值:, 。
- 计算 TD 误差: (目标 - 预测)。
- 计算 Critic 梯度:。
- 更新 Critic: (使用正的 TD 误差)。
- 计算 Actor 梯度项:。
- 更新 Actor: (注意:这里仍使用 而非 )。
- 训练后使用 (Page 21):训练完成后,通常只需要 Actor(策略网络)来与环境交互并做出决策,Critic 不再需要。
四、优势 Actor-Critic (Advantage Actor-Critic, A2C)#
- 动机 (Page 23, 31):直接使用 更新 Actor 可能方差较大。引入基线 ,使用优势函数 (Advantage Function) 来更新 Actor,可以降低方差。
- 网络结构 (Page 23):通常使用 V-Critic,学习状态价值 。策略网络 和价值网络 可以共享底层参数。
- 优势函数的估计 (Page 24, 31):
- 理论优势函数 。
- 使用单步 TD 误差作为优势函数的估计: 使用 Critic 的估计值 代替 : TD 误差 是对优势函数 的(有偏但方差较低的)估计。
- A2C 更新规则 (Page 25, 28):
- Critic 更新 (学习 ):
- TD 目标:。
- TD 误差:。
- 更新:。
- Actor 更新 (使用 TD 误差 作为优势估计):
- 更新:。
- Critic 更新 (学习 ):
- A2C 训练算法 (Page 28):
- 观测转移 ()。
- 计算 TD 目标:。
- 计算 TD 误差:。
- 更新 Actor:。
- 更新 Critic:。
- 多步目标 (Multi-Step Targets) (Page 32-34):
- 可以使用 n 步回报来计算 Critic 的 TD 目标,以在偏差和方差之间进行权衡。
- n 步 TD 目标:
- n 步 TD 误差:。
- A2C with n-step TD Target (Page 34):
- Actor 更新:。
- Critic 更新:。
- A2C 与 REINFORCE 的比较 (Page 35):
- REINFORCE (with Baseline):使用蒙特卡洛回报 作为 的估计,并使用 来更新 Actor ;可能使用 作为目标更新 Critic 。无自举(除了 Critic 的 V 值本身)。
- A2C (n-step):使用 n 步 TD 回报(包含自举项 )作为 Critic 的目标 ,并使用 n 步 TD 误差 来更新 Actor 和 Critic 。有自举。
- n 步 A2C 中的 控制了偏差和方差的权衡。当 时,n 步 TD 目标接近蒙特卡洛回报,A2C 接近带基线的 REINFORCE。
五、小结 (Page 36)#
- Actor-Critic (AC) 方法结合了策略学习(Actor)和价值学习(Critic)。
- Critic 学习价值函数(Q 或 V),用于评估 Actor 的行为。
- Actor 根据 Critic 的评估信号(Q 值、TD 误差、优势估计)更新策略参数。
- 相比纯策略梯度(如 REINFORCE),AC 方法(尤其是 A2C)通常具有更低的方差,允许更稳定和高效的学习,能够进行在线单步更新。
- 引入基线(如 V 函数)并使用优势函数(通常用 TD 误差近似)是 AC 方法的关键改进 (A2C)。
- 可以使用单步或多步 TD 目标来训练 Critic 和指导 Actor。