李宏毅深度强化学习笔记(二)Proximal Policy Optimization
参考jessie_weiqing博客:https://blog.youkuaiyun.com/cindy_1102/article/details/87905272
李宏毅深度强化学习课程 https://www.bilibili.com/video/av24724071
Proximal Policy Optimization
术语和基本思想
On-policy: 学习到的agent以及和环境进行互动的agent是同一个agent
Off-policy: 学习到的agent以及和环境进行互动的agent是不同的agent
为什么要引入 Off-policy:
∇
R
‾
θ
=
E
τ
‾
∼
p
θ
(
τ
)
[
R
(
τ
)
∇
log
p
θ
(
τ
)
]
\nabla \overline { R } _ { \theta } = E _ { \underline { \tau } \sim p _ { \theta } ( \tau ) } \left[ R ( \tau ) \nabla \log p _ { \theta } ( \tau ) \right]
∇Rθ=Eτ∼pθ(τ)[R(τ)∇logpθ(τ)]
如果我们使用 πθ 来收集数据,那么参数 θ被更新后,我们需要重新对训练数据进行采样,这样会造成巨大的时间消耗。
目标:利用 π θ ′ 来进行采样,将采集的样本拿来训练 θ , θ’ 是固定的,采集的样本可以被重复使用。
原理:Important sampling:
我们只有通过另外一个分布得到的样本时,期望值可以做出以下更改,更换分布之后,需要使用重要性权重p(x)/q(x)来修正f(x).,这样就实现了使用q分布来计算p分布期望值。
需要注意的是,两个分布p,q p,qp,q之间的差别不能太大,否则方差会出现较大的差别。
先基于原始的分布p计算函数的方差,然后计算引入不同分布q之后得到的函数方差,可以发现两者得出的方差表达式后面一项相同,主要差别在于前面那一项,如果分布p和q之间差别太大,会导致第一项的值较大或较小,于是造成两者较大的差别。
如果p,q p, qp,q两个分布的差别过大,在训练的过程中就需要进行更多次数的采样。
比如下图中,实际分布p和辅助分布q差别较大,横轴左边表示收益为负,右边表示收益为正。蓝色的线表示真实分布p的分布,主要集中在左边,也就是说,真实情况下reward的期望值应该是负的。
但是由于辅助分布q,即绿色线,主要集中在右侧,因此在采样的时候采到右边的概率更大,可能会导致多轮采样之后,算出来的期望收益依旧为正,只有当采样到左侧的点,并且乘上较大的修正系数 p/q p/qp/q之后,算出的结果才会变成真实的符号,负号。尽管采样到右侧的点修正系数很小,最终结果可能依旧是正确的,但这样会导致在采样上耗费较大的时间,因此,p q分布之间的差异依旧不宜过大。
从上述important sampling的思想出发,可以使用该思想来达到上文所述的目标,即 “利用πθ ′ 来进行采样,将采集的样本拿来训练 θ, θ’ 是固定的,采集的样本可以被重复使用” 表示为:
提醒
- Advantage function (收益reward减去基准baseline) 也应该随着新的采样参数而变化(从基于θ 的 Aθ 变为基于θ′ 的Aθ′
- 在不同的参数情况下,某一个状态state出现的概率几乎没有差别,因此可以将这一项近似地消掉
- stop criteria取决于两个分布之间的差别大小
加入约束: (θ \thetaθ 不能与 θ’ \theta′θ′差别过大)
Tip: 这是一项加在行为上的约束,而不是加在参数上的约束
PPO 算法
- 初始化policy的参数 θ0
- 在每一次迭代中,使用θk
- k来和环境互动,收集状态和行动并计算对应的advantage function
不断更新参数,找到目标函数最优值对应的参数 θ
在训练的过程中采用适应性的KL惩罚因子:
- 当KL过大时,增大beta值来加大惩罚力度
- 当KL过小时,减小beta值来降低惩罚力度
PPO2
- PPO2引入了Clip函数,意味着第二项,即蓝色的虚线必须在 1-ϵ 和 1+ϵ 之间
- 红色的线表示取最小值之后整个函数值分布情况.