前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Policy Gradient - 策略梯度

Policy Gradient - 策略梯度

作者头像
Steve Wang
发布2019-08-29 14:19:41
6210
发布2019-08-29 14:19:41
举报
文章被收录于专栏:从流域到海域从流域到海域

策略梯度(Policy Gradient)

在一个包含Actor、Env、Reward Function的强化学习的情景中,Env和Reward Function是你所不能控制的。

Actor的策略π\piπ是一个参数为θ\thetaθ的网络

  • 输入:以向量或者矩阵表示的机器观察
  • 输出:关联到输出层某个神经元的一个动作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

策略执行的过程可以表示为一个迹(Trajectory)τ={s1,a1,s2,a2,...,sT,aT}\tau=\{s_1,a_1,s_2,a_2,...,s_T,a_T\}τ={s1​,a1​,s2​,a2​,...,sT​,aT​}

在这里插入图片描述
在这里插入图片描述

pθ(τ)=p(s1)pθ(a1∣s1)p(s2∣s1,a1)pθ(a2∣s2)...=p(s1)∏pθ(at∣st)p(st+1∣st,at)p_{\theta}(\tau)=p(s_1)p_\theta(a_1|s_1)p(s_2|s_1,a_1)p_\theta(a_2|s_2)...=p(s_1)\prod p_\theta(a_t|s_t)p(s_{t+1}|s_t,a_t)pθ​(τ)=p(s1​)pθ​(a1​∣s1​)p(s2​∣s1​,a1​)pθ​(a2​∣s2​)...=p(s1​)∏pθ​(at​∣st​)p(st+1​∣st​,at​)

引入奖励机制的话:

在这里插入图片描述
在这里插入图片描述

策略π\piπ的奖励期望: R‾θ=∑R(τ)pθ(τ)=Eτ∼pθ(τ)[R(τ)]\overline{R}_\theta=\sum R(\tau)p_\theta(\tau)=E_{\tau \sim p_\theta(\tau)}[R(\tau)]Rθ​=∑R(τ)pθ​(τ)=Eτ∼pθ​(τ)​[R(τ)]

策略π\piπ的总奖励: R(τ)=∑t=1TrtR(\tau)=\sum_{t=1}^Tr_tR(τ)=t=1∑T​rt​

策略梯度的计算方法: ∇R‾θ=∑R(τ)∇pθ(τ)=∑R(τ)pθ∇pθ(τ)pθ(τ)\nabla \overline{R}_\theta = \sum R(\tau)\nabla p_\theta(\tau)=\sum R(\tau)p_\theta \frac{\nabla p_\theta(\tau)}{p_\theta(\tau)}∇Rθ​=∑R(τ)∇pθ​(τ)=∑R(τ)pθ​pθ​(τ)∇pθ​(τ)​

由上式,计算策略梯度是,R(τ)R(\tau)R(τ)不需要必须是可微的,甚至可以是一个黑盒。因为不需要对它进行求导。

借助∇f(x)=f(x)∇logf(x)\nabla f(x)=f(x)\nabla logf(x)∇f(x)=f(x)∇logf(x),可得:

∇R‾θ=∑R(τ)pθ(τ)∇logpθ(τ)=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]\nabla \overline{R}_\theta = \sum R(\tau)p_\theta(\tau)\nabla logp_\theta(\tau)=E_{\tau\sim p_\theta(\tau)}[R(\tau)\nabla logp_\theta(\tau)] ∇Rθ​=∑R(τ)pθ​(τ)∇logpθ​(τ)=Eτ∼pθ​(τ)​[R(τ)∇logpθ​(τ)]≈1N∑n=1NR(τn)∇logpθ(τn)=1N∑n=1N∑t=1TnR(τn)∇logpθ(atn∣stn)\approx \frac{1}{N}\sum_{n=1}^{N}R(\tau^n)\nabla logp_\theta(\tau^n)=\frac{1}{N}\sum_{n=1}^N\sum_{t=1}^{T_n}R(\tau^n)\nabla logp_\theta(a_t^n|s_t^n)≈N1​n=1∑N​R(τn)∇logpθ​(τn)=N1​n=1∑N​t=1∑Tn​​R(τn)∇logpθ​(atn​∣stn​)

也就是说,我们是以采样求和的方式来逼近概率分布pθ(τ)p_\theta(\tau)pθ​(τ)下的期望的。

在给定策略πθ\pi_\thetaπθ​的条件下,我们采用梯度下降类似的策略梯度上升的方法来更新模型,注意每一个迹(Trajectory) 仅使用一次。

在这里插入图片描述
在这里插入图片描述

可以使用Tensorflow或者pyTorch来实现这个过程:

在这里插入图片描述
在这里插入图片描述

策略梯度在实现上有一些小技巧: 技巧一:添加基准线

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在很多情况下,reward可能都只有正的,没有负的。因为实际计算是使用采样的方法来逼近期望的,所有概率的和应该等于1以保证概率有意义,那么上图中没有被采样到的动作a的概率会下降。

梯度计算时,在奖励函数R的部分添加一个负的偏移量b,这个偏移量b可以简单取整个奖励函数在迹τ\tauτ上的期望,这样就形成了一个基准线。高于基准线算出来的log概率是正的,低于基准线算出来log概率是负的。这会使得计算梯度的每一项有增有减,并且只有reward高于基准线,才让其action概率增加,从而解决了单纯因为没有采样导致某个action概率大规模下降的问题。

技巧二:采取更恰当的奖励:

在这里插入图片描述
在这里插入图片描述

以左半部分为例,上图的意思是,计算action a1a_1a1​的reward,原本是只看(sa,a1)(s_a,a_1)(sa​,a1​)这一个pair,但由于执行了a1a_1a1​导致执行a3a_3a3​时会被扣2分,所以a1a_1a1​的reward应该是+3而不是+5。

所以计算reward的更为恰当的方法是,计算执行该步action后的reward总和。

更近一步还可以添加一个折扣因子γ\gammaγ:

在这里插入图片描述
在这里插入图片描述

因为我们计算一个action的reward是采用对当前步及以后步求和方式进行的,所以前面步的action会对后面步的action的reward产生影响。引入γ\gammaγ是为了使得距离越远的action对当前action的reward影响越小。

最后,b也可以是状态独立的,即每一个state都独有一个b。

还有一种方法是采用基于Actor-Critic模式的优势函数(Advantage function): Aθ(st,at)A^\theta(s_t,a_t)Aθ(st​,at​)来替代R(τn)−bR(\tau^n)-bR(τn)−b。优势函数衡量了在观察sts_tst​下采取动作ata_tat​而不是其他动作的好坏程度,由critic给出。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年08月26日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 策略梯度(Policy Gradient)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档