策略梯度方法

基本思路

策略梯度(Policy Gradients)方法特别适用于处理高维或连续的动作和状态空间,而这些在基于值的方法中通常很难处理。

From table to function

π(as,θ)π(as)\pi(a|s,\theta)\approx \pi(a|s)

如果一个策略很好,那么对于所有的状态 ss,状态价值 vπ(s)v_\pi(s) 的均值应当很大。因此我们的目标是最大化

J(θ)=ESd(S)[vπ(S)]=sSd(s)vπ(s)J(\theta)=\mathbb E_{S\sim d(S)}[v_{\pi}(S)] =\sum_{s\in\mathcal S}d(s)v_{\pi}(s)

从上式可以看出,目标函数只和策略函数相关。其中 d(s)d(s) 是稳态分布(stationary distribution)。向量 dπ=[dπ(s1),,dπ(sn)]T\mathbf d_{\pi}=[d_{\pi}(s_1),\cdots,d_{\pi}(s_n)]^T 满足

dπT=dπTPπwhere (Pπ)ij=P(sjsi)\mathbf d_{\pi}^T=\mathbf d_{\pi}^TP_{\pi}\quad \text{where }(P_{\pi})_{ij}=\mathbb P(s_j|s_i)

可以使用梯度上升来最大化目标函数

θJ(θ)=sSd(s)aAθπ(as,θ)qπ(s,a)\nabla_{\theta}J(\theta)=\sum_{s\in\mathcal S}d(s)\sum_{a\in\mathcal A}\nabla_{\theta}\pi(a|s,\theta)q_{\pi}(s,a)\\

因为

θlnπ(as,θ)=θπ(as,θ)π(as,θ)\nabla_{\theta}\ln\pi(a|s,\theta)=\frac{\nabla_{\theta}\pi(a|s,\theta)}{\pi(a|s,\theta)}

带入目标梯度可得到

θJ(θ)=ESd(S),Aπ(AS,θ)[θlnπ(AS,θ)qπ(S,A)]\nabla_{\theta}J(\theta)=\mathbb E_{S\sim d(S),A\sim\pi(A|S,\theta)}[\nabla_{\theta}\ln\pi(A|S,\theta)q_{\pi}(S,A)]

由于上式要求 π>0\pi>0 ,策略函数一般使用 softmax functions,是一种探索性策略。

π(as,θ)=exp(h(s,a,θ))aAexp(h(s,a,θ)),aA\pi(a|s,\theta)=\frac{\exp(h(s,a,\theta))}{\sum_{a'\in\mathcal A}\exp(h(s,a',\theta))},\quad a\in\mathcal A

REINFORCE

我们可以使用蒙特卡洛近似估计值函数 q(s,a)q(s,a),并结合随机梯度上升算法,更新策略参数,这称为REINFORCE算法。

θt+1=θt+αθlnπ(atst,θt)qt(st,at)\theta_{t+1}=\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_t)q_t(s_t,a_t)

REINFORCE with baseline

REINFORCE 算法的一个主要缺点是不同路径之间的方差很大,导致训练不稳定,这是在高维空间中使用蒙特卡罗方法的通病。一种减少方差的通用方法是引入一个和动作 AA 无关的baseline减小梯度的方差。

ESd,Aπ[θlnπ(AS,θ)qπ(S,A)]=ESd,Aπ[θlnπ(AS,θ)(qπ(S,A)b(S))]\mathbb E_{S\sim d,A\sim\pi}[\nabla_{\theta}\ln\pi(A|S,\theta)q_{\pi}(S,A)]=\mathbb E_{S\sim d,A\sim\pi}[\nabla_{\theta}\ln\pi(A|S,\theta)(q_{\pi}(S,A)-b(S))]

最优baseline

b(s)=EAπ[θlnπ(As,θt)2qπ(s,A)]EAπ[θlnπ(As,θt)2,sSb^*(s)=\frac{\mathbb E_{A\sim\pi}[\|\nabla_{\theta}\ln\pi(A|s,\theta_t)\|^2q_{\pi}(s,A)]}{\mathbb E_{A\sim\pi}[\|\nabla_{\theta}\ln\pi(A|s,\theta_t)\|^2},\quad s\in\mathcal S

目标函数为过于复杂,一般使用

b(s)=EAπ[qπ(s,A)]=vπ(s),sSb(s)=\mathbb E_{A\sim\pi}[q_{\pi}(s,A)]=v_{\pi}(s),\quad s\in\mathcal S

随机梯度提升

θt+1=θt+αθlnπ(atst,θt)δt(st,at)\theta_{t+1}=\theta_{t}+\alpha\nabla_{\theta}\ln\pi(a_t|s_t,\theta_{t})\delta_t(s_t,a_t)

其中

δt(st,at)=qt(st,at)vt(st)\delta_t(s_t,a_t)=q_t(s_t,a_t)-v_t(s_t)