策略梯度与OpenAI的当家算法:PPO(2)
1. 从在线策略到离线策略(on policy and off policy)
• On-policy: Agent 学习和交互的环境是同一个环境
• Off-policy: Agent 学习和交互的环境是不是同一个环境
举例:下棋的时候是自己下棋 就是on policy
下棋前先看别人下棋,然后自己总结经验来下棋,就是off policy
为什么要考虑off-policy 的策略:
on-policy过程中数据是由policy和环境多次互动得到的,但是policy update之后,数据又要重新从环境中收集,以前的数据无法使用,造成训练缓慢。
off-policy 目标: 数据从另外一个策略??′中sample出来,我们可以重复使用这些数据。
2. 重要性抽样:Importance Sampling
一般的,当
x
i
x_i
xi 从p(x)中sample出,那么当
x
i
x_i
xi 从另外一个概率密度函数q(x),sample出呢?
两者的方差区别:
由于:
所以有:
- Importance Sampling的注意事项:
p(x) 和 q(x) 的分布不能相差太远。 下图中国就是分布相差太远后,期望值的正负都会受影响。
3. 离线策略 off policy 策略梯度算法
我们使用另外的策略
θ
′
\theta^{'}
θ′,sample 数据
根据important sampling:
于是在策略梯度中,我们有:
反推我们的目标函数:
4. TRPO和PPO
核心思路: 不能让离线策略和现实策略差距太大
最牛的算法,也是最基本的思路上衍生出来的,希望大家有所领悟。
(1) TRPO (Trust Region Policy Optimization)
TRPO其实就是增加了 K L ( θ , θ ′ ) KL(\theta,\theta^{'}) KL(θ,θ′)的Constraint,就是这么简单。
(2) PPO 算法
PPO 其实将
K
L
(
θ
,
θ
k
)
KL(\theta,\theta^{k})
KL(θ,θk)(
t
h
e
t
a
k
theta^{k}
thetak和TRPO
的
t
h
e
t
a
′
theta^{'}
theta′都是离线策略)的Constraint 就像L1或者L2一样,列入到目标函数:
其中的KL距离是动态调整的:
算法是:
• Initial policy parameters
θ
0
\theta_0
θ0
• In each iteration
• Using ?? to interact with the environment to collect
?? , ?? and compute advantage
A
θ
k
A_{\theta k}
Aθk ?? , ?? • Find ? optimizing ? ?
(2) PPO2 算法
我们给:
手工设定值得下限和上限。
整体的目标函数:
5. 总结
实验结果:
from https://arxiv.org/abs/1707.06347
千里之行,始于足下,在人工智能学习中,高级的、复杂的算法
都是基于基础理论和基础算法的。所以只要坚持不懈,一定会有突破。
本专栏图片、公式很多来自David Silver主讲的UCL-Course强化学习视频公开课和台湾大学李宏毅老师的深度强化学习课程,在这里,感谢这些经典课程,向他们致敬!