本章内容主要参考了UC Berkeley Deep RL Bootcamp的内容,由作者按照自己的理解整理而成
终于到Policy Gradient方法了!
一、引言
reinforcement learning研究的是智能体agent与环境environment进行交互,在交互的过程中学习的问题,RL的根本目的是进行策略的优化,希望最终能够获得最优秀的策略。策略(policy)指的就是一个函数,输入一个当前状态state,输出一个动作action(的分布),相当于给agent指明了一条路线,告诉agent在这个状态下应该如何行动,是一个路线图一样的存在。自reinforcement learning建立以来,人们尝试了多种方法希望求得这个最优policy,对这些方法及方法之间的关系进行大致的分类,结果如下图所示。
可以看到我们之前讨论过的方法基本都属于Dynamic Programming(动态规划)范畴,通过不断的迭代从简单想复杂推进,直至满足Q、V自洽方程组,Lecture 1中提到了Value Iteration方法(主要是state value)以及policy iteration方法,前者是通过对整个空间进行充分的探索,当对整个空间充分了解以后,策略就退化成了简单的greedy方法;后者则是一个不太一样的思路,着眼于policy的本质(给定状态进行动作选择),先对policy进行评估,获得遵循该policy全空间的value function,之后再根据评估的结果按照贪心的原则对policy进行修正,直到收敛为止。以上讨论的这两个方法的操作都是较为初级的,在之后我们详细讨论了value iteration中的Q-Learning方法,相比于state iteration方法,Q-Learning的策略更加明显,不需要采用argmax,可以直接取max值选择。在模型未知(model free)的情况下Q-Learning可以采用sample的方法,结合TD方法进行学习,每次设定一个target,以一定的学习率像其逼近。Q-Learning又有一系列变式,从记录所有状态-动作组合的Tabular Q-Learning到参数化的approximate Q-learning,再到终极形态DQN,以及对DQN存在的一些缺点的改进型(DDQN,Dueling DQN等),这些方法在dynamic programming的基础上建立起了复杂的RL算法系统,但是这些方法的根本想法是类似的,都是试图又简单到复杂(从随机初始化不断优化更新)最终获得关于全空间的价值信息。在获得了这些信息之后,agent每走到一个状态state,就会根据已知的环境信息看一下接下来的动作(到达的状态)的价值几何,之后简单地选择一个价值最高的action去执行。这样的方法看起来已经足够简单,但是实际上还是绕了个弯。在dynamic programming方法中我们主要的着眼点是环境,一直在力图通过建立value function的方法对环境信息有清楚明白的认知,至于策略嘛,在执行的过程中再看一下环境就知道了。但是Reinforcement Learning的最终目标是什么?并不是完整的环境信息,而是一个优秀的policy。优化policy才是我们的最终目标。与Dynamic Programming方法不同,Policy Optimization方法直接着眼于优化policy,从而开辟了一个新天地。
二、Policy Optimization概述
首先我们讨论一下什么是policy。policy是RL中agent的核心,接收环境提供的状态s,输出一个action给到环境。具体来说,policy接受state的输入,输出一个action的分布。我们使用神经网络对policy进行建模,policy的参数就是网络的权重。我们的目标是获得一个最优秀的policy,在这种定义情况之下指的就是期望获得policy参数 θ \theta θ使得 E [ ∑ t = 0 H R ( s t ) ∣ π θ ] E[\sum_{t=0}^HR(s_t)|\pi_\theta] E[∑t=0HR(st)∣πθ]取到最大值。为什么我们在这里定义policy输出的结果是action的分布而不是直接的一个action呢,主要目的是方便policy的优化,达到"policy smoothly change"的目的。
为什么要使用policy optimization方法?主要有如下的三个原因
-
有的时候策略 π \pi π比value function(Q、V)更加简单
例如robotic grasp任务
-
V价值函数不能直接规定action,需要在模型已知的情况下使用argmax函数进行计算
-
Q价值函数虽然相比V价值函数求解动作更为方便,但是也需要遍历所有的动作,这对连续空间/高位动作空间情况提供了挑战
使用一张表格对Policy Optimization方法以及Dynamic Programming方法的优劣进行总结
Policy Optimization | Dynamic Programming | |
---|---|---|
Conceptually | 优化我们真正关心的最终目标—policy | 不直接,依据自洽性,利用问题的结构(MDP) |
Empirically | 只能是on-policy方法。适应性更强,用途更广 | off-policy方法,探索性更强;对于采样的效率更高 |
三、Likelihood Ratio Policy Gradient
根据刚才对policy的定义,我们对policy的优化实际上是为了求得 U ( θ ) = E [ ∑ t = 0 H R ( s t ) ∣ π θ ] U(\theta)=E[\sum_{t=0}^HR(s_t)|\pi_\theta] U(θ)=E[∑t=0HR(st)∣πθ]的最大值,我们定义 τ \tau τ表示轨迹(trajectory),即一个state-action序列 s 0 , u 0 , s 1 , u 1 , ⋅ ⋅ ⋅ , s H , u h s_0,u_0,s_1,u_1,···,s_H,u_h s0,u0,s1,u1,⋅⋅⋅,sH,uh, U ( θ ) U(\theta) U(θ)可以表示为
U ( θ ) = E [ ∑ t = 0 H R ( s t , u t ) ∣ π θ ] = ∑ τ P ( τ ; θ ) R ( τ ) (1) U(\theta)=E[\sum_{t=0}^HR(s_t,u_t)|\pi_\theta]=\sum_\tau P(\tau;\theta)R(\tau)\tag{1} U(θ)=E[t=0∑HR(st,ut)∣πθ]=τ∑P(τ;θ)R(τ)(1)
正如上边(1)式所表示的, U ( θ ) U(\theta) U(θ)表示对参数为 θ \theta θ的policy价值的评估,最右项表示针对该policy下不同trajectory分别计算,每个trajectory所能够获得的reward根据其出现的概率进行加权平均,最终获得的就是该policy对应的价值reward,也就是对该参数 θ \theta θ下policy的评估,我们对这个评估进行梯度下降处理,达到优化的目的。
接下来对(1)进行梯度计算的数学推导
∇ θ U ( θ ) = ∇ θ ∑ τ P ( τ ; θ ) R ( τ ) = ∑ τ ∇ θ P ( τ ; θ ) R ( τ ) = ∑ τ P ( τ ; θ ) P ( τ ; θ ) ∇ θ P ( τ ; θ ) R ( τ ) = ∑ τ P ( τ ; θ ) ∇ θ P ( τ ; θ ) P ( τ ; θ ) R ( τ ) = ∑ τ P ( τ ; θ ) ∇ θ log P ( τ ; θ ) R ( τ ) ∇ θ U ( θ ) ≈ g ^ = 1 m ∑ i = 1 m ∇ θ log P ( τ ( i ) ; θ ) R ( τ ( i ) ) ( 3 ) (2) \begin{aligned} \nabla_\theta U(\theta) &= \nabla_\theta\sum_{\tau}P(\tau;\theta)R(\tau)\tag{2} \\ &=\sum_\tau\nabla_\theta P(\tau;\theta)R(\tau)\\ &=\sum_\tau\frac{P(\tau;\theta)}{P(\tau;\theta)}\nabla_\theta P(\tau;\theta)R(\tau)\\ &=\sum_\tau P(\tau;\theta)\frac{\nabla_\theta P(\tau;\theta)}{P(\tau;\theta)}R(\tau)\\ &=\sum_\tau P(\tau;\theta)\nabla_\theta \log P(\tau;\theta)R(\tau)\\ \nabla_\theta U(\theta) &\approx \hat g = \frac{1}{m}\sum_{i=1}^{m}\nabla_\theta \log P(\tau^{(i)};\theta)R(\tau^{(i)})\ \ \ \ \ \ \ \ (3)\\ \end{aligned} ∇θU(θ)∇θU(θ)=∇θτ∑P(τ;θ)R(τ)=τ∑∇θP(τ;θ)R(τ)=τ∑P(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)=τ∑P(τ;θ)P(τ;θ)∇θP(τ;θ)R(τ)=τ∑P(τ;θ)∇θlogP(τ;θ)R(τ)≈g^=m1i=1∑m∇θlogP(τ(i);θ)R(τ(i)) (3)(2)
通过以上推导,我们就获得了利用采样方法对policy评估函数 U ( θ ) U(\theta) U(θ)求梯度的式子。以上方法是Policy Gradient的核心内容之一,令人惊讶的是,它不仅仅适用于一般的情况,在R不连续甚至未知的情况下,上(3)式仍然适用,对采样的要求也不严格,即便是采样空间是离散的路径集合,上式一样可以获得正确的结果。
由(3)式结合梯度下降的原理,我们可以进行定性分析。如果按照 g ^ \hat g g^进行梯度下降计算,计算后的policy相比计算前会有如下改变:
- R ( τ ( i ) ) R(\tau^{(i)}) R(τ(i))为正的trajectory出现的概率会增加( log P ( τ ( i ) ; θ ) \log P(\tau^{(i)};\theta) logP(τ(i);θ)增加)
- R ( τ ( i ) ) R(\tau^{(i)}) R(τ(i))为负的trajectory出现的概率会降低( log P ( τ ( i ) ; θ ) \log P(\tau^{(i)};\theta) logP(τ(i);θ)降低)
通过梯度下降更新,我们按照以上原则改变了原先policy中不同价值的路径出现的概率,从而达到对路径进行优化的目的,但是实际上并没有对路径进行改变。
如何计算(3)式呢?我们需要对其中 ∇ θ log P ( τ ( i ) ; θ ) \nabla_\theta \log P(\tau^{(i)};\theta) ∇θlogP(τ(i);θ)项进行一些更深入的探讨
∇ θ log P ( τ ( i ) ; θ ) = ∇ θ log [ ∏ t = 0 H P ( s t + 1