强化学习的数学基础2—PPO系列算法
这篇笔记来自于李宏毅老师的公开课
PPO算法全称是Proximal Policy Optimization算法。该类算法是为了解决Policy Gradient算法速度慢的问题。
先给出两个学习的概念:
- On-Policy学习:学习的Agent和与环境互动的Agent是同一个。可以理解为Agent一边互动一边学习。
- Off-Policy学习:学习的Agent和与环境互动的Agent不是同一个,可以理解为有一个Agent在学习,还有一个Agent在与环境互动产生数据。
在Policy Gradient算法中,每完成一次游戏就要进行一次迭代更新,Agent大部分的时间都浪费在产生数据上了;而且很明显,这是On-Policy的策略。
回顾更新的梯度公式:
∇Rˉθ=Eτ∼Pθ(τ)[R(τ)∇logPθ(τ)](1)
先引入Importance Sampling的概念:
假设两个分布
p(x)和
q(x),我们只知道
p(x)满足某个分布,但是无法对
p(x)进行积分;而且假设我们只能从
q(x)中进行sampling data。
先给出一个转换公式:
Ex∼p[f(x)]=∫f(x)p(x)dx=∫f(x)q(x)p(x)q(x)dx=Ex∼q[f(x)q(x)p(x)]
这样就把满足
p分布的均值转换成满足
q分布的均值了。
但是,这么做有缺陷,因为虽然通过变换,使得两者的均值相等,但是两者的方差是不同的。根据方差公式:
Var(X)=E(X2)−E2(X)
那么,有
Varx∼p(x)=Ex∼p[f2(x)]−Ex∼p2[f(x)]
和
Varx∼q(x)=Ex∼q[f(x)q(x)p(x)]=Ex∼q[f2(x)(q(x)p(x))2]−Ex∼q2[f2(x)(q(x)p(x))]=Ex∼p[f2(x)(q(x)p(x))]−Ex∼p2[f(x)]
所以,
q(x)p(x)很明显影响分布,即方差。注意
x∼q分布的计算中,省去了最后转换的一步,计算比较麻烦,直接给出了结论。
根据[给出的公式,有:
∇Rˉθ=Eτ∼pθ′(τ)[pθ′(x)pθ(x)R(τ)∇logPθ(τ)]
同时令
Aθ(st,at)=∑τ(R(τ)−b),那么
E(st,at)∼πθ[Aθ(st,at)∇logPθ(at(n)∣st(n))]=E(st,at)∼πθ′[pθ′(st,at)pθ(st,at)Aθ′(st,at)∇logPθ(at(n)∣st(n))]=E(st,at)∼πθ′[pθ′(at∣st)pθ(at∣st)pθ′(st)pθ(st)Aθ′(st,at)∇logPθ(at∣st)](1)
在公式1的最后,因为状态出现的概率一般与Actor无关,所以有
pθ(st)=pθ′(st),所以最后有公式:
E(st,at)∼πθ[Aθ(st,at)∇logPθ(at(n)∣st(n))]=E(st,at)∼πθ′[pθ′(at∣st)pθ(at∣st)Aθ′(st)∇logPθ(at∣st)](2)
又因为有公式:
∇f(x)=f(x)∇logf(x)
所以
(2)式化简为:
Jθ′(θ)=E(st,at)∼πθ′[pθ′(at∣st)pθ(at∣st)Aθ′(st,at)]
扫描二维码关注公众号,回复:
6217010 查看本文章
在使用PPO系列的算法时,为了保证
πθ和
πθ′分布尽可能均匀,应该使得这两个的输出尽量接近才可以。
最后给出PPO算法:
- 初始化策略参数
θ0
- 在每一次迭代中:
- 使用
θk与环境进行交互,收集
{st,at}并计算
Aθk(st,at)
- 寻找
θ优化
JPPO(θ)
JPPOθk(θ)=Jθk(θ)−βKL(θ,θk)其中,Jθk(θ)≈(st,at)∑pθk(at∣st)pθ(at∣st)Aθk(st,at)
- 如果
KL(θ,θk)>KLmax,增加
β
- 如果
KL(θ,θk)<KLmin,减小
β
其中,
βKL(θ,θk)是限制参数,为了减少两个Agent之间输出的差距。
再给出一个修正后的PPO2算法的更新公式,一般使用这个:
JPPO2θk(θ)≈(st,at)∑min(pθk(at∣st)pθ(at∣st)Aθk(st,at),clip(pθk(at∣st)pθ(at∣st),1−ϵ,1+ϵ))
给出
clip函数的定义:
clip(x,a,b)=⎩⎪⎨⎪⎧a,x,b,x<aa≤x≤bx>b