策略梯度算法这一课我觉得还挺抽象的,有些也听不是太懂,可能是因为这一课的视频里帅帅的David没有出现……只有PPT,而且配合声音切换得不太好,看着很是不爽。不过看完了还是要来整理啊,不然像我这种不现学现用的,过几天就忘了hh,岂不是白看~好啦言归正传!

策略梯度的思想在上一篇文章中已经简要介绍过,可以用来快速逼近函数值,这一课就主要来介绍一下用策略梯度优化的核心思想和常用的三种方法,由浅入深是Finite
Differences Policy Gradient 、Monte Carlo Policy Gradient 、Actor-Critic Policy
Gradient。

一、 算法思想

在上一篇值函数近似算法中,我们用带有参数w的函数估计值来近似价值函数V(s)或动作价值函数Q(s ,
a),从而来选择或是说调整能够优化函数值的策略,这是我们常说的基于值函数的方法(Value-Based)。事实上,我们想做的就是对策略的控制,在策略梯度算法中,我们直接对策略进行参数化,通过控制这些参数权重,直接选择比较好的行为,也就是基于策略的方法(Policy-Based)。





当然,一种思想能被推广使用肯定要有它的优点。基于策略的优点就是有更好的收敛性,并且能够有效解决高维或者连续动作空间问题,再者就是能够学习随机策略。同时,它也有容易陷入局部最优的缺陷,并且总体更新效率略低于基于函数值的方法。以下这张图片表明了QAC和这两种思想的关系。




二、目标函数


从上面一个图片中策略π的表达式可以明确我们的算法目标,就是找到最好的参数θ。自然而然的,我们就想到了目标函数,没有目标函数就没办法来衡量策略的好坏,继而没法更新权值,下面根据不同的思想,将目标函数的表达形式分为三种:





第一个就是初始价值函数,就是来看看总是从状态S1开始,根据策略分布走能得到多好的回报;第二个是奖励的平均值,是在某一状态的奖励平均值,这就可以不在初始状态S1了;第三个是由平均奖励/时间步数,是想获得当下状态的奖励的分配值。

三、策略梯度

关于梯度上一篇文章已经大致讲过了,J(θ)是策略目标函数,可以是上面举例的任何一种,策略梯度如下图所示:(对目标函数求偏导)




参数向量θ的更新方向是梯度上升或下降最快的方向。具体公式如下,其中α是步长参数,在0到1之间,可以自己选定。



我们应用Likelihood ratios,可以将梯度计算进行转化,得到Score Function,接下来都会用到这个概念:


策略梯度定理如下图所示,可能会一下子看不懂,策略梯度就是得分函数和价值函数乘积的期望。是从one-step MDPs推导出来的,篇幅有限,先不展开了。



四、方法举例

下面分类说说三种不同的策略梯度算法~怎么应用,更新规则是什么。

1. Finite Difference


这是最简单的一种策略梯度方法,也就是只看目标函数,对其进行数值计算,具体方法是在每个维度k上都对参数进行一个小的干扰,记录干扰前和干扰后目标函数的差值,然后计算沿着该维度方向的策略梯度。由于需要对每个维度都进行梯度求取,因此在高纬度大空间的问题上很不适用,但好处是及时策略是不可微的,对于这种方法还是适用。公式如下:




了解了这种方法的思路后,接下来对应于不同具体的策略进行一些展开的介绍。

(1)softmax policy


在这里,采用线性特征组合而成向量,智能体选取某个动作的概率,跟用特征线性组合算出的指数值成正比,是一种在离散领域确定最优策略的常用方式。概率大的动作会更多地被智能体选择并执行。




(2)Gaussian policy


在连续动作空间中,最常用的就是高斯策略。用状态特征与权重的线性组合表示平均值,方差可以是固定的也可以是时变的,使用正态分布的高斯策略,同样,它也有它的Score
Function。




2. Monte Carlo Policy Gradient 

这是一个比较有名也有些年岁的算法,主要是用随机梯度上升来优化参数,用Vt来估计Q值,在每一个时间步上,进行完整抽样,采取一个动作,看看得到的回报,并把它植入策略梯度定理得出一个更新方向来优化参数。具有因为它蒙特卡罗思想,所以是对某些片段来说的。总的来说就两个步骤,抽样累计回报和更新参数。


3. Actor-Critic Policy Gradient

把价值函数比近算法和策略梯度下降法进行结合就得到了上述的Actor-Critic Policy
Gradient,简单来说,它是由两个网络组成的,其中Actor网络是在环境中真正执行动作的那个一,它包含了策略及其参数,负责选取动作。Critic网络不做任何动作,它是用来对动作利用值函数逼近进行评估,用近似的Q来代替真实的Q值,对Actor网络进行一个评价。根据Critic的评价,Actor会调整自身网络的参数值,往表现更好的方向进行一个更新。举一个算法例子来看看具体的流程。




可以看出,由于使用了TD(0),上述算法就不需要像蒙特卡罗策略梯度方法一样等到回合结束,这是一个在线算法,Actor每走一步,都可以得到调整和在线更新。

五、结束语


关于策略梯度,David其实还讲了挺多内容和技巧,比如说怎样减小方差,利用优势函数啊等等,由于这节课没有什么比较形象有利于理解的解决问题的例子,我自己水平和时间也有限,就做这么多阐述(搬运)。David后面的几节课我都不整理啦,因为暂时没时间看,最多抽一点空把前面TD
Learning的内容补充了,江湖再见。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信