强化学习系列(十三):Policy Gradient Methods

这是PG的基础篇,在深度强化学习系列中,有结合例子和监督学习的深刻理解PG的进阶篇

一、前言

之前我们讨论的所有问题都是先学习action value,再根据所得的action value 来选择action(无论是根据greedy policy选择使得action value最大的action ,还是根据 ϵ \epsilon -greedy policy以 1 ϵ 1-\epsilon 的概率选择使得action value最大的action ,action的选择都离不开action value 的计算)。即没有action value的估计值就无法进行action选择,也就没有Policy,这类方法被称为value-based methods。但我们难道不可以直接产生不依赖于action value的policy吗?当然可以,这类直接生成action的方法就是policy-based methods。他们的关系如下:

这里写图片描述

  • value-based方法,需要计算价值函数(value function),根据自己认为的高价值选择行为(action)的方法,如Q Learning, sara, 之后会提到的Deep Q Network(DQN)。
  • policy-based方法,不需要根据value function选择action,可以直接得出policy的方法,如PG。
  • 图中第三类方法结合了上述两者,即计算value function,但不直接根据value function选择action,action 由policy-based方法得到。

本章用性能函数 J ( θ ) J(\theta) 的梯度来计算policy 参数 θ \theta :
在这里插入图片描述

该方法旨在求出使得 J ( θ ) J(\theta) 最大的policy 参数 θ \theta 。这种方法被称为Policy Gradient。在episode case中, J ( θ ) J(\theta) 为start state value,在continuing case中, J ( θ ) J(\theta) 为第10章第4节提到的average reward rate。

二、Policy Approximate and its Advantage

在Policy Gradient(PG)中,Policy可以用任何参数表示成任意形式,只要 π ( a s , θ ) \pi(a|s,\theta) θ \theta 一一对应,且 θ π ( a s , θ ) \nabla_\theta \pi(a|s,\theta) 存在且有限。实际运用中,为了保证一定的探索性(Exploration),通常假设policy 是不确定的(即对所有s,a, θ \theta 而言都有 θ π ( a s , θ ) ( 0 , 1 ) \theta \pi(a|s,\theta) \in (0,1) )。此处,我们先介绍离散动作空间的参数化,并说明这种方法比value-based方法好在哪里。连续空间的PG在第8节介绍。

当 action space 离散且不太大时,一般对每个state-action pair 都有一个带参数的性能函数 h ( s , a , θ ) R h(s,a,\theta) \in R 。**性能函数值越大,对应的action被选择的可能性也越大。**例如,根据exponential softmax distribution:
在这里插入图片描述

其中 e x p ( x ) = e x , e 2.71818 exp(x) = e^x, e\approx2.71818 为自然对数,注意,这需要每一个state对应的所有action probabilities的和为1。性能函数的表达形式比较随意,可以是之前提到的所有函数逼近器。如可以有深层神经网络构成,此时 θ \theta 表示网络的所有权重(如第16章中将说到的AlphaGo);也可以是特征量的线性函数:
在这里插入图片描述

用(13.2)式选择action的明显优点就是可以获得一个deterministic policy,而不是根据 ϵ \epsilon -greedy 从action value中选择action(这样有 ϵ \epsilon 的概率会选到一个随机action)。讲到这里,细心的你应该发现了一个问题,这 “性能函数值越大,对应的action被选择的可能性也越大” 是不是和value function选择 action 很像,那为啥不直接用value function作为性能函数呢?

那很自然可以想到根据 action value用 softmax选择action, action-value估计值最终会收敛到对应的true values(通常是不同的有限数,可以转化为0到1之间的概率),因此通常会获得一个确定的策略(deterministic policy)。如果softmax包含一个随着时间降温的温度参数,那么可以得到一个deterministic policy, 但在实际运用时,很难在没有true action value的先验知识时,选择衰减规律或初始化温度参数。

而性能函数不一样,他们不会收敛到一个确定性的值,另外他们会趋向于生成optimal stochastic policy。如果optimal policy是deterministic的,那么optimal action对应的性能函数将远大于suboptimal actions对应的性能函数。

上述解释了policy-based方法和value-based方法在生成policy上的差异:一个随机,一个确定。那么还有什么不同呢?


value-based的特点:

  • 这类方法通常会获得一个确定的策略(deterministic policy),但很多问题中的最优策略是随机策略(stochastic policy)。(如石头剪刀布游戏,如果确定的策略对应着总出石头,随机策略对应随机出石头、剪刀或布,那么随机策略更容易获胜)
  • value function 的微小变化对策略的影响很大,可能直接决定了这个action是否被选取
  • 在连续或高维度动作空间不适用。 因为这类算法的本质是连续化了value function,但动作空间仍然是离散的。对于连续动作空间问题,虽然可以将动作空间离散化处理,但离散间距的选取不易确定。过大的离散间距会导致算法取不到最优action,会在这附近徘徊,过小的离散间距会使得action的维度增大,会和高维度动作空间一样导致维度灾难,影响算法的速度。

Policy-based method 克服了上述问题,可以用于连续或高维度动作空间,且可以生成stochastic policy。

三、The Policy Gradient Theorem

了解了policy-based方法的优点,那么现在来聊聊具体实现的事情吧!下面来说一下,在episode case 和 continuing case中,性能函数 J ( θ ) J(\theta) 的一般表达。

在episode case中,通常定义 J ( θ ) J(\theta) 为一个episode下start state的value,为了简化表达,假设每个episode从某一特定state s 0 s_0 开始,则
在这里插入图片描述
其中, v π θ v_{\pi_\theta} π θ \pi_\theta 的true value function, π θ \pi_\theta 是由 θ \theta 决定的Policy,假设no discounting ( γ = 1 \gamma = 1 )。

对函数逼近而言,朝着确保policy提升的方向改变policy parameter是有挑战的。问题在于性能函数取决于action 选择和state distribution,这两者都受到policy parameter的影响。 给定一个state,policy parameter对action和reward的影响可以直接根据参数表达式计算出来。但policy 对state distribution 的影响是关于环境的函数,通常是未知的。 那么我们如何根据Policy parameter 求解性能函数的Gradient呢?

幸运的是,Policy Gradient Theorem可以回答这个问题:
在这里插入图片描述
其中,gradient是关于 θ \theta 偏导数的列向量, π \pi 是参数向量 θ \theta 对应的policy。符号表示“与…成比例”。在episode case中,比例系数是episode的平均长度,在continuing case中,比例系数为1,即二者等价, μ \mu π \pi 下的on-policy distribution。PG定理证明如下:
在这里插入图片描述
在这里插入图片描述

四、REINFORCE:Monte Carlo Policy Gradient

下面介绍第一个PG方法,回忆SGD公式(13.1)需要获得一系列采样数据,这些sample gradient的期望值和actual gradient成比例。这些sample gradient只需要和gradient成比例就行,因为所有的比例系数都可以纳入 α \alpha 中。PG定理给了gradient成比例的确切表达式,那么接下来就是如何获得这些采样数据。PG定理的右侧是在policy π \pi 下state出现的频率和state的乘积累加和。当遵循policy π \pi 时,有
在这里插入图片描述
给出一个action 的概率 π ( a s t , θ ) \pi(a|s_t,\theta) ,假设选择了 a = A t a=A_t π ( a s t , θ ) = 1 \pi(a|s_t,\theta)=1 ,对 a A t a\neq A_t π ( a s t , θ ) = 0 \pi(a|s_t,\theta)=0 :
在这里插入图片描述
代入(13.1):
在这里插入图片描述
这就是REINFORCE算法,这种更新方式每次增量都与 G t G_t 和一个向量(选择action的概率梯度和选择action的概率之比)乘积成比例,该向量是增强重复选择 A t A_t 的方向:选最高的return 对应的action或最多次被选中的action。

由于REINFORCE算法需要一个episode结束后才更新参数,所以是MC(蒙特卡罗)方法,伪代码如下:
在这里插入图片描述
θ π ( A t S t , θ t ) π ( A t S t , θ t ) \frac{\nabla_\theta\pi(A_t|S_t,\theta_t)}{\pi(A_t|S_t,\theta_t)} 是REINFORCE中唯一出现policy parameter的地方,通常叫做eligibility vector,常记作 θ l n π ( A t S t , θ t ) ( l n x = x x ) \nabla_\theta ln\pi(A_t|S_t,\theta_t)(\nabla lnx=\frac{\nabla x}{x}) 。作为一个SGD方法,REINFORCE理论上收敛。

五、REINFORCE with Baseline

(13.5)中的PG可以增加一个action value的baseline(基准),
在这里插入图片描述
其中, b ( s ) b(s) 可以是任意函数,甚至是随机变量,只要与a无关都行,该等式成立的原因如下:
在这里插入图片描述
(13.8)的带baseline 的PG算法,可以根据上一节的方式生成更新公式:
在这里插入图片描述
由于baseline的均值为0,则上式是REINFORCE的严格泛化,虽然baseline的期望值对更新无影响,但对更新的方差影响很大。很自然会以state value的估计值 v ^ ( s t , w ) \hat v(s_t,\mathbf w) 作为baseliine,其中 w \mathbf w 是前几章中的方法学习到的权重参数,因为REINFORCE是MC方法,所有也可以用MC方法来学习 w \mathbf w ,REINFORCE with baseline的伪代码如下:
在这里插入图片描述

六、Actor–Critic Methods

尽管REINFORCE-with-baseline方法同时学习了state-value函数,但不是actor-critic方法,因为state-value function只用于baseline,而不是critic。

REINFORCE-with-baseline 是无偏的,但是会收敛到一个局部最小值,但和所有的MC方法一样,学习速度慢,方差大,不方便用于连续或在线问题。之前说TD方法可以消除这些隐患,multi-step方法可以选择bootstrapping的程度,为了利用这些优势,采用AC结构,PG为Actor,bootstrapping为critic。

首先,考虑one-step AC ,即PG与TD(0),Sarsa(0)和Q-learning方法结合,one-step方法的特点在于是online且incremental,避免了复杂的eligibility trace。他们是一种独特的eligibility trace方法,one-step AC方法如下:
在这里插入图片描述
通常用semi-gradient TD(0)求解,算法伪代码如下:
在这里插入图片描述
在这里插入图片描述

七、Policy Gradient for Continuing Problems

前几节我们介绍了episode case下的PG方法,接下来我们来看continuing case下的PG。10.3中(本系列第十章第四小节),我们介绍了连续问题的average rate reward:
在这里插入图片描述
其中, μ \mu 是policy π \pi 下的steady-state distribution , μ ( s ) = l i m t P r { S t = s A 0 : t π } \mu(s) = lim_{t_\to\infty}Pr\{S_t =s|A_{0:t}\sim\pi\} 假设其存在且依赖于 S 0 S_0 (ergodicity assumption)。注意这是一个稳态分布下的值,当在policy π \pi 下选择action时,会保持在同一个distribution:
在这里插入图片描述
定义 v π ( s ) = E π [ G t S t = s ] v_\pi(s) = E_\pi[G_t|S_t=s] , q π ( s , a ) = E [ G t S t = s , A t = a ] q_\pi(s,a)=E[G_t|S_t=s,A_t=a] .其中:
在这里插入图片描述
episode case中的PG定理(13.5)在continuing case 中仍然是对的。证明如下框图所示。forward 和 backward view 等式保持不变,AC算法伪代码如下:
在这里插入图片描述
在这里插入图片描述

八、Policy Parameterization for Continuous Actions

Policy-based methods 提供了一种处理较大action space甚至continuous spaces的有效方法。不通过计算所学的每个action 的概率,此处我们学习概率分布。举个例子,action set可能是实数,根据Gaussian distribution (正态分布)选择action。

正态分布的概率密度函数通常表示如下:
在这里插入图片描述
其中, μ \mu σ \sigma 是正态分布的均值和均方差,此处 π 3.14159 \pi \approx 3.14159 p ( x ) p(x) 是概率密度,不是概率,可以大于1, p ( x ) p(x) 下x轴之上图形的面积为1。

为了生成policy parameterization,可以将policy定义为real-valued scalar action 下的正态分布概率密度,其中,均值和均方差都是policy paramater 的函数,如下:
在这里插入图片描述
其中 μ : S × R d R \mu:S \times R_d' \to R σ : S × R d R + \sigma:S \times R_d' \to R^+ 是两个带参数的函数逼近器。为了完成这个例子,我们需要找到这些逼近器的形式。此处,我们将policy parameter向量分为两部分 θ = [ θ μ , θ σ ] T \mathbf \theta = [\mathbf \theta_\mu,\mathbf \theta_\sigma]^T ,一部分用于逼近均值,另一部分用于逼近均方差。均值可以是一个线性逼近,均方差必须是正值,最好是线性函数的指数形式,因此:
在这里插入图片描述

其中, x μ ( s ) \mathbf x_\mu(s) x σ ( s ) \mathbf x_\sigma(s) 是state的特征向量。有了这些定义,所有本章讨论的算法都可以用来学习如何选择real-valued actions。

九、总结

本章阐述了value-based methods和policy-based methods的优缺点,引入了性能函数 J ( θ ) J(\mathbf \theta) ,介绍了PG定理,并详细介绍了episode case下的PG方法:REINFORCE 、REINFORCE-with-baseline(减小偏差,但方差较大)。介绍了结合PG 和value-based methods的Actor{Critic Methods,以及 continuing case下的PG。

David Silver 课程
Reinforcement Learning: an introduction

猜你喜欢

转载自blog.csdn.net/LagrangeSK/article/details/82865578