相关连接:《深入浅出强化学习-原理入门》作者知乎分享:
课本中的代码:
今天的进程:
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程序源代码!