强化学习之——表格式Agent实现
什么是表格式Agent?
以蛇棋问题为例,棋盘上有100个格子,所以问题一共有100个离散的状态;投掷骰子的手法也是有限的(这里规定可以投1~ 3和1~6两种手法),因此也可以用离散的手法表示出来。因此,对所有的实体(状态、行动、策略、状态转移概率),都可以用N维张量的形式表示。
譬如对于策略π(a|s)是一个条件概率分布,可以用一个|S| × |A|的矩阵表示(|S|是状态数量,|A|是动作数量)。矩阵里的每个数值都介于0到1之间,而且每一行的和都为1。对于状态转移p(st+1∣st,at)p(s_{t+1}|s_t,a_t)p(st+1∣st,at)来说,可以用一个|S| × |S| × |A|的三维矩阵表示。
代码实现
class TableAgent(object):def __init__(self, env):self.s_len = env.observation_space.n#状态数self.a_len = env.action_space.n#动作数self.r = [env.reward(s) for s in range(0, self.s_len)]#奖励函数,对每一个状态都有一个奖励值,因此维度为s_Lenself.pi = np.zeros([self.s_len, self.a_len], dtype=np.float32) #策略概率self.p = np.zeros([self.a_len, self.s_len, self.s_len], dtype = np.float32)#执行某一动作转移到另一状态的概率ladder_move = np.vectorize(lambda x:env.ladders[x] if x in env.ladders else x) #梯子for i, dice in enumerate(env.dices):prob = 1.0 / dicefor src in range(1, 100):step = np.arange(dice)step += srcstep = np.piecewise(step, [step > 100, step <= 100], [lambda x: 200 - x, lambda x: x])step = ladder_move(step)for dst in step:self.p[i, src, dst] += probself.p[:, 100, 100] = 1self.value_pi = np.zeros((self.s_len))self.value_q = np.zeros((self.s_len, self.a_len))self.gamma = 0.8def play(self, state):return self.pi[state]
可以看到Agent中保存的信息包括:
- 蛇棋的状态、行动数目:|S|(s_len)、|A| (a_len)
- 蛇棋中的回报记录r:一个一维数组(r\ r r)
- 蛇棋的策略π:一个二维数组(|S|,|A|),存储π(a|s)的结构(pi)
- 蛇棋中的状态转移情况p:一个三维数组(|A|,|S|,|S|),存储p(s′∣s,a)p(s^{'}|s,a)p(s′∣s,a)的结构 (p\ p p)
- 状态值函数v(s)v(s)v(s)(value_pi)
- 打折率γ(gamma)
后续我们会用这一模型实现策略迭代、价值迭代
强化学习之——表格式Agent实现相关推荐
- 强化学习理论基础(MDP、值函数与贝尔曼公式以及表格式Agent)
强化学习理论基础(MDP.值函数与贝尔曼公式以及表格式Agent) 前言 一.MDP策略与环境模型 二.值函数与贝尔曼公式 1. 值函数 2. 贝尔曼公式 三.表格式Agent 1. 概念介绍 2. ...
- 【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)
前言: 本次笔记对<强化学习(第二版)>第八章进行概括性描述.同时,也对本书的第一部分(共三部分)表格型求解方法进行了系统性阐述. 以下概括都是基于我个人的理解,可能有误,欢迎交流:pip ...
- 强化学习——蛇棋游戏策略迭代实现
强化学习--蛇棋游戏策略迭代实现 1"表格式"Agent 2.对游戏的评估 3.策略迭代 3.1.策略评估 3.2.策略改善 1"表格式"Agent 在之前 ...
- 强化学习实例6:策略迭代法(policy iteration)
马尔可夫决策过程定义: 以上一节中蛇棋游戏为例,状态表示为100个格子,行动表示用哪种骰子,转移模型表示梯子,回报为是否到达终点,策略表示从开始到终点中的所有状态行动链:{(s0,a0), (s1,a ...
- 深度强化学习系列(1): 深度强化学习概述
机器学习是人工智能的一个分支,在近30多年已发展为一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.计算复杂性理论等的学科.强化学习(RL)作为机器学习的一个子领域,其灵感来源于心理学中的行为主 ...
- 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例
强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...
- 加州伯克利大学:自动驾驶中虚拟到现实的强化学习|厚势汽车
来源:同济智能汽车研究所 UCB 提出了虚拟场景到真实场景的翻译网络,解决强化学习用于自动驾驶虚拟测试中与现实测试的差异. 强化学习需要大量的试错,而真实的自动驾驶车辆(AV)无法提供大量的试错 为此 ...
- 【强化学习】什么是强化学习算法?
[强化学习]什么是强化学习算法? 一.强化学习解决什么问题? 二.强化学习如何解决问题? 2.1.强化学习的基本框架 2.2.强化学习系统的要素 2.3.强化学习与监督学习的区别 2.4.强化学习与非 ...
- 什么是强化学习?(主要的强化学习概念)
文章目录 什么是强化学习?(主要的强化学习概念) 4.主要的强化学习概念 4.1 基于模型与无模型(Model-based vs. Model-free) 4.2 预测(prediction)和控制( ...
最新文章
- C#_uploadify_mvc_version
- Android性能优化之启动优化实战篇,积累总结
- 【个人总结】知识晶体的前中后台
- WebRTC 的版本号与代码分支
- 怎么样获取浏览器“该页无法显示”这类的异常 - -
- MinIO环境搭建及使用
- IT行业最重要的四件宝--我的实习体会
- spring boot如何创建一个start_如何创建一个简单的Spring应用?
- Ae:时间轴面板(图层控制区)
- Window平台Git-Bash的主题配置
- MIDAS:混频数据回归
- 样本的方差的均值等于总体的方差
- kuangbin专题八 HDU4009 Transfer water (无定根最小树形图)
- 文本检测CTPN训练自己的数据集
- NB-IoT网络架构
- canvas实现高阶贝塞尔曲线
- com.android.camera.action.CROP照片剪辑的问题
- LASSO算法(实战)sklearn----LASSO算法
- 万一的 Delphi 博客 (注意 delphi的新功能)
- 树莓派设置WiFi上网