[强化学习-6] 策略梯度

强化学习的目标是学习一个策略来获得最大的累计奖励,之前的几篇博客是value-based的方法,即先估计状态价值V(s)或者状态动作价值Q(s, a),然后根据这些估值得到策略,而本文要讲一下policy-based的方法。

Policy-based 简介

value based中,有了Q值后就可以根据epsilon greedy进行策略选择,但是这有个问题就是说这个策略是确定性策略,确定性策略是说只要给定一个状态s,就会输出一个具体的动作a,而且无论什么时候到达状态s,输出的动作a都是一样的。而随机策略是指,给定一个状态s,输出在这个状态下可以执行的动作的概率分布。即使在相同状态下,每次采取的动作也很可能是不一样的。 比如你玩剪刀石头布时如果是确定性策略,这样就肯定输了

那么我们能不能直接学习策略呢,就是用带参数θ的函数近似出给定状态后采取各个动作的概率

πθ(s,a)=P[a|s,θ] π θ ( s , a ) = P [ a | s , θ ]

优点:
- 容易收敛,因为每一次改善都是直接对策略进行改进,而value based时在后期迭代时有时会发生震荡不收敛
- 动作空间高维或者连续时更加高效,在value based需要计算所有动作的Q值
- 能学到一些随机策略
缺点:
- 容易收敛到局部最优而不是全局最优
- 评价策略时不是很高效而且方差很大

Policy Gradient

以下引自深度增强学习之Policy Gradient方法1

要更新策略网络,或者说要使用梯度下降的方法来更新网络,我们需要有一个目标函数。对于策略网络,目标函数其实是比较容易给定的,就是很直接的,最后的结果也就是所有带衰减reward的累加期望。

那么问题就在于如何利用这个目标来更新参数 θ θ 呢?咋一看这个损失函数和策略网络简直没有什么直接联系,reward是环境给出的,如何才能更新参数?换个说法就是如何能够计算出损失函数关于参数的梯度(也就是策略梯度): θL(θ) ∇ θ L ( θ ) 咋一看根本就没有什么思路是不是,所以先换一个思路来考虑问题。
改变动作的出现概率!
现在我们不考虑别的,就仅仅从概率的角度来思考问题。我们有一个策略网络,输入状态,输出动作的概率。然后执行完动作之后,我们可以得到reward,或者result。那么这个时候,我们有个非常简单的想法:
如果某一个动作得到reward多,那么我们就使其出现的概率增大,如果某一个动作得到的reward少,那么我们就使其出现的概率减小。
当然,也显然的,用reward来评判动作的好坏是不准确的,甚至用result来评判也是不准确的。毕竟任何一个reward,result都依赖于大量的动作才导致的。但是这并不妨碍我们做这样的思考:

如果能够构造一个好的动作评判指标,来判断一个动作的好与坏,那么我们就可以通过改变动作的出现概率来优化策略!
假设这个评价指标是f(s,a),那么我们的Policy Network输出的是概率。一般情况下,更常使用log likelihood logπ(a|s,θ) l o g π ( a | s , θ )
因此,我们就可以构造一个损失函数如下:

L(θ)=logπ(a|s,θ)f(s,a) L ( θ ) = ∑ l o g π ( a | s , θ ) f ( s , a )

另一个角度:直接算
f(s,a)不仅仅可以作为动作的评价指标,还可以作为目标函数。就如同AlphaGo,评价指标就是赢或者输,而目标就是结果赢。这和之前分析的目标完全没有冲突。因此,我们可以利用评价指标f(s,a)来优化Policy,同时也是在优化的同时优化了f(s,a).那么问题就变成对f(s,a)求关于参数的梯度。下面的公式直接摘自Andrej Karpathy的blog,f(x)即是f(s,a)
这里写图片描述
从公式得到的结论可以看到正好和上一小结分析得到的目标函数一致。
因此,Policy Gradient方法就这么确定了。
李宏毅老师ppt
这里写图片描述
这里写图片描述

Baseline的使用
我们的调整动作概率的目的是让reward变大,某个动作收益越高它的概率要提高,如果所有动作的reward的都是正,那么概率都会提高,最后一归一化reward低的动作概率就低了。可是这是理想情况,我们的trajectory是采样的,如果某个动作未被采样那么它的概率就会降低,所以我们一般会设置一个 baseline,reward超过这个baseline的才会提高概率,低于的会降低概率。
这里写图片描述

Actor-Critic

使用蒙特卡洛策略梯度方法使用了收获作为状态价值的估计,它虽然是无偏的,但是噪声却比较大,也就是变异性(方差)较高。如果我们能够相对准确地估计状态价值,用它来指导策略更新,那么是不是会有更好的学习效果呢?这就是Actor-Critic策略梯度的主要思想。
这里写图片描述
这里写图片描述


相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页