如果想用强化学习去实现扫雷.2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来.上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符串的信息,反而是通过pyglet: import pyglet from gym.envs.classic_control import rendering class DrawText: def __init__(self, label:pyglet.text.Label): self.label=label def…
开始之前 先考虑几个问题: Q1:如何展开无雷区? Q2:如何计算格子的提示数? Q3:如何表示扫雷游戏的状态? A1:可以使用递归函数,或是堆栈. A2:一般的做法是,需要打开某格子时,再去统计周围的雷数.如果有方便的二维卷积函数可以调用,这会是个更简洁的方法: $$\begin{bmatrix}1 & 0 & 0 & 1 & 0\\ 0 & 1 & 0 & 0 & 1\\ 1 & 0 & 1 & 0 & 0…
在文章 强化学习实战 | 自定义Gym环境 中 ,我们了解了一个简单的环境应该如何定义,并使用 print 简单地呈现了环境.在本文中,我们将学习自定义一个稍微复杂一点的环境--井字棋.回想一下井字棋游戏: 这是一个双人回合制博弈游戏,双方玩家使用的占位符是不一样的(圈/叉),动作编写需要区分玩家 双方玩家获得的终局奖励是不一样的,胜方+1,败方-1(除非平局+0),奖励编写需要区分玩家 终局的条件是:任意行 / 列 / 对角 占满了相同的占位符 or 场上没有空位可以占位 从单个玩家的视角看,…
新手的第一个强化学习示例一般都从Open Gym开始.在这些示例中,我们不断地向环境施加动作,并得到观测和奖励,这也是Gym Env的基本用法: state, reward, done, info = env.step(action) 其中state是agent的观测状态,reward是采取了action之后环境返回的奖励,done是判断后继状态是否是终止状态的flag,info是一些自定义的消息. 当后继状态是终止状态时,需要重置环境,使之回到初始状态: env.reset() 接下来,我们就…
在 强化学习实战 | 自定义Gym环境之井子棋 中,我们构建了一个井字棋环境,并进行了测试.接下来我们可以使用各种强化学习方法训练agent出棋,其中比较简单的是Q学习,Q即Q(S, a),是状态动作价值,表示在状态s下执行动作a的未来收益的总和.Q学习的算法如下: 可以看到,当agent在状态S,执行了动作a之后,得到了环境给予的奖励R,并进入状态S'.同时,选择最大的Q(S', a),更新Q(S, a).所谓表格型Q学习,就是构建一个Q(S, a)的表格,维护所有的状态动作价值. 一个很好的…
在 强化学习实战 | 表格型Q-Learning玩井字棋(一)中,我们构建了以Game() 和 Agent() 类为基础的框架,本篇我们要让agent不断对弈,维护Q表格,提升棋力.那么我们先来盘算一下这几个问题: Q1:作为陪练的一方,策略上有什么要求吗? A1:有,出棋所导致的状态要完全覆盖所有可能状态.满足此条件下,陪练的棋力越强(等同于环境越严苛),agent训练的效果越好.AlphaGo的例子告诉我们,陪练的策略也是可以分阶段调整的:前期先用人类落子的预测模型当陪练,中后期让agent…
在 强化学习实战 | 表格型Q-Learning玩井字棋(二)开始训练!中,我们让agent"简陋地"训练了起来,经过了耗费时间的10万局游戏过后,却效果平平,尤其是初始状态的数值表现和预期相差不小.我想主要原因就是没有采用等价局面同步更新的方法,导致数据利用率较低.等价局面有7个,分别是:旋转90°,旋转180°,旋转270°,水平翻转,垂直翻转,旋转90°+水平翻转,旋转90°+垂直翻转,如下图所示.另外,在生成等价局面的同时,也要生成等价的动作,这样才能实现完整的Q值更新. 步骤…
在 强化学习实战 | 表格型Q-Learning玩井字棋(三)优化,优化 中,我们经过优化和训练,得到了一个还不错的Q表格,这一节我们将用pygame实现一个有人机对战,机机对战和作弊功能的井字棋游戏.至于胜率统计这个功能,其实没有必要了--因为Q表格AI内战永远是平局.基本的pygame用法可以学习 Create a game with Pygame and Design Patterns 中的部分章节.总得来说就是逐帧绘制,循环刷新.项目地址:码云. 机机对战 Q表格 vs Q表格 点开 C…
安装gym和atari环境 pip3 install gym pip3 install gym[atari] pip3 install gym[accept-rom-license] 安装box2d环境 安装环境 apt-get install -y swig 安装库 pip3 install box2d-py pip3 install gym[box2d]…
安装gym pip3 install gym pip3 install gym[accept-rom-license] 安装atari环境[可选] 下载安装VS build tools 如果出现 OSError: [WinError 126] 找不到指定的模块 的话需要进行此步骤, 需要先卸载之前安装的 pip3 uninstall atari-py pip3 uninstall gym[atari] 下载 VS build tools 选择以下进行安装, 此处我只安装了前3个发现也是可以的 安…