强化学习VPG和PPO的区别

on-policy策略,是指使用当前策略生成的数据来更新当前策略;

off-policy策略,是指可以使用非当前策略生成的数据来更新当前策略;

举例:Agent使用策略\pi _{t}与环境互动,生成数据D_{t},使用D_t更新策略\pi_t获得新的策略\pi_{t+1},数据D_t被丢弃,则是on-policy策略;

Agent使用策略\pi _{t}与环境互动,生成数据D_{t},使用D_1, D_2, D_3, ... , D_t来更新策略\pi_t获得新的策略\pi_{t+1},数据D_t被存储到数据缓冲池,用于下一次策略的更新,则是off-policy策略。

从定义可以知,on-policy策略的数据利用效率低,off-policy策略可以使用先前策略生成的数据,因此,off-policy的策略较高。

1. VPG是on-policy策略,每次和环境互动(一个epoch),使用当前策略,生产一批数据(batch),然后使用这些数据对当前策略进行一次更新,之后数据被丢弃;

2. DQN是off-policy,每次和环境互动,使用当前策略,生产一批数据,将新生产的数据存储到数据缓冲区,使用缓存区的数据更新t时刻的目标策略,生成t+1时刻的目标策略,接着,继续使用当前策略生成一批数据,存入缓冲区,使用缓冲区数据更新目标策略;经过一定次数的更新后,使用目标策略t+n更新当前策略, 继续上述过程;

3. PPO策略是on-policy策略,相比VPG策略,PPO策略使用当前策略生成的数据,对当前策略进行了多次更新,而非VPG的一次更新。多次更新带来了数据利用率的提升,学习效率的提升,但同时引入了不稳定性,即:由于数据并非更新后的策略生成,导致数据差异与当前策略较大,为了解决这个问题,PPO比较新旧策略的差异,如果差异过大,则进行修剪更新的范围,防止过大的更新导致网络不稳定,从而导致训练过程发散。

以openAI spinning up中代码为例,VPG和PPO代码的主要区别在于,更新函数中,PPO使用同一数据,对策略进行了多次更新(学习),图中的循环train_pi_iters则是该更新的次数。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值