1. 引言:值函数与策略梯度的结合#
首先回顾两种方法:
一、基于值函数的方法:以 DQN 为代表.它的核心思想是学到一个最优动作价值函数 Q∗(s,a),但是它处理 连续动作空间 比较困难.当动作是一个连续向量时,每一步都要求解一个极值问题 maxaQ(s,a),这在计算上比较昂贵的,往往需要额外的优化过程.
二、基于策略梯度的方法:以 REINFORCE 为代表.它并不学习价值函数,而是直接参数化策略 πθ(a∣S),通过 Monte Carlo 采样的方式更新参数 θ:
θ←θ+αGt∇θlogπθ(At∣St)
REINFORCE 方法能轻松处理连续动作,且天然具有随机探索的性质,但具有高方差的痛点,因为它的回报 Gt 是整个 episode 所有奖励的累积和,轨迹长度的随机性和环境奖励的随机性,使得每次更新的方向波动巨大)
从直觉上来看,值函数方法它能够较好地评估策略,但不擅长行动,而策略梯度能够很好地给出行动,但评估自身价值比较困难,那么将两者结合起来,值函数方法作为评论家,策略梯度方法作为演员(行动者),让评论家帮助演员评估当前行为的好坏,从而减少策略梯度的方差.
Actor-Critic
- Actor:策略 πθ,负责选择动作.它的更新依然沿着策略梯度的方向,但不再直接用高方差的回报 Gt,而是用一个低方差的、由 Critic 提供的信号.
- Critic:价值函数,如 Vw(s) 或 Qw(s,a),负责近似评估当前策略的预期收益
例子1:演员与评委的比喻
想象一个年轻演员 (Actor) 在学习演一出戏.一开始,他每次完整演完一场 (episode),才由最终票房 (总回报 Gt) 来评判演技.票房受太多因素影响,有时演得好但票房差,信号极不稳定.这就像 REINFORCE.
现在引入一位资深评委 (Critic).演员每说一句台词、每做一个动作,评委都能立刻给出一个反馈:“这个动作的价值大概是 8 分,你刚才只表现出了 5 分的水平”.评委的评分不是最终真理 (有偏差),但它很稳定 (低方差).演员根据这个即时反馈来调整自己的表演参数,进步就快得多了.这就是 Actor-Critic.
2. Actor-Critic 的基本架构与更新规则#
2.1 在线策略 AC 方法#
策略梯度定理 告诉我们:
∇θJ(θ)∝ES∼μ,A∼π[∇θlogπθ(A∣S)Qπ(S,A)](2.1)
其中 Qπ(St,At) 是真实的动作价值函数.策略梯度方法的基本思想是通过最大化一个目标函数 J(θ) 来得到最优策略,通过梯度上升算法得到
θt+1=θt+α∇θJ(θt)=θt+αES∼μ,A∼π[∇θlogπθ(a∣S)Qπ(S,A)].
进而通过随机梯度上升得到
θt+1=θt+α∇θlogπ(at∣st,θt)Qt(st,at)
根据这一式子进行更新,我们需要知道 Qt(st,at),这是动作值 Qπ(st,at) 的估计量.
- 估计动作值 Qt(st,at) 的方法
- 若 Qt(st,at) 通过 Monte Carlo 方法估计,即 REINFORCE:使用采样回报 Gt 作为 Qπ 的无偏但高方差的估计.
- 若 Qt(st,at) 通过时序差分方法估计,即本章的 Actor-Critic:利用 Critic 去估计 Qπ.
那么我们便得到的一般 Actor-Critic 算法伪代码:
初始化:策略函数 π(a∣s,θ0),价值函数 q(s,a,w0),αw,αθ>0目标:最大化 J(θ)循环,每个回合中时间步 t:at∼π(a∣st,θt)环境交互得到奖励 rt+1,下一状态 st+1at+1∼π(a∣st+1,θt)Actor (策略更新):θt+1=θt+αθ∇θlogπ(at∣st,θt)q(st,at,wt)Critic (价值更新):wt+1=wt+αw[rt+1+γq(st+1,at+1,wt)−q(st,at,wt)]∇wq(st,at,wt)
在更新参数 θ 时,可使用 TD 误差 δt 代替 Q(st,at,wt) 作为轨迹回报的估计
δt=rt+1+γQt(st+1,at+1,wt)−Qt(st,at,wt)
对应的 Actor 更新变为
θt+1=θt+αθδt∇θlogπ(at∣st,θt)
这在减少计算量和减少方差方面有一定的优势.
一般 AC 算法通过单一的 Critic 的信号 TD 误差 δt 同时驱动了两个网络的更新.
2.2 离线策略 AC 方法#
由于在线策略方法对环境的探索能力有限,可考虑离线策略方法:使用行为策略 β(a∣s) 来采样生成轨迹,并基于此轨迹来对目标策略 π(a∣s,θ) 进行评估和改进.
离线策略环境中,对应的目标函数为
J(θ)=s∈S∑dβ(s)Vπ(s)=ES∼dβ[Vπ(S)]=s∈S∑a∈A∑dβ(s)πθ(a∣s)Qπ(s,a),
其中 dβ(s) 是在策略 β 下的平稳分布.那么 J(θ) 表示利用策略 β(a∣s) 采样的数据,评估策略 π(a∣s,θ).
若 γ∈(0,1),则 J(θ) 的 Off-policy 梯度为
∇θJ(θ)=ES∼ρ,A∼β[重要性权重 β(A∣S)π(A∣S,θ)∇θlogπ(A∣S,θ)Qπ(S,A)],
其中状态分布 ρ 为
ρ(s)≐s′∈S∑dβ(s′)Prπ(s∣s′),s∈S,
以及 Prπ(s∣s′)=∑k=0∞γk[Pπk]s′s=[(I−γPπ)−1]s′s 是在策略 π 下从 s′ 到 s 的折扣总概率.
Off-policy 策略梯度定理证明:
ρβ 独立于 θ,则 J(θ) 的梯度满足
∇θJ(θ)=∇θs∈S∑ρβ(s)Vπ(s)=s∈S∑ρβ(s)∇θVπ(s).∇θVπ(s) 的表达式为
∇θVπ(s)=s′∈S∑Prπ(s′∣s)a∈A∑∇θπ(a∣s′,θ)Qπ(s′,a),带入得
∇θJ(θ)=s∈S∑dβ(s)∇θvπ(s)=s∈S∑dβ(s)s′∈S∑Prπ(s′∣s)a∈A∑∇θπ(a∣s′,θ)Qπ(s′,a)=s′∈S∑(s∈S∑dβ(s)Prπ(s′∣s))a∈A∑∇θπ(a∣s′,θ)Qπ(s′,a)≐s′∈S∑ρ(s′)a∈A∑∇θπ(a∣s′,θ)Qπ(s′,a)=s∈S∑ρ(s)a∈A∑∇θπ(a∣s,θ)Qπ(s,a)( 将 s′ 换为 s)=ES∼ρ[a∈A∑∇θπ(a∣S,θ)Qπ(S,a)].
利用重要性采样得到
===ES∼ρ[a∈A∑∇θπ(a∣S,θ)Qπ(S,a)]ES∼ρ[a∈A∑β(a∣S)β(a∣S)π(a∣S,θ)π(a∣S,θ)∇θπ(a∣S,θ)Qπ(S,a)]ES∼ρ[a∈A∑β(a∣S)β(a∣S)π(A∣S,θ)∇θlogπ(a∣S,θ)Qπ(S,a)]ES∼ρ,A∼β[β(A∣S)π(A∣S,θ)∇θlogπ(A∣S,θ)Qπ(S,A)]
在 Off-policy 演员-评论家算法中,使用行为策略 β(a∣s) 生成采样轨迹,Actor 与 Critic 均使用重要性采样比例 β(a∣s)πθ(a∣s) 进行调整,利用随机梯度上升得到
θt+1=θt+αθβ(at∣st)π(at∣st,θt)∇θlogπ(at∣st,θt)Qt(st,at)
和
wt+1=wt+αwβ(at∣st)π(at∣st,θt)δt∇wQt(st,at,wt),
其中
δt=rt+1+γQt(st+1,at+1,wt)−Qt(st,at,wt).
3. 理论与意义:偏差-方差的权衡与兼容性#
3.1 自举引入的偏差与方差的降低#
将 REINFORCE (MC critic) 替换为 TD Critic,实际上做了一次偏差-方差的权衡:
- REINFORCE 是无偏的,它使用的是真实的环境回报 Gt,但方差高.
- Actor-Critic 使用 R+γV(S′) 作为目标.这里的 V 是带有误差的估计,因此更新目标是有偏的.但这一替换将方差源头从“整个轨迹的随机奖励”缩减到“单步奖励和下一状态价值估计”,使得方差降低.
3.2 兼容近似定理#
策略梯度定理 告诉我们:
∇θJ(θ)∝ES∼μ,A∼π[∇θlogπθ(a∣S)Qπ(S,A)]
在 AC 算法中,存在一个重要的理论问题:当我们用一个参数化的近似函数 Qw 来替代真实的 Qπ 时,策略梯度会不会被带偏?
Sutton 等人的策略梯度定理告诉我们,只要近似函数满足兼容性条件,那以上替换不会引入偏差:
- 近似函数可以写成
Qw(s,a)=wT∇θlogπθ(a∣s)+b(s)
- 参数 w 通过最小化与真实 Qπ 的均方误差来学习:
w∗=argwminES∼μ,A∼π[(Qw(S,A)−Qπ(S,A))2]
若近似函数满足以上兼容性条件,那么用 Qw 替换 Qπ 计算出的策略梯度是真是梯度的无偏估计:
E[∇θlogπθ(A∣S)Qw(S,A)]=E[∇θlogπθ(A∣S)Qπ(S,A)]
兼容近似定理证明:
w 满足条件 2,令 ϵ≐Qw(s,a)−Qπ(s,a),则 ∇wϵ=∇wQw(s,a)=0.进一步有 E[ϵ∇wϵ]=0.
w 满足条件 1,则 ∇wQw(s,a)=∇θlogπθ(a∣s)=0.有
0=E[ϵ∇wϵ]=E[(Qw(S,A)−Qπ(S,A))∇wQw(S,A)]=E[(Qw(S,A)−Qπ(S,A))∇θlogπθ(A∣S)]
即
E[Qπ(S,A)∇θlogπθ(A∣S)]=E[Qw(S,A)∇θlogπθ(A∣S)]
在实践中,即使不完全满足,只要 Critic 用策略指导下的真实样本进行 TD 学习,即条件 2 被放宽,算法也能良好收敛.
如果两个条件同时满足,整个 AC 算法实际上变成了 REINFORCE 算法,即等同于没有使用评论家 Critic.
4. Actor-Critic 变种:A2C#
4.1 Advantage Actor-Critic (A2C)#
同 REINFORCE 方法,AC 方法可以采用引入基线的方式进一步减小方差:
∇θJ(θ)∝ES∼μ,A∼π[∇θlogπ(A∣S,θ)(Qπ(S,A)−b(S))]
ES∼μ,A∼π[∇θlogπ(A∣S,θ)Qπ(S,A)]=ES∼μ,A∼π[∇θlogπ(A∣S,θ)(Qπ(S,A)−b(S))],
其中 b(S) 是关于 S 的一个基准标量函数.
=====ES∼μ,A∼π[∇θlogπ(A∣S,θ)b(S)]s∈S∑μ(s)a∈A∑π(a∣s,θ)∇θlogπ(a∣s,θ)b(s)s∈S∑μ(s)a∈A∑∇θπ(a∣s,θ)b(s)s∈S∑μ(s)b(s)a∈A∑∇θπ(a∣s,θ)s∈S∑μ(s)b(s)∇θa∈A∑π(a∣s,θ)s∈S∑μ(s)b(s)∇θ1=0.
- 基准函数的引入
基准函数能够在使用随机样本近似真实梯度时 减少近似的方差.
定义
X(S,A)≐∇θlogπ(A∣S,θ)(Qπ(S,A)−b(S)).
我们的目标是选择基准函数 b(S),使得方差 var(X) 越小越好.实际上能够最小化 var(X) 的最优基准是
b∗(s)=EA∼π[∥∇θlogπ(A∣s,θ)∥2]EA∼π[∥∇θlogπ(A∣s,θ)∥2Qπ(s,A)],s∈S
最优基准表达式证明:
选择迹作为优化的目标函数:
tr[var(X)]=trE[(X−xˉ)(X−xˉ)T]=trE[XXT−xˉXT−XxˉT+xˉxˉT]=E[XTX−XTxˉ−xˉTX+xˉTxˉ]=E[XTX]−xˉTxˉ,
其中 xˉ≐E[X]. 将 X 的表示式带入 E[XTX] 得
E[XTX]=E[(∇θlogπ)T(∇θlogπ)(Qπ(S,A)−b(S))2]=E[∥∇θlogπ∥2(Qπ(S,A)−b(S))2]=s∈S∑η(s)EA∼π[∥∇θlogπ∥2(Qπ(s,A)−b(S))2].
目标函数最优,则 ∇bE[XTX]=0,∀s∈S,进一步有
EA∼π[∥∇θlogπ∥2(Qπ(s,A)−b(S))]=0,
求解即得最优基准.
最优基准过于复杂,难以在实际中使用. 移除权重 ∥∇θlogπ(A∣s,θ)∥2,便得到一个次优的基准,即
b∗(s)=EA∼π[Qπ(s,A)]=Vπ(s),s∈S.
那么令基准 b(S)=Vπ(S),于是得到了优势函数:
Aπ(s,a)=Qπ(s,a)−Vπ(s)
优势函数衡量的是“在状态 s 采取动作 a 比平均水平好多少”.用它代替纯粹的 Q 值,可以极大地降低梯度估计的方差,同时不引入偏差.
此时算法变为
θt+1=θt+α∇θlogπ(at,∣st,θt)[Qt(st,at)−Vt(st)]=θt+α∇θlogπ(at,∣st,θt)At(st,at)
评论家 Critic 部分是一个优势函数 A,其估计同样有两种方法:
- 若 Qt(st,at) 和 Vt(st) 是通过 Monte Carlo 方法估计的,对应的便是带基准的 REINFORCE ;
- 若 Qt(st,at) 和 Vt(st) 是通过时序差分方法估计的,对应的 AC 方法变为 Advantage Actor-Critic(A2C) 方法.此时需要两个近似函数,同时更新两套参数:
- 近似值函数:V(s,v)≈Vπ(s) ;
- 近似行为值函数:Q(s,a,w)≈Qπ(s,a)
实际操作中一般用 TD 误差代替优势函数进行计算,即
Qt(st,at)−Vt(st)≈rt+1+γVt(st+1)−Vt(st),
这是因为 TD 误差是优势函数的无偏估计:
===E[Rt+1+γVπ(St+1)−Vπ(St)∣St=st,At=at]E[Rt+1+γVπ(St+1)∣St=st,At=at]−Vπ(st)Qπ(st,at)−Vπ(st)Aπ(st,at).
此时只需要使用一个神经网络来表征 Vπ(s).
5 Actor-Critic 变种:A3C#
5.1 异步方法的引入#
在 DQN 中,我们利用经验放回的技巧来打破数据之间的相关性,但它也存在一些缺点:
- 每次交互都需要更多的内存和计算,因为在算法中我需要设置一个回放缓冲区,用来放存收集的经验样本;
- 探索效率低:一个智能体一次只能经历一个轨迹 s0→s1→s2…
e.g. 网格世界中,单个 agent 逐个探索路线 episode 1, episode 2…效率低下.
异步:每个 agent 独立运行
agent1 ---> 更新 ---> Global Network
agent2 ---> 更新 ---> Global Network
agent3 ---> 更新 ---> Global Network
plaintext
通过在多个环境实例中并行地执行多个智能体,来产生多样化的数据.在给定的时间步,并行的智能体将经历各种不同状态,从而避免了数据之间的相关性.
不同经验共同训练,且可以有不同的探索策略,具备探索多样性,从而能够丰富训练数据
异步思想:
- 多 Worker 并行交互:在算法中启动多个独立的线程(Worker),每个 Worker 都有一份全局共享网络的副本(Local Network),并各自独立地与各自的环境实例进行交互,收集数据;
- 异步更新:多个 Worker 不需要等待,当某一 Worker 完成一定步数的梯度计算后,就立即推送到全局共享网络进行更新,再使用新的参数继续下一轮交互;
- 避免数据相关性,从而无需经验回放
类似于批量更新方式,单个 Worker 将固定时间步内的更新量进行累计,每隔一定时间步将累积的更新量更新到共享参数,可以减少多个 Worker 彼此覆盖的可能.
5.2 Asynchronous Advantage Actor-Critic (A3C)#
异步优势演员-评论家算法(A3C)
A3C 在 A2C 的基础上引入异步方法,它维护一个全局网络和多个并行的 worker 线程,每个 worker 有自己独立的本地网络副本.worker 在各自的环境中独立运行、独立计算本地梯度,并异步地更新全局网络参数,然后再从全局网络拉取最新参数.
A3C 算法需要计算两个参数:
- 参数 θ(Actor): 策略函数 π(at∣st,θ);
- 参数 θv(Critic):值函数 V(st;θv).
对每一个 Worker:
初始化.同步全局参数至本地参数,得到自己独立的本地网络的环境θ'(Actor),θ_v'(Critic)
进行 Actor-Critic 本地模型训练
得到初始化状态 s
遵循策略 π(a | s;θ') 采样得到动作 a_t, 并与环境交互得到 r_t, s_{t+1}
类似批量更新方式,缓存固定时间步(全局网络更新频率)内的轨迹
达到全局网络更新条件(固定时间步或轨迹终止):
批量计算 TD 目标
更新本地网络(Actor-Critic)
同步本地参数至全局参数
plaintext
策略梯度定理
∇θJ(θ)∝ES∼μ,A∼π[∇θlogπθ(A∣S)Qπ(S,A)]
| 算法 | 参数更新公式 | 备注 |
|---|
| REINFORCE | θ←θ+αGt∇θlogπθ(At∣St) | Gt:从时刻 t 开始的累计折扣回报 |
| 带基准的 REINFORCE | θ←θ+α(Gt−Vw(st))∇θlogπθ(At∣St) | Gt−Vw(st):引入状态值函数作为基准,降低方差 |
| Actor-Critic (AC) | θ←θ+α∇θlogπ(at∣st,θ)Qt(st,at) | Qt(st,at) 动作值函数作为 Critic 的估计 |
| A2C (Advantage Actor-Critic) | θ←θ+α∇θlogπ(at∣st,θ)[Qt(st,at)−Vt(st)] | Qt(st,at)−Vt(st):优势函数,用于减少方差并稳定训练 |
教材参考
- 邹伟 - 强化学习 - 清华大学出版社.
- Richard S. Sutton - Reinforcement Learning: An Introduction.