什么是表格式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中保存的信息包括:

  1. 蛇棋的状态、行动数目:|S|(s_len)、|A| (a_len)
  2. 蛇棋中的回报记录r:一个一维数组(r\ r r)
  3. 蛇棋的策略π:一个二维数组(|S|,|A|),存储π(a|s)的结构(pi)
  4. 蛇棋中的状态转移情况p:一个三维数组(|A|,|S|,|S|),存储p(s′∣s,a)p(s^{'}|s,a)p(s′∣s,a)的结构 (p\ p p)
  5. 状态值函数v(s)v(s)v(s)(value_pi)
  6. 打折率γ(gamma)

后续我们会用这一模型实现策略迭代、价值迭代

强化学习之——表格式Agent实现相关推荐

  1. 强化学习理论基础(MDP、值函数与贝尔曼公式以及表格式Agent)

    强化学习理论基础(MDP.值函数与贝尔曼公式以及表格式Agent) 前言 一.MDP策略与环境模型 二.值函数与贝尔曼公式 1. 值函数 2. 贝尔曼公式 三.表格式Agent 1. 概念介绍 2. ...

  2. 【强化学习】表格型求解方法总结:基于表格型方法(Tabular Methods)的规划(Planning)和学习(Learning)

    前言: 本次笔记对<强化学习(第二版)>第八章进行概括性描述.同时,也对本书的第一部分(共三部分)表格型求解方法进行了系统性阐述. 以下概括都是基于我个人的理解,可能有误,欢迎交流:pip ...

  3. 强化学习——蛇棋游戏策略迭代实现

    强化学习--蛇棋游戏策略迭代实现 1"表格式"Agent 2.对游戏的评估 3.策略迭代 3.1.策略评估 3.2.策略改善 1"表格式"Agent   在之前 ...

  4. 强化学习实例6:策略迭代法(policy iteration)

    马尔可夫决策过程定义: 以上一节中蛇棋游戏为例,状态表示为100个格子,行动表示用哪种骰子,转移模型表示梯子,回报为是否到达终点,策略表示从开始到终点中的所有状态行动链:{(s0,a0), (s1,a ...

  5. 深度强化学习系列(1): 深度强化学习概述

    机器学习是人工智能的一个分支,在近30多年已发展为一门多领域交叉学科,涉及概率论.统计学.逼近论.凸分析.计算复杂性理论等的学科.强化学习(RL)作为机器学习的一个子领域,其灵感来源于心理学中的行为主 ...

  6. 强化学习(六) - 连续空间中的强化学习(RL in Continuous Spaces)及相关实例

    强化学习(六) - 连续空间中的强化学习 6.1 连续空间中的强化学习 6.2 离散空间和连续空间 6.3 离散化 实例:小车上山 6.3.1 相关程序 6.3.2 程序注解 (1) 环境测试 (2) ...

  7. 加州伯克利大学:自动驾驶中虚拟到现实的强化学习|厚势汽车

    来源:同济智能汽车研究所 UCB 提出了虚拟场景到真实场景的翻译网络,解决强化学习用于自动驾驶虚拟测试中与现实测试的差异. 强化学习需要大量的试错,而真实的自动驾驶车辆(AV)无法提供大量的试错 为此 ...

  8. 【强化学习】什么是强化学习算法?

    [强化学习]什么是强化学习算法? 一.强化学习解决什么问题? 二.强化学习如何解决问题? 2.1.强化学习的基本框架 2.2.强化学习系统的要素 2.3.强化学习与监督学习的区别 2.4.强化学习与非 ...

  9. 什么是强化学习?(主要的强化学习概念)

    文章目录 什么是强化学习?(主要的强化学习概念) 4.主要的强化学习概念 4.1 基于模型与无模型(Model-based vs. Model-free) 4.2 预测(prediction)和控制( ...

最新文章

  1. C#_uploadify_mvc_version
  2. Android性能优化之启动优化实战篇,积累总结
  3. 【个人总结】知识晶体的前中后台
  4. WebRTC 的版本号与代码分支
  5. 怎么样获取浏览器“该页无法显示”这类的异常 - -
  6. MinIO环境搭建及使用
  7. IT行业最重要的四件宝--我的实习体会
  8. spring boot如何创建一个start_如何创建一个简单的Spring应用?
  9. Ae:时间轴面板(图层控制区)
  10. Window平台Git-Bash的主题配置
  11. MIDAS:混频数据回归
  12. 样本的方差的均值等于总体的方差
  13. kuangbin专题八 HDU4009 Transfer water (无定根最小树形图)
  14. 文本检测CTPN训练自己的数据集
  15. NB-IoT网络架构
  16. canvas实现高阶贝塞尔曲线
  17. com.android.camera.action.CROP照片剪辑的问题
  18. LASSO算法(实战)sklearn----LASSO算法
  19. 万一的 Delphi 博客 (注意 delphi的新功能)
  20. 树莓派设置WiFi上网

热门文章

  1. linux双屏鼠标移,ubuntu如何实现双屏显示
  2. 北航计算机组成原理课程设计-2021秋 PreProject-MIPS-测试程序设计
  3. 关于USB中文网的近况
  4. Jenkins安装时Web页面报错:该Jenkins实例似乎已离线
  5. Unity3d用户手册用户攻略缓存效劳器常见疑问
  6. 摩尔斯电码、摩斯电码
  7. CKEditor插件的使用
  8. BZOJ 2844 albus就是要第一个出场(线性基)
  9. 原创小说 - 范特西学院(上)
  10. 升级windows11的方法