kl散度的理解_如何直观理解PPO算法[实战篇](附代码及代码解释)

f93d4dff581d7cb99992c65b4487d826.png

在上一篇文章中,我们已经说了PPO三个重点:

  • 用网络求解连续动作型问题;
  • 进行N步更新;
  • 重要性采样及PPO网络的更新学习。

本篇将会解释的示例代码,同样会以这三个为重点。

如果对原理有所疑问,可以翻看上一篇专栏:

张斯俊:如何直观理解PPO算法?[理论篇]​zhuanlan.zhihu.com
dd2404f4a828071b1b3dddfc802fdeaa.png

这一篇,我们以tensorflow给出的强化学习算法示例代码为例子,看看PPO应该如何实现。

https://github.com/tensorlayer/tensorlayer/blob/master/examples/reinforcement_learning/tutorial_PPO.py​github.com

如果一时间看代码有困难,可以看我的带注释版本。希望能帮助到你。

https://github.com/louisnino/RLcode/blob/master/tutorial_PPO.py​github.com

Pendulum-v0 说明

在开始解释算法前,先对这次我们要征服的游戏做一个简单的说明。

Pendulum-v0是一个简单的环境,如图。

2bf5b2506c736e7bbb6f2bd9104b3048.png

图中的杆围绕A点转动,我们的任务是,让智能体学会给杆子施加一定的“力”,让杆子立起来。

这里的“力”用了带箭头的圆环表示,圆环越大,表示用的“力”越大。

这里的“力”之所以用双引号括起来,是这个游戏并不完全遵从我们现实世界的物理规则。它只是一个游戏而已。

正如我们之前说到,这个“力”并不是开关,是有大小之别;因此,这是一个连续型控制的问题。

我们主要关心还是三要素,state,action,reward

我们输入的state特征有三个

cbe25a878015f7a1dcb1dee55d1fb229.png

输入的action是[-2.0,2.0]范围内的数值

奖励的计算: -(theta^2 + 0.1 theta_dt^2 + 0.001 action^2)

由此,我们可以知道,reward的最小值是-16.273 最大值是0。获得最大值时,就是杆子正正树立的时候。我们的任务就调整输入的“力”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值