Chapter13 Policy Gradient Methods

目前为止讨论的的强化学习算法都是基于value的,即通过学习value来决定policy,这章绕过value这个学习目标,虽然仍然会更新value,但是学习目标是得到一个参数化的policy,来直接进行决策。

Policy Approximation and its Advantages

policy可以以任意形式参数化,前提是policy:π(a|s,Θ)关于它的参数是可微分的,即∇_θ π(a|s,θ)存在且有限,同时为了保证policy可以提供exploration,π(s|a,Θ)不能是决定的,即∈(0,1), for all s,a,θ.这个section首先讨论离散的action的一种常见的参数化policy方式,以及其对应的优点,关于连续的action会在本章后续section进行讨论。

如果action离散且有限,那么一种常见的参数化方法就是为每个state-action对设置偏爱值:preferences h(s, a, θ) ∈ R,对应的公式和在第二章里使用的preference一致,通过如下的softmax分布来选取对应的偏爱值高的action:

png

使用基于action preference: h(s|a)有以下3个优点:

1、最直接的优点就是基于action preference的参数化policy更接近于deterministic policy,而前面经常用的基于action value的epsilon-greedy会有一定概率选择随机的action。当然你会考虑是否可以使用基于action value的softmax分布来选择action?这也是不无依据的,wiki上关于softmax在RL的应用有如下公式:

png

随着训练过程,action value将会收敛,导致基于action value的softmax分布收敛到一系列确定的值。但是注意到这里还有一个 temperature parameter:τ,如果τ过大,会导致softmax分布近似为均匀分布,所以希望τ可以适应action value的变化。一般情况下,在训练中随着action value的收敛,需要不断减少τ的值来增强deterministic,但是减少的方法以及τ的初始值都需要对action value有一定的先验知识,使得实现起来比较困难。但是基于action preference的softmax分布就不存在这样的问题,因为它得到的不是确定的值,而是得到optimal stochastic policy。

2、在讨论第二个优点前,先看一个如下的MDP例子:

png

第一个和第三个state的action导致的结果是正常的,但是第二个state的action导致的结果是相反的,每个action的reward都是-1,最右边是terminal state。

首先是作者对这个问题的认识:

这个MDP问题是困难的,因为所有的non-terminal state都是相同的;使用epsilon-greedy方法只有两个方法,epsilon-left或者epsilon-right。但是效果很差,如果使用action preference可以得到确定的optimal policy,对应大约0.59的right action,效果优于epsilon-greedy方法。

个人觉得这个说法有问题,因为使用epsilon-greedy方法其实是一个评估(evaluation)问题,得到不同的甚至较差的value都是正常的,毕竟你没做优化啊,但是使用action preference的时候通过梯度优化了偏爱函数h(a|s,Θ),所以拿优化问题的结果和评估问题的结果对比本身就是有问题的。其次就是state的相同性(identical),个人觉得random walk问题里的state按照这个说法是不是也都一样的呢?明显总体趋势向右可以达到较优化的结果,而且考虑到第二个state的相反性,结果不应该是完全的右向,所以不太认同这里的一致性。

好了岔远了,现在来讨论第二个优点,即有的问题中最优的policy可能是在多个选择中随机选择的,但是epsilon-greedy不具有这个功能,action preference可以。好吧说实话不太认同。

3、有的问题action preference效果更好。。。感觉除了第一个优点我觉得可能接近deterministic的approximate policy可能会更快收敛,后两个感觉有点片面了。

The Policy Gradient Theorem

要使用GD方法训练policy的参数的话,需要确定一个loss function,这里换了一个名字:performance measure,这里使用符号J(Θ)来表示。在这个section我们先讨论episodic问题,这里我们将episode的start state的基于估计policy π_Θ的state value作为J(Θ):

png

那么如何给出J(Θ)对应的梯度那,首先考虑一下J(Θ)的影响元素,应该是action selections and the distribution of states.前者好理解,就是π(a|s,Θ)嘛,但是state distribution还会受到环境的影响,不能直接给出distribution关于参数Θ的微分。但是我们可以借助如下的Policy Gradient Theorem来避开考虑distribution的微分计算梯度:

png

正比符号∝在episodic task中表示后者需要乘上episode的平均长度,在continuing task中则直接等价于”=”。上式中的μ(s)可以通过下面的公式理解,可以看到μ(s)不但和policy π有关,同时也受到环境的影响:

png

关于Policy Gradient Theorem的证明,书上给出了如下公式变换,先看第一部分:

png

看完之后问题最大的就是最后一步,其中Pr(s->x,k,π)指的是在policy π的条件下,从state s经过k步转换到state x的概率。其实如果把最后一步拆开看就比较明显了:

太长了我就只写2项吧,是不是就可以理解了那?这里还有关于x∈S和k的两个积分号的交换,当k=0时,令Pr(s->x,0,π)=0 when x≠s即顺利完成交换。

理解了第一部分第二部分就好办多了,接下来看第二部分的推导:

png

关于η(s)的替换应该比较清楚了,因为h(s_0) = 1,所以h(s) = 0 when s ≠s_0,可以看到如果是continuing task的话,前面的常数部分=1,如果是episodic task,前面的常数部分等于一个episode的平均长度,因为η(s)代表一个episode中state s出现的平均次数,刚好和上面说的相符。

REINFORCE: Monte Carlo Policy Gradient

We are now ready for our first policy-gradient learning algorithm. 8说了,开冲。

png

png

对应的更新公式如下:

png

We call this algorithm REINFORCE.因为使用了Gt,所以需要等待一个episode结束才能完成一次更新,属于MC方法。下面给出对应的伪代码,因为使用了所以的样本来完成更新,所以属于batch-gradient算法。同时这里使用了ln函数,一种在数学上很常见的替换。

png

当π(a|s,Θ)使用线性h(Θ)的softmax函数时,微分项可以写作如下形式:

png

REINFORCE with Baseline

可以给policy gradient theorem的action value部分添加一个baseline,公式如下:

png

原理是因为baseline引入的总和为0,所以总体上并没有改变梯度的值:

png

因为上一个section使用的是MC方法的REINFORCE方法,所以自然想到使用由MC方法训练得到的w来估计v(St,w)并作为baseline,因为不同的state的value差别可能很大,使用和Gt相适应的baseline,可以有效的降低方差(variance),下面给出对应的伪代码:

png

Actor–Critic Methods

前面使用的MC方法,并没有引入bootstrape,给定的baseline也只是单独的更新,而没有借助到其它的value。事实上通过actor-critic,借助其它value来维护baseline,可以进一步提高训练速度,通过在训练过程中适当的引入bias,可以降低最终的variance,得到全局的优化结果。可以使用如下的更新公式,将one-step的bootstrape引入更新:

png

给出对应的伪代码:

png

如果将TD(0)替换为λ-return方法,加入Eligibility trace,就可以将backward view引入更新公式,伪代码如下:

png

Policy Gradient for Continuing Problems

前面使用的policy gradient theorem对应continuing task仍然适用,通过添加average reward,可以将episodic task的伪代码迁移到continuing task中使用:

png

对应的证明如下:

第一部分的推导很常规,公式如下:

png

在episodic task中,J(Θ)使用的是start state的value,因为这个值不依赖于s,倒也不是说没有关系,但是不是s的函数,即J(Θ)最终是S空间的综合作用。采用一样的想法,continuing task使用r(Θ)作为J(Θ),即average reward,对应的梯度如下,可以看到结果和episodic task一致,但是仍然应该明白它们对应的J(Θ)的意义是不同的:

png

这里涉及到continuing task的distribution问题,和episodic task不一样,这里的μ(s)不是离散的不同的值,而是一个在整个S空间上一致的函数,对应的递推公式如下:

png

Policy Parameterization for Continuous Actions

参数化的policy方法可以适用于action连续的问题。假设action的选取范围是一个实数范围,对应正态分布的选取概率:

png

可以将policy函数设置为参数化的p(x),对应的公式如下:

png

换句话说,主要是需要参数化对应的p(x)中的方差项和偏差项,一般使用如下的公式:

png

更新对应的梯度更新公式如下:

png