Policy Gradient

policy-based RL的目标是直接使用一个参数化函数$\pi(a|s,\theta)$对最优策略$\pi^*$进行近似

这个目标可以视为一个优化问题,假设$J(\theta)$是某个特定metric,最优策略可通过梯度法逼近

这种方法称为策略梯度(Policy Gradient)方法

我们知道state-value $v_{\pi}(s)$衡量了在策略$\pi$控制下处于状态$s$有多好,于是期望state-value就衡量了策略$\pi$有多好

其中状态$s$的分布$d(s)$有两种情况

  • $d(s)$与策略$\pi$独立。这种情况可以假设均匀分布$d(s)=\frac{1}{|S|}$,或者只关心初始状态$d(s_0)=1,d(s\neq s_0)=0$
  • $d(s)$依赖于策略$\pi$。这种情况一般将$d(s)$设为策略$\pi$下MDP的平稳分布

Policy Gradient的目标就是寻找最大化$J(\theta)=\overline{v_{\pi}}$的策略

为了计算$J(\theta)$的梯度,我们引入策略梯度定理(Policy gradient theorem):$J(\theta)$的梯度的梯度为

其中$\pi(a|s,\theta)$必须非负,softmax激活可以实现这一要求

REINFORCE

通过策略梯度定理,我们可以得到最大化$J(\theta)$的随机梯度上升算法

若使用MC估计近似$q(s,a)$,则称为REINFORCE算法

为使其直观含义更清晰,我们将上述公式转化为如下形式

其中的系数$\beta=\frac{q(s,a)}{\pi(a|s,\theta)}$很好的平衡了对动作的利用(exploitation)探索(exploration)

一方面,$\beta$正比于$q(s,a)$,若$q(s,a)$很大,则选择动作$a$的概率$\pi(a|s)$将进一步增大,也即充分利用(exploit)了价值大的动作

另一方面,当$q(s,a)>0$时,$\beta$反比于$\pi(a|s)$,如果$\pi(a|s)$很小,那么选择动作$a$的概率$\pi(a|s)$将增大,也即尽可能尝试探索(exploration)低概率动作

理论上,为了更好地近似梯度中的期望,状态$s$应该根据$d(s)$进行采样,然而为了效率,实际中常常直接根据策略$\pi$产生一个完整的episode作为样本

REINFORCE

REINFORCE with baseline

由于MC方法对$q_{\pi}(s,a)$进行估计的方差很大,上述REINFORCE算法在实际中表现并不好

实际上,只需要将策略梯度定理中$q_{\pi}(s,a)$减去一个基线$b(s)$,就能显著提升效果

只要基线的选择与动作无关,期望值就不会改变,因为

但是基线的引入可以影响梯度的方差,可以证明,使得梯度方差最小的最优基线为

实际中为了效率,我们一般使用近似最优的基线

这个基线恰好就是state-value $v_{\pi}(s)$

带基线的REINFORCE使用一个参数化网络$v(s;w)$对$v_{\pi}(s)$进行近似,其伪码如下

REINFORCE_baseline

Actor-Critic

上述REINFORCE算法使用MC对策略梯度中的Q值进行估计

如果我们使用TD learning估计Q值,则称为actor-critic方法,其中actor对应于策略网络,critic对应于价值网络

最简单的actor-critic方法称为Q actor-critic (QAC) ,其使用SARSA算法更新actor的参数

QAC

类似地,我们可以将基线$b(s)=v_{\pi}(s)$引入actor-critic方法,称为Advantage Actor-Critic (A2C)算法

A2C中将$\delta{\pi}=q{\pi}(s,a)-v_{\pi}(s)$称为优势函数(advantage function)

根据定义,$v{\pi}(s)=\sum{a\in A}\pi(a|s)q{\pi}(s,a)$是$q{\pi}(s,a)$的均值,因此优势函数反映了选择动作$a$是否比平均更好

值得注意的是,实际中A2C算法使用TD error近似优势函数,因此只需要维护一个网络

A2C算法的伪码如下

A2C