强化学习(4)- Policy Gradient and Actor-Critic
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 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)$进行近似,其伪码如下
Actor-Critic
上述REINFORCE算法使用MC对策略梯度中的Q值进行估计
如果我们使用TD learning估计Q值,则称为actor-critic方法,其中actor对应于策略网络,critic对应于价值网络
最简单的actor-critic方法称为Q actor-critic (QAC) ,其使用SARSA算法更新actor的参数
类似地,我们可以将基线$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算法的伪码如下