Actor-Critic
QAC
Actor-Critic 算法结合了值函数近似和策略函数近似:
- Actor 负责更新策略函数 π(a∣s,θ)
θt+1=θt+αθ∇θlnπ(at∣st,θt)qt(st,at)
- Critic 负责通过Sarsa算法更新值函数 q(s,a,w)
wt+1=wt+αw[rt+1+γq(st+1,at+1,wt)−q(st,at,wt)]∇wq(st,at,wt)
基本的 Actor-Critic算法也被称为 Q actor-critic (QAC) ,适合连续状态空间和连续动作空间。
路径寻找:如下图,在一个连续的平面世界中,包括平坦区域、草地和边界。状态空间是连续的 S=[0,6]×[0,6] ,动作空间也是连续的,可以360度自由行走 A=[0,2π]。如果Agent在平坦区域每单位路程奖励 -1 ;在草坪的每单位路程奖励 -2;在目标区域的奖励为 0。

Jupyter Notebook Code
A2C
之前我们推导出了带基线的策略梯度
∇θJ(θ)=ES∼d,A∼π[δπ∇θlnπ(A∣S,θ)]
其中
δπ=qπ(S,A)−vπ(S)
被称作优势函数(Advantage Function),如果优势函数大于零,则说明该动作比平均动作好,如果优势函数小于零,则说明当前动作还不如平均动作好。基于上面公式得到的Actor-Critic 方法被称为 Advantage actor-critic (A2C)。
基于贝尔曼方程
qπ(s,a)−vπ(s)=E[Rt+1+γvπ(St+1)−vπ(St)∣St=s,At=a]
于是策略更新变为
θt+1=θt+αθδt∇θlnπ(at∣st,θt)
其中
δt=rt+1+γvt(st+1)−vt(st)
值函数 v(s,w) 使用时序差分算法估计
wt+1=wt+αwδt∇wv(st,wt)
算法流程如图
Off-policy AC:若使用行为策略 β 采集经验样本,则每步需要乘以重要性权重修正
δt=β(at∣st)π(at∣st,θt)[rt+1+γvt(st+1)−vt(st)]
DPG
确定策略梯度 (Deterministic Policy Gradient, DPG) 是最常用的连续控制方法,顾名思义使用确定性策略
a=μ(s,θ)
目标函数
J(θ)=E[vμ(S)]=s∈S∑d(s)vμ(s)
则确定性策略梯度
∇θJ(θ)=ES∼d[∇θvμ(S)]=ES∼d[∇θqμ(S,μ(S,θ))]=ES∼d[∇θμ(S,θ)∇aqμ(S,a)∣a=μ(S,θ)]
由此我们得到更新 θ 的随机梯度提升
θt+1=θt+αθ∇θμ(st,θt)∇aqμ(st,a)∣a=μ(st,θt)
使用时序差分近似值函数 q(s,a,w) 的更新公式为
wt+1=wt+αw[rt+1+γq(st+1,at+1,wt)−q(st,at,wt)]∇wq(st,at,wt)
算法流程如图