深度强化学习之Policy Gradient & Actor-Critic Model & A3C

版权声明:本文为博主原创文章,未经博主允许不得转载,否则将通知维权骑士维护自己的权益。 https://blog.csdn.net/c602273091/article/details/79039896

policy gradient

在之前的DQN是进行value function的approximation,是value-vased RL。这次要讲的是policy-based RL。

对于RL的policy直接进行参数表示:比如可以输入state(一幅图片,一个feature vector),然后由带有参数的某种算法(比如linear regression,deep learning)计算得出对不同的action的一个probability distribution。对于符号的表示,Sutton的书里面用的是另外一种符号。
这里写图片描述

policy-based RL可以使用model-free进行训练,就是不需要对environment进行建模。policy-based RL可以更好收敛,可以在高维和连续action space进行训练。可以学习stochastic policy(概率,可求导)缺点是容易陷入local optimum。同时对于一个policy进行evaluating会有high variance,这里主要是因为采用MC计算了value,所以有较大的variance。之后会说到如何解决这个问题。

Stochastic Policy相比于Deterministic Policy有它的好处在于不确定性,随机性。Stochastic Policy的输出采用sampling或者是argmax。比如在猜拳的时候,如果策略的固定的,那么就容易被猜中你的下一步是什么。采用Stochastic Policy,uniform random policy,就可以得到更优的reward,比如纳什均衡。

value-based RL在同样的状态的时候,有时候获得最优解的概率更低。比如下图中gridworld,灰色部分是一模一样的state,如果是value-based RL就会对这两个state执行一样的action,那么就会有50%的概率无法拿到黄金(reward)。
这里写图片描述

如果是采用policy-based policy,那么就会随机向两边走,都有可能。那么获取更高reward的概率更高。
这里写图片描述

那么给定了一个policy,如何判断一个policy的好坏呢?衡量一个policy的好坏呢?

我们采用MC或者TD计算state value来获得policy objective function的表达。可以用start value,计算某个state的value(在episodic environments)。
这里写图片描述

在continuing environment中,使用average value:
这里写图片描述
或者采用average reward per time step:
这里写图片描述

这里的d是Markov chain,是在policy的作用下的stationary distribution,其实都是含有 θ 的函数表达式。

所以policy-based RL就是要找到参数来最大化 J( θ ),有些方法用hill climbing,genetic algorithms,更有效的方法就是梯度下降(gradient descent,conjugate gradient,quasi-Newton)那么要最大化J( θ ),那么更新应该就是应该往梯度的方向更新(这里是最大化Objective,和深度学习的minimize loss要注意区分)
这里写图片描述
α 是learning rate,另外一部分是policy gradient。
这里写图片描述

在计算求导部分,有一个叫做automation differentiation的东西,计算的是J( θ )的导数,当里面的unit vector为0的时候,gradient不变,通过这样的方法debug代码。
这里写图片描述

所以,至此我已经把policy-based RL中的优化目标介绍了 J( θ )。接下来介绍policy function求导,再介绍两者之间的联系。

policy gradient可以写成如下形式:
这里写图片描述

求导部分被称为 score function:
这里写图片描述

针对离散action space,使用softmax policy。weight action可以用linear regression来计算,所以处于state s的action可以表示为:(这里的feature可以用NN的输出feature代替)
这里写图片描述
所以,score function就可以计算为:(对上面的式子进行求导,这里加入了一个expectation,我觉得这个有点儿类似后面说的baseline,如果当前的action执行后,action value高于baseline->state value,说明这个action是好的,应该给予正向更新,往这个好的方向前进。也就是最大化value的方向。如果是执行action以后,比baseline更低的话,那么在该状态下这个action是不好的,应该给予负向反馈。没有这个expecatation的话,那么梯度都是正的了,没有好坏之分了)
这里写图片描述

针对连续action space,那么就使用高斯了。既然计算高斯就是计算均值和方差。
这里写图片描述
计算均值:
这里写图片描述
score function:(由高斯函数求导可以得到)
这里写图片描述
这里输入的action是continuous的值。在这里可以看到并不像discrete加入了expectation,是因为在score function里面本来就存在了mean value。

所以,我现在把objective function J( θ )和policy gradient结合起来看。
如果从状态s出发,然后在一个time-step结束的话,那么reward为:
这里写图片描述

使用average reward作为objective:
这里写图片描述
那么在policy下,reward expectation可以计算为每个状态下,执行action获得reward的综合。处于状态有一个probability,所以用 Pθ(s,a) ,同时根据条件概率,这个 Pθ(s,a) 可以表示为P(s)* π(θa|s) 。那么移动sum operator可以得到:
这里写图片描述
然后这个expectation reward就是J( θ ),对其求导可以得到:
这里写图片描述
首先state的分布求和结果就是1,另外对于第二个求和的操作和 θ 无关,那么就可以移动这个sum operator到reward前面,根据MDP的计算,这个就是r。所以最终的gradient就是:
这里写图片描述

但是,刚才只是用one-step reward之后就进行状态终止,也就是用immediate reward来拟合value,所以对于policy gradient可以表示为:
这里写图片描述

既然这里提及到了Q value,那么就可以使用return value代替,比较Q value的含义就是在某个state执行action之后的 Gt 。计算 Gt 就可以使用MC。所以针对 Gt 的gradient为:
这里写图片描述
伪代码为:在这里可以发现有一个discount factor,这是在计算 Gt 的时候才会出现的。不过这里加上这个主要是因为越往后的 Gt 越不靠谱,可信度越低。
这里写图片描述

所以计算完policy的gradient之后:
这里写图片描述

更新权重:对于这个公式,上面的部分计算梯度,使得函数往更好的return走,return越高,更新后的权重越倾向于这个action。同时除以分母就是做一个类似于normalizetion的操作。
这里写图片描述

至此,policy gradient介绍完了,以及如何进行权值更新,接下来介绍value function和policy function的结合。

不过还有一个坑要填,就是在policy-based model会有很高的variance,那是因为使用了MC进行episode采样,太高的variance,就很难进行训练,训练的结果也是divergence的。为此,这里提出了一个叫做baseline的东西。

首先定义一个baseline function B(s),是关于state的函数。把B(s)替换Q,得到:
这里写图片描述
因为B(s)和action没有关系,所以B(s)其实用什么都是可以的,一般来说选取这个state的value,那么就可以更好知道执行了action的好坏了。
这里写图片描述

现在把B(s)加入到J( θ )中,用Q减去B,也就是Q-V。你会发现,这个结果就是advantage function:
这里写图片描述

因为刚才已经证明了对B(s)求导是0,所以对有advantage function进行求导和对有q value的是完全一样的。
这里写图片描述
这里写图片描述

actor-critic

在刚才介绍policy function会引入high variance,引入baseline可以减少variance。因为加入了baseline以后会把关注点集中在与action,而不是state原本的好坏。现在,在MC采样计算Q引入的variance,我们使用上一篇博客提出的DQN来近似计算,就可以减少variance。
这里写图片描述

那么我们就有了action-value approximation(actor, w)以及state-value approximation(critic, θ )。

action-function的参数更新把approximation action value为:
这里写图片描述

那么把两个同时训练,可以得到如下伪代码。
这里写图片描述

A3C

使用advantage function可以大大降低variance,前提在于能够使用正确的Q value function,因为这个Q是由另外一个函数拟合的。所以在这里,使用的approximation action-value和state-value都是在policy指导下进行的。这样就保证了这两套参数(policy function和value function)同步。
这里写图片描述

在DQN中介绍过Dueling Networks,将Q network分成两个。现在才去一样的策略,不过这次最终是训练A,Q和V被分开。
这里写图片描述

对于advantage function的estimating还可以用TD error计算:
这里写图片描述

这里写图片描述
所以计算action function的gradient可以写成:
这里写图片描述

在实际中,使用value function来获取state value(value function拟合state value来计算TD error)
这里写图片描述
这样就把state value function加入了进来。

现在来说一下critic部分的权重更新,state value可以有多种计算。MC,TD,TD( λ )。
使用MC更新v:
这里写图片描述
使用TD更新v:
这里写图片描述

更新actor部分:
使用MC的话:
这里写图片描述
使用one-step TD:
这里写图片描述

所以综合以上,得出Advantage Actor-Critic Algorithm:
这里写图片描述

然后A3C全称就是Asynchronous Advantage Actor-Critic Algorithm,是一种分布式的更新w, θ 的方法。把上述的repeat部分分到不同器件上计算,然后再一起更新权值。

现在对刚才说的actor-critic进行总结,可以知道:
这里写图片描述

在计算Q value的时候,由于是使用Q value function,那么就会产生bias,所以如何避免bias呢?如果能够满足以下条件就可以避免bias。
这里写图片描述
满足的话就可以证明policy gradient可以表示为:
这里写图片描述

具体证明如下,就是把上面的条件带入,在第二个式子是对error进行w求导得到。把条件一代入第三行,所以最终有了第四行的结论。
这里写图片描述

所以我们得到的是:
这里写图片描述

我们可以发现在action function的gradient ascent中,最好就是对policy进行reparametrized并同时不要改变action probability。

这里介绍一个叫做natural policy gradient的方法。就是在传统的梯度计算的基础上加入Fisher information。
这里写图片描述

Gθ 是Fisher information matrix。
这里写图片描述

在linear model下,natural policy gradient可以计算为:
这里写图片描述

所以就是:(因此在有的论文里面提出可以把value function和action function训练在一个网络里面,只是输出部分做不一样的输出。)
这里写图片描述

actor-critic是最近火起来了,比如2015年的ICML的《Show, Attend and Tell: Neural Image Caption Generation with Visual Attention》。当然,最经典还是2014年Deepmind的《Recurrent Models of Visual Attention》。对于Recurrent Models of Visual Attention这篇论文之后我会把它解析一遍。

整个框架如下:RNN+RL的组合~
这里写图片描述

转载请注明出处: http://blog.csdn.net/c602273091/article/details/79039896

Useful Links:
1. Policy gradient 1: https://www.youtube.com/watch?v=jm7x6G94_aM&edit=vd
2. Policy gradient 2: https://www.youtube.com/watch?v=QG4tW4U-3cE&edit=vd
3. Policy Gradient 3: https://www.youtube.com/watch?v=jm7x6G94_aM&edit=vd
4. Policy Gradient 4: https://www.youtube.com/watch?v=QG4tW4U-3cE&edit=vd
5. A3C: https://www.youtube.com/watch?v=O79Ic8XBzvw
6. Asynchronous Methods for Deep Reinforcement Learning:https://arxiv.org/abs/1602.01783
7. 梯度下降总结: http://blog.csdn.net/shuzfan/article/details/75675568

猜你喜欢

转载自blog.csdn.net/c602273091/article/details/79039896