这是PG的基础篇,在深度强化学习系列中,有结合例子和监督学习的深刻理解PG的进阶篇。
一、前言
之前我们讨论的所有问题都是先学习action value,再根据所得的action value 来选择action(无论是根据greedy policy选择使得action value最大的action ,还是根据 -greedy policy以 的概率选择使得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方法得到。
本章用性能函数
的梯度来计算policy 参数
:
该方法旨在求出使得 最大的policy 参数 。这种方法被称为Policy Gradient。在episode case中, 为start state value,在continuing case中, 为第10章第4节提到的average reward rate。
二、Policy Approximate and its Advantage
在Policy Gradient(PG)中,Policy可以用任何参数表示成任意形式,只要 与 一一对应,且 存在且有限。实际运用中,为了保证一定的探索性(Exploration),通常假设policy 是不确定的(即对所有s,a, 而言都有 )。此处,我们先介绍离散动作空间的参数化,并说明这种方法比value-based方法好在哪里。连续空间的PG在第8节介绍。
当 action space 离散且不太大时,一般对每个state-action pair 都有一个带参数的性能函数
。**性能函数值越大,对应的action被选择的可能性也越大。**例如,根据exponential softmax distribution:
其中
为自然对数,注意,这需要每一个state对应的所有action probabilities的和为1。性能函数的表达形式比较随意,可以是之前提到的所有函数逼近器。如可以有深层神经网络构成,此时
表示网络的所有权重(如第16章中将说到的AlphaGo);也可以是特征量的线性函数:
用(13.2)式选择action的明显优点就是可以获得一个deterministic policy,而不是根据 -greedy 从action value中选择action(这样有 的概率会选到一个随机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中,性能函数 的一般表达。
在episode case中,通常定义
为一个episode下start state的value,为了简化表达,假设每个episode从某一特定state
开始,则
其中,
是
的true value function,
是由
决定的Policy,假设no discounting (
)。
对函数逼近而言,朝着确保policy提升的方向改变policy parameter是有挑战的。问题在于性能函数取决于action 选择和state distribution,这两者都受到policy parameter的影响。 给定一个state,policy parameter对action和reward的影响可以直接根据参数表达式计算出来。但policy 对state distribution 的影响是关于环境的函数,通常是未知的。 那么我们如何根据Policy parameter 求解性能函数的Gradient呢?
幸运的是,Policy Gradient Theorem可以回答这个问题:
其中,gradient是关于
偏导数的列向量,
是参数向量
对应的policy。符号表示“与…成比例”。在episode case中,比例系数是episode的平均长度,在continuing case中,比例系数为1,即二者等价,
是
下的on-policy distribution。PG定理证明如下:
四、REINFORCE:Monte Carlo Policy Gradient
下面介绍第一个PG方法,回忆SGD公式(13.1)需要获得一系列采样数据,这些sample gradient的期望值和actual gradient成比例。这些sample gradient只需要和gradient成比例就行,因为所有的比例系数都可以纳入
中。PG定理给了gradient成比例的确切表达式,那么接下来就是如何获得这些采样数据。PG定理的右侧是在policy
下state出现的频率和state的乘积累加和。当遵循policy
时,有
给出一个action 的概率
,假设选择了
则
,对
则
:
代入(13.1):
这就是REINFORCE算法,这种更新方式每次增量都与
和一个向量(选择action的概率梯度和选择action的概率之比)乘积成比例,该向量是增强重复选择
的方向:选最高的return 对应的action或最多次被选中的action。
由于REINFORCE算法需要一个episode结束后才更新参数,所以是MC(蒙特卡罗)方法,伪代码如下:
是REINFORCE中唯一出现policy parameter的地方,通常叫做eligibility vector,常记作
。作为一个SGD方法,REINFORCE理论上收敛。
五、REINFORCE with Baseline
(13.5)中的PG可以增加一个action value的baseline(基准),
其中,
可以是任意函数,甚至是随机变量,只要与a无关都行,该等式成立的原因如下:
(13.8)的带baseline 的PG算法,可以根据上一节的方式生成更新公式:
由于baseline的均值为0,则上式是REINFORCE的严格泛化,虽然baseline的期望值对更新无影响,但对更新的方差影响很大。很自然会以state value的估计值
作为baseliine,其中
是前几章中的方法学习到的权重参数,因为REINFORCE是MC方法,所有也可以用MC方法来学习
,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:
其中,
是policy
下的steady-state distribution ,
假设其存在且依赖于
(ergodicity assumption)。注意这是一个稳态分布下的值,当在policy
下选择action时,会保持在同一个distribution:
定义
,
.其中:
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。
正态分布的概率密度函数通常表示如下:
其中,
和
是正态分布的均值和均方差,此处
。
是概率密度,不是概率,可以大于1,
下x轴之上图形的面积为1。
为了生成policy parameterization,可以将policy定义为real-valued scalar action 下的正态分布概率密度,其中,均值和均方差都是policy paramater 的函数,如下:
其中
,
是两个带参数的函数逼近器。为了完成这个例子,我们需要找到这些逼近器的形式。此处,我们将policy parameter向量分为两部分
,一部分用于逼近均值,另一部分用于逼近均方差。均值可以是一个线性逼近,均方差必须是正值,最好是线性函数的指数形式,因此:
其中, 和 是state的特征向量。有了这些定义,所有本章讨论的算法都可以用来学习如何选择real-valued actions。
九、总结
本章阐述了value-based methods和policy-based methods的优缺点,引入了性能函数 ,介绍了PG定理,并详细介绍了episode case下的PG方法:REINFORCE 、REINFORCE-with-baseline(减小偏差,但方差较大)。介绍了结合PG 和value-based methods的Actor{Critic Methods,以及 continuing case下的PG。
David Silver 课程
Reinforcement Learning: an introduction