*、Policy Gradient和PPO(PPO2)

1、基本组成部分

\qquad Policy Gradient由3部分组成,分别是actor,environment和reward function,其中actor是可以控制的,但是environment和reward function是在学习之前事先给定的,不能控制。
\qquad 不同于Q-Learning基于值函数来决定下一个策略,policy gradient通过一个神经网络来决定下一个策略 π \pi π,神经网络的输入是特征向量或者矩阵,表示当前状态和环境,如在游戏中为游戏画面(图像pixel);神经网络的输出为:所有可选动作的概率分布。根据输出的概率来选择最优的动作 π \pi π进行执行。执行完选定的动作之后,会产生一个执行动作之后的收益 r r r。【这里区分一下Policy Gradient和DQN:在DQN中,神经网络的作用是计算Bellman方程的后效收益,最终还是基于值函数来选择下一个策略,不同于policy gradient直接输出选择所有策略的一个概率。】

2、policy gradient执行过程

\qquad 从开始输入状态 s 1 s_1 s1,选择执行动作 a 1 a_1 a1,得到收益 r 1 r_1 r1,依次类推直到 T T T个时间步之后到达结束状态,这么一个过程叫做一个episode,一个episode的总收益表示为: R = ∑ t = 1 T r t R=\sum_{t=1}^{T}r_t R=t=1Trt,actor的目标是为了最大化总收益 R R R
在这里插入图片描述
\qquad τ = { s 1 , a 1 , s 2 , a 2 , . . . , s T , a T } \tau = \{ s_1,a_1,s_2,a_2,...,s_T,a_T\} τ={s1,a1,s2,a2,...,sT,aT}表示一个trajectory,即所有的状态的动作的串联concatanation。从而,在给定参数 θ \theta θ条件下,可以计算一个trajectory出现的概率: p θ ( τ ) = p ( s 1 ) p θ ( a 1 ∣ s 1 ) p ( s 2 ∣ s 1 , a 1 ) p θ ( a 2 ∣ s 2 ) p ( s 3 ∣ s 2 , a 2 ) . . . = p ( s 1 ) ∏ t = 1 T p θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) 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_3|s_2,a_2)...\\ =p(s_1)\prod_{t=1}^Tp_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t) pθ(τ)=p(s1)pθ(a1s1)p(s2s1,a1)pθ(a2s2)p(s3s2,a2)...=p(s1)t=1Tpθ(atst)p(st+1st,at)
\qquad 上式中, p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)属于环境控制的部分,某些情况下可能是确定的,即给定一个状态动作,下一个状态时确定的;但某些情况下,如游戏情境中,通常是不确定的。
\qquad 上述介绍了一个episode对应的收益 R R R,即每一个trajectory对应一个收益 R R R,而由于在动作选择,甚至状态更新的时候都是有随机性的,所以更可靠,更有代表性的收益值是期望收益值,如下所示: R ˉ θ = ∑ τ R ( τ ) p θ ( τ ) = E τ ∼ p θ ( τ ) [ R ( τ ) ] \bar{R}_{\theta}=\sum_{\tau}R(\tau)p_{\theta}(\tau)\\ =E_{\tau\sim p_{\theta}(\tau)}[R(\tau)] Rˉθ=τR(τ)pθ(τ)=Eτpθ(τ)[R(τ)]
\qquad 即每一个trajectory出现的概率乘上它的收益,即为所有trajectory的期望收益值。
\qquad 若想对参数 θ \theta θ进行训练,需要求期望收益 R ˉ θ \bar{R}_{\theta} Rˉθ的导数 ∇ R ˉ θ \nabla\bar{R}_{\theta} Rˉθ,因为收益值 R ( τ ) R(\tau) R(τ)与参数 θ \theta θ 无关,同时有公式 ∇ f ( x ) = f ( x ) ∇ l o g ( f ( x ) ) \nabla f(x)=f(x)\nabla log(f(x)) f(x)=f(x)log(f(x))成立,所以推导过程如下所示:
∇ R ˉ θ = ∑ τ R ( τ ) ∇ p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ p θ ( τ ) p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ l o g ( p θ ( τ ) ) = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ l o g ( p θ ( τ ) ) ] = 1 N ∑ n = 1 N R ( τ n ) ∇ l o g ( p θ ( τ n ) ) = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ l o g ( p θ ( a t n ∣ s t n ) ) \nabla\bar{R}_{\theta}=\sum_{\tau}R(\tau)\nabla p_{\theta}(\tau)= \sum_{\tau}R(\tau)p_{\theta}(\tau) \frac{\nabla p_{\theta}(\tau)}{ p_{\theta}(\tau)}=\\ \sum_{\tau}R(\tau) p_{\theta}(\tau)\nabla log(p_{\theta}(\tau))=E_{\tau\sim p_{\theta}(\tau)}[R(\tau) \nabla log(p_{\theta}(\tau))] =\\ \frac{1}{N}\sum_{n=1}^{N}R(\tau^n) \nabla log(p_{\theta}(\tau^n))=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}R(\tau^n) \nabla log(p_{\theta}(a_t^n|s_t^n)) Rˉθ=τR(τ)pθ(τ)=τR(τ)pθ(τ)pθ(τ)pθ(τ)=τR(τ)pθ(τ)log(pθ(τ))=Eτpθ(τ)[R(τ)log(pθ(τ))]=N1n=1NR(τn)log(pθ(τn))=N1n=1Nt=1TnR(τn)log(pθ(atnstn))
\qquad policy gradient数据集获取通过和环境进行交互来获取在一次episode下执行一系列动作之后的收益,将训练数据集中的trajectory和reward进行梯度上升(gradient ascent,因为是最大化收益)参数训练,之后更新模型,过程示意如下图所示:
在这里插入图片描述

3、执行policy gradient的Tips

3.1 增加一个baseline

\qquad 增加baseline的缘由是:由于在进行模型训练时,只是对sample的部分样本数据进行了参数学习,所以某些动作可能不能被sample到;同时在很多情况下,收益值没有负值的情况存在,这就会导致所有sample到的动作被选择的概率均一直上升。为了克服上述问题,在计算期望收益值的梯度的时候,在每一个sample的期望收益之后都减去一个baseline系数,这个系数可以取值为: b = E [ R ( τ ) ] b=E[R(\tau)] b=E[R(τ)],添加baseline的policy gradient的计算方法如下所示:
∇ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T n ( R ( τ n ) − b ) ∇ l o g ( p θ ( a t n ∣ s t n ) ) \nabla\bar{R}_{\theta}=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}(R(\tau^n)-b)\nabla log(p_{\theta}(a_t^n|s_t^n)) Rˉθ=N1n=1Nt=1Tn(R(τn)b)log(pθ(atnstn))
\qquad 添加baseline之后,导致收益值项 R ( τ n ) − b R(\tau^n)-b R(τn)b有正有负,从而次优的动作被选择到的概率就会减小。

3.2 分配合理的reward权重

\qquad 上述在计算梯度的时候还有一个问题,就是在一个trajectory中的所有状态动作对,他们的权重系数项(即 R ( τ n ) − b R(\tau^n)-b R(τn)b)都相同,但这样做是不公平的,因为一个trajectory中的不同状态动作对可能有的好,有的差。若在sample的次数够多时,上述问题其他可以被解决,但是通常在训练模型时,sample的次数都是有限的,所以为了克服上述问题,在计算权重系数项,即reward项时,只考虑当前状态动作对之后的所有reward的累和,而不是整个trajectory所有reward的累和。示意图如下所示:
在这里插入图片描述
\qquad 所以上述添加了baseline的梯度计算式可以进一步改进为:
∇ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n r t ′ n − b ) ∇ l o g ( p θ ( a t n ∣ s t n ) ) \nabla\bar{R}_{\theta}=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}(\sum_{t'=t}^{T_n}r_{t'}^n-b)\nabla log(p_{\theta}(a_t^n|s_t^n)) Rˉθ=N1n=1Nt=1Tn(t=tTnrtnb)log(pθ(atnstn))
\qquad 进一步改进上式,可以将未来的reward再添加一个折减系数 γ < 1 \gamma<1 γ<1,说明当前的决策对于未来的影响随着时间的加长会逐渐减弱:
∇ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T n ( ∑ t ′ = t T n γ t ′ − t r t ′ n − b ) ∇ l o g ( p θ ( a t n ∣ s t n ) ) \nabla\bar{R}_{\theta}=\frac{1}{N}\sum_{n=1}^{N}\sum_{t=1}^{T_n}(\sum_{t'=t}^{T_n}\gamma ^{t'-t}r_{t'}^n-b)\nabla log(p_{\theta}(a_t^n|s_t^n)) Rˉθ=N1n=1Nt=1Tn(t=tTnγttrtnb)log(pθ(atnstn))
\qquad A θ ( s t , a t ) = ∑ t ′ = t T n γ t ′ − t r t ′ n − b A^{\theta}(s_t,a_t)=\sum_{t'=t}^{T_n}\gamma ^{t'-t}r_{t'}^n-b Aθ(st,at)=t=tTnγttrtnb表示Advantage Function,其表示的意思是在状态 s t s_t st下,采取动作 a t a_t at有多好,他可以由一个 c r i t i c   n e t w o r k critic \ network critic network来进行估计。

4、Proximal Policy Optimization

4.1 On policy 和 Off Policy

\qquad On Policy下,用于学习的agent和与环境进行互动的agent是同一个agent,即agent一遍和环境进行互动,一边进行学习;Off Policy下,用于学习的agent和与环境进行互动的agent不是同一个agent,即另外一个agent通过观察其他agent与环境的互动进行学习。
\qquad 由On Policy到Off Policy的原因在于:根据梯度的计算公式:
R ˉ θ = ∑ τ R ( τ ) p θ ( τ ) = E τ ∼ p θ ( τ ) [ R ( τ ) ] \bar{R}_{\theta}=\sum_{\tau}R(\tau)p_{\theta}(\tau)\\ =E_{\tau\sim p_{\theta}(\tau)}[R(\tau)] Rˉθ=τR(τ)pθ(τ)=Eτpθ(τ)[R(τ)]
\qquad 在上述On Policy学习时,每一次更新参数 θ \theta θ之后,每一个trajectory的概率分布 τ ∼ p θ ( τ ) \tau\sim p_{\theta}(\tau) τpθ(τ)就会发生改变,所以训练数据需要重新使用新的 θ \theta θ进行sample生成,这样就会浪费大量的时间在sample数据上面。为了节省数据sample的效率,同时提高数据的使用效率,采用一个额外的参数 θ ′ \theta' θ,使用 θ ′ \theta' θ进行sample数据来训练 θ \theta θ,因为 θ ′ \theta' θ在一定训练次数下是固定的,所以可以多次使用 θ ′ \theta' θsample的数据。

4.1.1 Importance Sampling

\qquad Importance Sampling: 根据大数定理,可以知道下式成立:
E x ∼ p [ f ( x ) ] = 1 N ∑ i = 1 N f ( x i ) E_{x\sim p}[f(x)]=\frac{1}{N}\sum_{i=1}^{N}f(x^i) Exp[f(x)]=N1i=1Nf(xi)
\qquad 即在数据满足独立同分布的条件下,若 x x x服从 p p p分布,在样本数量 N N N足够大的条件下, f ( x ) f(x) f(x)的数学期望近似等于 1 N ∑ i = 1 N f ( x i ) \frac{1}{N}\sum_{i=1}^{N}f(x^i) N1i=1Nf(xi)。若现在不能从 p p p分布下取样本,只能从另外一个 q q q分布下取样本,则可以对上式进行下述改进:
E x ∼ p [ f ( x ) ] = ∫ f ( x ) p ( x ) d x = ∫ f ( x ) p ( x ) q ( x ) q ( x ) d x = E x ∼ q [ f ( x ) p ( x ) q ( x ) ] E_{x\sim p}[f(x)]=\int{f(x)p(x)dx}=\int f(x)\frac{p(x)}{q(x)}q(x)dx=E_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Exp[f(x)]=f(x)p(x)dx=f(x)q(x)p(x)q(x)dx=Exq[f(x)q(x)p(x)]
\qquad 即在 q q q分布下取样的数学期望相对于在 p p p分布下的属性期望,需要乘以一个权重系数 p ( x ) q ( x ) \frac{p(x)}{q(x)} q(x)p(x)
\qquad 由上述推导可以知道,可以使用某个分布 q q q来代替原始分布 p p p,在sample样本数量足够多的情况下,二者的属性期望通过上式近似恒等。但是,方差 V a r x ∼ p [ f ( x ) ] Var_{x\sim p}[f(x)] Varxp[f(x)] V a r x ∼ q [ f ( x ) p ( x ) q ( x ) ] Var_{x\sim q}[f(x)\frac{p(x)}{q(x)}] Varxq[f(x)q(x)p(x)]通过推导可以得出,在分布 p p p q q q的差别很大时,方差差别很大。下图直观表达了Importance Sampling的缺陷:
在这里插入图片描述

4.1.2 Off Policy下的PPO梯度计算

\qquad 根据Importance Sampling的规则,通过 θ ′ \theta' θ来sample数据,通过这些sample的数据来训练 θ \theta θ,期望收益关于参数 θ \theta θ的导数如下所示:
∇ R ˉ θ = E τ ∼ p θ ′ ( τ ) [ R ( τ ) ∇ l o g p θ ( τ ) p θ ( τ ) p θ ′ ( τ ) ] \nabla\bar{R}_{\theta}=E_{\tau\sim p_{\theta'}(\tau)}[R(\tau)\nabla logp_{\theta}(\tau)\frac{p_{\theta}(\tau)}{p_{\theta'}(\tau)}] Rˉθ=Eτpθ(τ)[R(τ)logpθ(τ)pθ(τ)pθ(τ)]
\qquad 即使用 θ ′ \theta' θsample出一组数据,使用这组数据对 θ \theta θ进行多次训练,在 θ \theta θ训练时,梯度计算时要采用上式进行。
\qquad 将3.1和3.2中的改进措施应用在off Policy中,梯度计算方式如下所示:
∇ R ˉ θ = E ( s t , a t ) ∼ π θ [ A θ ( s t , a t ) ∇ l o g p θ ( a t ∣ s t ) ] J θ ′ ( θ ) = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ∇ l o g p θ ( a t ∣ s t ) ] = E ( s t , a t ) ∼ π θ ′ [ p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) ] ≈ ∑ s t , a t p θ ( a t ∣ s t ) p θ ′ ( a t ∣ s t ) A θ ′ ( s t , a t ) \nabla\bar{R}_{\theta}=E_{(s_t,a_t)\sim\pi_{\theta}} [A^{\theta}(s_t,a_t) \nabla logp_{\theta}(a_t|s_t)]\\ J^{\theta'}(\theta)=E_{(s_t,a_t)\sim\pi_{\theta'}}[\frac{p_{\theta}(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)\nabla logp_{\theta}(a_t|s_t)] \\ =E_{(s_t,a_t)\sim\pi_{\theta'}}[\frac{p_{\theta}(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t)]\\ \approx\sum_{s_t,a_t}\frac{p_{\theta}(a_t|s_t)}{p_{\theta'}(a_t|s_t)}A^{\theta'}(s_t,a_t) Rˉθ=E(st,at)πθ[Aθ(st,at)logpθ(atst)]Jθ(θ)=E(st,at)πθ[pθ(atst)pθ(atst)Aθ(st,at)logpθ(atst)]=E(st,at)πθ[pθ(atst)pθ(atst)Aθ(st,at)]st,atpθ(atst)pθ(atst)Aθ(st,at)
\qquad 上述有提到,当 θ \theta θ θ ′ \theta' θ差距过大时,通过importance sample方法得到的结果会变差,为了防止 θ \theta θ θ ′ \theta' θ差距过大,提出PPO。通过PPO计算梯度的方式如下所示:
J P P O θ ′ ( θ ) = J θ ′ ( θ ) − β ∗ K L ( θ , θ ′ ) J_{PPO}^{\theta'}(\theta)=J^{\theta'}(\theta)-\beta*KL(\theta, \theta') JPPOθ(θ)=Jθ(θ)βKL(θ,θ)
\qquad 其中, β K L ( θ , θ ′ ) \beta KL(\theta, \theta') βKL(θ,θ)表示一个约束,用来计算 θ \theta θ θ ′ \theta' θ两个不同model输出action的KL divergence,即来衡量 θ \theta θ θ ′ \theta' θ的相似程度。这里 θ \theta θ θ ′ \theta' θ之间的KL 的divergence不是 θ \theta θ θ ′ \theta' θ值的差距,而是他们输出行为上的差距,即在同一个给定状态下,输出不同动作概率分布之间的差距。
\qquad PPO的算法流程如下所示:
在这里插入图片描述
\qquad 其中, θ k \theta^{k} θk表示前面某次训练的参数,本人认为 θ k \theta^k θk应该更一定次数之后通过 θ \theta θ进行更新。
\qquad 由于上述计算KL divergence比较麻烦,所以提出了PPO2方法来简化PPO,PPO2也是为了使得 θ \theta θ θ ′ \theta' θ的差距尽可能的小。PPO2的计算方法如下所示:
J P P O 2 θ ′ ( θ ) ≈ m i n ( p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) A θ k ( s t , a t ) , c l i p ( p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) , 1 − ϵ , 1 + ϵ ) A θ k ( s t , a t ) ) J_{PPO2}^{\theta'}(\theta)\approx min(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)}A^{\theta^k}(s_t,a_t),\\ clip(\frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)},1-\epsilon,1+\epsilon)A^{\theta^k}(s_t,a_t)) JPPO2θ(θ)min(pθk(atst)pθ(atst)Aθk(st,at),clip(pθk(atst)pθ(atst),1ϵ,1+ϵ)Aθk(st,at))
\qquad 通过图像可以直观了解PPO2:
在这里插入图片描述
\qquad 其中,横轴表示 p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) \frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)} pθk(atst)pθ(atst),纵轴表示 A θ k ( s t , a t ) A^{\theta^k}(s_t,a_t) Aθk(st,at)前面的系数。蓝线表示 c l i p clip clip函数,绿线表示 p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) \frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)} pθk(atst)pθ(atst),红线表示取 m i n min min之后的效果。当收益 A > 0 A>0 A>0为正时,需要训练 θ \theta θ增大 s t , a t s_t,a_t st,at对被选择的几率,即 p θ k ( a t ∣ s t ) p_{\theta^k}(a_t|s_t) pθk(atst)应该增大。但是为了防止 θ \theta θ θ ′ \theta' θ差距过大, p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) \frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)} pθk(atst)pθ(atst)最大为 1 + ϵ 1+\epsilon 1+ϵ;当收益 A < 0 A<0 A<0为负时,需要训练 θ \theta θ减小 s t , a t s_t,a_t st,at对被选择的几率,即 p θ k ( a t ∣ s t ) p_{\theta^k}(a_t|s_t) pθk(atst)应该j减小。但是为了防止 θ \theta θ θ ′ \theta' θ差距过大, p θ ( a t ∣ s t ) p θ k ( a t ∣ s t ) \frac{p_{\theta}(a_t|s_t)}{p_{\theta^k}(a_t|s_t)} pθk(atst)pθ(atst)最小为 1 − ϵ 1-\epsilon 1ϵ

THE END

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dragon Fly

多谢老板赏钱[抱拳抱拳抱拳]

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值