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可以写成如下形式: