强化学习3 基于时间差分的强化学习方法

相关连接:《深入浅出强化学习-原理入门》作者知乎分享:https://zhuanlan.zhihu.com/p/25580624

课本中的代码:https://github.com/gxnk/reinforcement-learning-code

今天的进程:

1、activate python    pip install gym 即可安装gym

2、基于时间差分(TD)的强化学习理解:在蒙特卡洛方法中有这样一个公式4.4

而时间差分的计算公式跟它莫名地相似,就是利 用下一个状态和本次状态的值函数的偏差来更新本次状态的值函数。所以时间差分法 结合了 蒙特卡洛的采样方法(做试验)和动态规划的自举(用后继状态估计当前状态)。时间差分方法公式如下:

时间差分方法 分为同策略的Sarsa 和异策略的Qlearning,还有一种TD(\lambda)。

Sarsa:

Qlearning:

3、env.step(action) 函数:输入动作action,输出为:下一步状态,立即回报,是否终止,调试信息

observation,reward,done,info=env.step(action)

      env.reset()函数:重新初始化函数,智能体每进行一次尝试到达终止状态后,都要重新开始再尝试,所以需要智能体有重新初始化功能。

     env.render()函数:扮演图像引擎的作用,以便直观地显示当前环境。

 

 

 

 

4、学习和实验了Qlearning 迭代  机器人找金币游戏,但是出现一个问题:

env.seed = env._seed AttributeError: 'GridEnv' object has no attribute '_seed'

解决办法: 在gym->envs->classic_control文件加进去的grid_mdp文件中,加入

def _seed(self, seed=None):
    self.np_random, seed = seeding.np_random(seed)
    return [seed]

并且把def render()改成  def _render()

5、在执行下面这个语句进行动画回放,相关文件夹里只生成json文件,并没有生成MP4文件,窗口出来以后闪退,而且报错,让我安装东西。。。。force参数是用来强制覆盖原文件的。

  grid = wrappers.Monitor(grid, './robotfindgold', force=True)  # 记录回放动画

 错误:

gym.error.DependencyNotInstalled: Found neither the ffmpeg nor avconv executables. On OS X, you can install ffmpeg via `brew install ffmpeg`. On most Ubuntu variants, `sudo apt-get install ffmpeg` should do it. On Ubuntu 14.04, however, you'll need to install avconv with `sudo apt-get install libav-tools`.

解决办法:函数括号内加上video_callable=False:

grid = wrappers.Monitor(grid, './robotfindgold',video_callable=False, force=True)  # 记录回放动画


运行结果:

4、有一个疑问:时间差分方法公式中的TD偏差前的系数-\alpha 是如何给定的?

下一篇解读Qlearning程序源代码!

 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值