淘优惠

淘优惠

强化学习实战(一)(tensorlayer乒乓球教程)

热门文章 0

强化学习实战(?)(

tensorlayer

乒乓球教程)

运?乒乓球例? 

在本教程的第?部分,我们将运个深度强化学习的例?,它在Karpathy的两篇博客 Deep Reinforcement Learning:Pong from

Pixels 有介绍。

python tutorial_atari_pong.py 

在运?教程代码之前 您需要安装 OpenAI gym environment ,它提供了?量强化学习常?的游戏环境。 如果?切运?正常,您将得到以

下的输出:

[2016-07-12 09:31:59,760] Making new env: Pong-v0 

[TL] InputLayer input_layer (?, 6400) 

[TL] DenseLayer relu1: 200, relu 

[TL] DenseLayer output_layer: 3, identity 

param 0: (6400, 200) (mean: -0.000009 median: -0.000018 std: 0.017393) 

param 1: (200,) (mean: 0.000000 median: 0.000000 std: 0.000000) 

param 2: (200, 3) (mean: 0.002239 median: 0.003122 std: 0.096611) 

param 3: (3,) (mean: 0.000000 median: 0.000000 std: 0.000000) 

num of params: 1280803 

layer 0: Tensor(“Relu:0”, shape=(?, 200), dtype=float32) 

layer 1: Tensor(“add_1:0”, shape=(?, 3), dtype=float32) 

episode 0: game 0 took 0.17381s, reward: -1.000000 

episode 0: game 1 took 0.12629s, reward: 1.000000  

episode 0: game 2 took 0.17082s, reward: -1.000000 

episode 0: game 3 took 0.08944s, reward: -1.000000 

episode 0: game 4 took 0.09446s, reward: -1.000000 

episode 0: game 5 took 0.09440s, reward: -1.000000 

episode 0: game 6 took 0.32798s, reward: -1.000000 

episode 0: game 7 took 0.74437s, reward: -1.000000 

episode 0: game 8 took 0.43013s, reward: -1.000000 

episode 0: game 9 took 0.42496s, reward: -1.000000 

episode 0: game 10 took 0.37128s, reward: -1.000000 

episode 0: game 11 took 0.08979s, reward: -1.000000 

episode 0: game 12 took 0.09138s, reward: -1.000000 

episode 0: game 13 took 0.09142s, reward: -1.000000 

episode 0: game 14 took 0.09639s, reward: -1.000000 

episode 0: game 15 took 0.09852s, reward: -1.000000 

episode 0: game 16 took 0.09984s, reward: -1.000000 

episode 0: game 17 took 0.09575s, reward: -1.000000 

episode 0: game 18 took 0.09416s, reward: -1.000000 

episo


强化学习快餐教程(1) - gym环境搭建


欲练强化学习神功,首先得找一个可以操练的场地。 两大巨头OpenAI和Google DeepMind都不约而同的以游戏做为平台,比如OpenAI的长处是DOTA2,而DeepMind是AlphaGo下围棋。

下面我们就从OpenAI为我们提供的gym为入口,开始强化学习之旅。

安装方法很简单,gym是python的一个包,通过pip安装即可。 例:

源代码的下载地址在:

gym平台的目的就是提供一个供强化学习进行比较和交流的标准化平台。

cart pole是一个最简单的小游戏模型,它是一个一维的小车上竖起一根棍子,然后通过调整左右来保证棍子不倒。

我们先来一个随机输入的例子,大家先让这个小游戏跑起来:

通过运行可以看到,别说棍子不倒了,绕着圈带着小车不知道飞到哪里去了。

gym主要为我们提供了两种元素:环境和操作。 我们首先通过gym.make来生成cartpole的运行环境,然后reset给小车和棍子一个初始化的值。 最后,通过env.step将操作传给环境去控制小车。

cartpole的操作非常简单,只有两种命令,用0和1表示。0是向左推小车,1是向右推小车。小车是处在一个光滑轨道上的,根据牛顿第一定律,在无外力时处于静止或匀速直线运动的状态。

刚才我们调用env.action_space.sample(),就是在0和1之间随机生成两种状态之一做为输入。

除了刚才的随机策略外,我们也可以采取交替的策略:

但是,有了操作之后是个开环的系统,我们需要通过从环境中读取信息来更好地决策。

其实,不管是reset还是step,环境都是会返回一系列值给我们的。

reset会返回一个状态信息给我们。而step会返回一个四元组,分别是状态信息,奖励信息,是否已经结束和附加信息。

我们进行一轮迭代,先判断下是否已经失败,如果已经倒了就结束游戏,然后统计一下我们活了几轮:

下面我们再进一步,去读取一下状态信息。针对cartpole这个问题,状态信息还是一个4元组,分别是:

  • 小车位置
  • 小车速度
  • 棍的倾斜角度
  • 棍的角速度

在本游戏中,如果角度大于12度,或者小车位置超出了2.4,就意味着失败了,直接结束。

知道了反馈信息之后,我们就可以想办法进行闭环控制了。 比如我们只取位置参数,如果偏左了就向右推,反之亦然:

完整代码如下:

下面是我运行一次的结果:

上一种策略我们是根据车的位置来进行控制。我们还可以考虑根据角度来进行控制:

从一些次尝试来看,角策略比上一个位置策略要更优一些:


强化学习系列之翻译OpenAI用户手册(三)

opencl翻译,翻译opening,open翻译一下,open翻译中文