Actor-Critic Algorithm(表演者-评述者算法)
将策略梯度与值函数近似结合起来,就得到了 AC 算法,可以看作是特殊的 PG 算法。
1 QAC
QAC 是最基本的 AC 类算法,与策略梯度的算法有相同的目标函数,相同的目标函数的梯度,∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))qπ(S,A)]。与之不同的是q(S,A)被值函数q(S,A,w)替代。与 ReinForce 计算 q 值的方法不同,不再使用 MC 算法更新,而是 TD 算法更新。同时因为更新的值是 Q 值,所以被称为 QAC
1.1 生成数据
由于目标函数的梯度里的随机变量A需要服从将要更新的策略π,所以这是一种 on-policy 的方法。需要使用策略生成{st,at,rt+1,st+1,at+1}。
1.2 值更新(value update)(Critic)
因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到q值,所以采用与 Sarsa 与值函数结合相同的方法更新值。
wt+1=wt+αw(rt+1+γq(st+1,at+1,wt)−q(st,at,wt))∇wq(st,at,wt)
1.3 策略更新(policy update)(Actor)
与 PG 算法相同的方式更新策略。将更新后的q值代入。
θt+1=θt+αθ∇θln(π(at∣st,θt))q(st,at,wt+1)
2 A2C(Advantage Actor Critic)
为了解决 QAC 策略更新时,使用随机梯度下降采样的样本值方差大的问题,在目标函数引入一个 baseline。
∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))(qπ(S,A)−b(S))]=E[X]
这个 baseline 不会使这个梯度发生变化,却能够改变随机变量X的方差。
通过推导发现,使随机变量X方差最小的b∗(s)=EA∼π[∥∇θπ(A∣s,θ)∥2]EA∼π[∥∇θπ(A∣s,θ)∥2qπ(s,A)]
简化得到次优解b∗(s)=EA∼π[qπ(s,A)]=vπ(s)
所以
并称δπ(S,A)=qπ(S,A)−vπ(S)为 Advatage funtion,因为它表示当前动作值与当前状态所有动作值得期望的差。因此该算法也叫 Advantage Actor Critic。
2.1 生成数据
由于目标函数的梯度里的随机变量A需要服从将要更新的策略π,所以这是一种 on-policy 的方法。需要使用策略生成{st,at,rt+1,st+1}。
2.2 值更新(value update)(Critic)
因为值可以用来衡量策略好坏,相当于评论家,这步就是 Critic。由于策略用到v值,所以采用与 TD 与值函数结合相同的方法更新值。
可以先计算 advantage funtion δt=rt+1+γv(st+1,wt)−v(st,wt)
wt+1=wt+αwδt∇wv(st,wt)
2.3 策略更新(policy update)(Actor)
与 PG 算法相同的方式更新策略。将更新后的δ值代入。
θt+1=θt+αθ∇θln(π(at∣st,θt))δt
3 off-policy AC
前面的 AC 算法都是 on-policy 的,通过重要性采样就可以变成 off-policy。
3.1 重要性采样(important sampling)
为了实现 off-policy 就需要解决策略梯度∇θJ(θ)=ES∼η,A∼π[∇θln(π(A∣S,θ))qπ(S,A)],A服从π的分布。思路是通过不同分布的采样,求到相同的期望。
EX∼p0[X],EY∼p1[Y],X和Y服从不同的分布,但可以通过对Y进行p1(y)p0(y)y称为f(y)的采样,求平均fˉ=n1n∑f(y)≈EX∼p0[X]得到p0分布下的期望。
3.2 区别
与 A2C 算法基本相同,有以下几点区别。
- 采样与更新不再需要同一个策略,采样时使用 behavior policy——β
- 由于不再动作的采样不再是同个分布,采用重要性采样,值更新时与 A2C 相比变成 wt+1=wt+αwβ(at∣st)π(at∣st,θt)δt∇wv(st,wt)
- 策略更新也采用重要性采样 θt+1=θt+αθβ(at∣st)π(at∣st,θt)∇θln(π(at∣st,θt))δt
4 DPG(Deterministic Policy Gradient)
AC 和 PG 算法的策略都是 stochastic policy,为了应对动作空间无穷大时,采用确定性的策略可以更好的应对。
4.1 确定性策略(deterministic policy)
由π(a∣s,θ)输出的是一个概率变成μ(s,θ)直接输出一个动作值。
目标函数依然是vˉμ和rˉμ。梯度变成了∇J(θ)=s∑ρμ(s)∇θμ(s)(∇aqμ(s,a))∣a=μ(s)=ES∼ρμ[∇θμ(S)(∇aqμ(S,a))∣a=μ(s)]
由于目标函数梯度不需要对动作进行采样,也就跟策略无关,所以 DPG 是 off-policy 的。
4.2 步骤
- 采样:根据 behaviour policy——β采样得到{st,at,rt+1,st+1},再根据 target policy——μ 采样得到a~t+1。注意的是a~t+1不会被用于下一次与环境的交互,所以它依然是 off-policy 的。
- 值更新:wt+1=wt+αw(rt+1+γq(st+1,a~t+1,wt)−q(st,at,wt))∇wq(st,at,wt)
- 策略更新:θt+1=θt+αθ∇θμ(st,θt)(∇aqμ(st,a,wt+1))∣a=μ(s)