您的当前位置:首页正文

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

2024-11-06 来源:个人技术集锦

相关连接:《深入浅出强化学习-原理入门》作者知乎分享:

课本中的代码:

今天的进程:

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

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

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

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

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偏差前的系数-

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

 

Top