随笔分类 -  强化学习实战

摘要:开始之前 先考虑几个问题: Q1:如何展开无雷区? Q2:如何计算格子的提示数? Q3:如何表示扫雷游戏的状态? Q4:如何设置环境中的奖励? A1:可以使用递归函数,或是堆栈。 A2:一般的做法是,需要打开某格子时,再去统计周围的雷数。如果有方便的二维卷积函数可以调用,这会是个更简洁的方法: $$ 阅读全文
posted @ 2022-01-26 21:56 埠默笙声声声脉 阅读(1136) 评论(0) 推荐(0)
摘要:如果想用强化学习去实现扫雷、2048这种带有数字提示信息的游戏,自然是希望自定义 gym 环境时能把字符显示出来。上网查了很久,没有找到gym自带的图形工具Viewer可以显示字符串的信息,反而是通过pyglet: import pyglet from gym.envs.classic_contro 阅读全文
posted @ 2022-01-08 19:12 埠默笙声声声脉 阅读(517) 评论(0) 推荐(0)
摘要:在 强化学习实战 | 表格型Q-Learning玩井字棋(三)优化,优化 中,我们经过优化和训练,得到了一个还不错的Q表格,这一节我们将用pygame实现一个有人机对战,机机对战和作弊功能的井字棋游戏。至于胜率统计这个功能,其实没有必要了——因为Q表格AI内战永远是平局。基本的pygame用法可以学 阅读全文
posted @ 2021-12-12 21:41 埠默笙声声声脉 阅读(806) 评论(0) 推荐(0)
摘要:在 强化学习实战 | 表格型Q-Learning玩井字棋(二)开始训练!中,我们让agent“简陋地”训练了起来,经过了耗费时间的10万局游戏过后,却效果平平,尤其是初始状态的数值表现和预期相差不小。我想主要原因就是没有采用等价局面同步更新的方法,导致数据利用率较低。等价局面有7个,分别是:旋转90 阅读全文
posted @ 2021-12-10 18:36 埠默笙声声声脉 阅读(1218) 评论(0) 推荐(0)
摘要:在 强化学习实战 | 表格型Q-Learning玩井字棋(一)搭个框架 中,我们构建了以Game() 和 Agent() 类为基础的框架,本篇我们要让agent不断对弈,维护Q表格,提升棋力。那么我们先来盘算一下这几个问题: Q1:作为陪练的一方,策略上有什么要求吗? A1:有,出棋所导致的状态要完 阅读全文
posted @ 2021-12-09 14:22 埠默笙声声声脉 阅读(1919) 评论(0) 推荐(0)
摘要:在 强化学习实战 | 自定义Gym环境之井子棋 中,我们构建了一个井字棋环境,并进行了测试。接下来我们可以使用各种强化学习方法训练agent出棋,其中比较简单的是Q学习,Q即Q(S, a),是状态动作价值,表示在状态s下执行动作a的未来收益的总和。Q学习的算法如下: 可以看到,当agent在状态S, 阅读全文
posted @ 2021-12-07 19:52 埠默笙声声声脉 阅读(2495) 评论(3) 推荐(1)
摘要:配置环境 (1)安装Anaconda:Download (2)使用conda管理运行环境: 创建环境:conda create -n your_env_name python=x.x 删除环境:conda remove -n your_env_name --all 查看当前存在哪些虚拟环境:cond 阅读全文
posted @ 2021-12-06 10:39 埠默笙声声声脉 阅读(553) 评论(0) 推荐(1)
摘要:在文章 强化学习实战 | 自定义Gym环境 中 ,我们了解了一个简单的环境应该如何定义,并使用 print 简单地呈现了环境。在本文中,我们将学习自定义一个稍微复杂一点的环境——井字棋。回想一下井字棋游戏: 这是一个双人回合制博弈游戏,双方玩家使用的占位符是不一样的(圈/叉),动作编写需要区分玩家 阅读全文
posted @ 2021-12-06 01:32 埠默笙声声声脉 阅读(1960) 评论(1) 推荐(1)
摘要:新手的第一个强化学习示例一般都从Open Gym开始。在这些示例中,我们不断地向环境施加动作,并得到观测和奖励,这也是Gym Env的基本用法: state, reward, done, info = env.step(action) 其中state是agent的观测状态,reward是采取了act 阅读全文
posted @ 2021-12-05 11:48 埠默笙声声声脉 阅读(8198) 评论(0) 推荐(1)