今天写RL中的MC算法的时候,卡在了First visit和Every visit这两种算法的区别上。一直没搞懂什么意思

这里因为有多个episode,每一个episode中使用第一次出现的Q(S,A)当做这个episode中的Q值,对多个episode中出现的Q(S,A)求和,然后分母是有多少个episode含有这个pair(S,A)

下面附上转载的代码:

        updated_values = {}### PUT YOUR CODE HERE ###state_action_pairs = list(zip(obses, actions))g = 0for t in range(len(obses)-1, -1, -1):g = self.gamma * g + rewards[t]pair = state_action_pairs[t]if pair not in self.sa_counts:self.sa_counts[pair] = 1else:self.sa_counts[pair] += 1if pair not in state_action_pairs[:t]:  # 在前t个timestep内第一次出现: the first occurrence of (s, a)updated_values[pair] = g            # append G to Return (S_t,A_t)# Q(S_t,A_t) <- average(Return(S_t,A_t))self.q_table[pair] = (self.q_table[pair] * (self.sa_counts[pair] - 1) + g) / self.sa_counts[pair]return updated_values

注意,这一行代码:

self.q_table[pair] = (self.q_table[pair] * (self.sa_counts[pair] - 1) + g) / self.sa_counts[pair]

其实就等价于求和取平均值:因为我们是先求出Q的平均值,再统计次数。在第二次更新的时候,这个(self.sa_counts[pair] - 1) * self.q_table[pair]其实就是求和。然后我们再加上在当前episode中的Q(S, A),再取平均值,就完成了逻辑上的闭环

不得不感叹这几行代码写的真优雅

First visit and every visit MC相关推荐

  1. c语言visit函数作用,Visit

    7-1 球队"食物链" (30 分) 某国的足球联赛中有N支参赛球队,编号从1至N.联赛采用主客场双循环赛制,参赛球队两两之间在双方主场各赛一场. 联赛战罢,结果已经尘埃落定.此时 ...

  2. linux里安装可视化软件visit,可视化软件VisIt在Ubuntu18.04上的安装

    可视化软件VisIt在Ubuntu18.04上的安装 1.下载 在官网下载页面下载合适版本的安装文件,Ubuntu有专用的 同时需要注意的是,Linux另外还要下载在下载表格上方的 visit-ins ...

  3. c语言visit函数作用,[求助]二叉树遍历的程序里面的visit函数如何实现

    [求助]二叉树遍历的程序里面的visit函数如何实现 我在没懂的后面加注释 希望大家指教 #include #include #define MAXSIZE 100 typedef struct bi ...

  4. 可视化工具VisIt安装使用教程(Windows)

    目录 一.VisIt简介 1.1 VisIt基本介绍 1.2 为什么选择VisIt? 1.3 VisIt可视化策略选取 二.使用要求 三.安装流程 四.基本绘图方法 五.编程前的配置 六.编程实例 6 ...

  5. 【Leetcode】1152. Analyze User Website Visit Pattern

    题目地址: https://leetcode.com/problems/analyze-user-website-visit-pattern/ 给定三个等长的数组,数组AAA是一系列用户,数组BBB是 ...

  6. Cypress系列(43)- visit() 命令详解

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html 作用 访问远程 URL 语法格式 cy. ...

  7. 函数指针的作用:*visit函数

    定义 函数指针是指向函数的指针变量. 因此"函数指针"本身首先应是指针变量,只不过该指针变量指向函数.这正如用指针变量可指向整型变量.字符型.数组一样,这里是指向函数.如前所述,C ...

  8. std::variant 与 std::visit

    std::variant 简介 std::variant 是c++17 引入的一个类型,其作用类似于C语言中的Union,但是比Union 的功能强大的多. C语言中一个联合体Union 可以储存多种 ...

  9. 强化学习(四) - 无模型学习(MC、TDL)

    上一节讲的是在已知模型的情况下,通过动态规划来解决马尔科夫决策过程(MDP)问题.具体的做法有两个:一个是策略迭代,一个是值迭代. 从这一节开始,我们将要进入模型未知的情况下,如何去解决MDP问题. ...

最新文章

  1. 我成功攻击了Tomcat服务器,大佬们的反应亮了
  2. 视频: 猫和老鼠真实版
  3. 硬盘提示RAW的文件找回方法
  4. Linux下Shell脚本实战之监测磁盘空间
  5. 网银系统服务器架构设计,网上银行建设架构精选.pdf
  6. java 传入多个参数时报Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1,... 解决方案...
  7. java dos窗口小工具下载,maxdos 9 3-maxdos工具箱 v9.3 官方版
  8. Oracle数据库应用系统结构
  9. 宝塔服务器管理助手Linux面版-使用教程
  10. nodejs进程异常退出处理方法
  11. 黑马微信小程序项目实战
  12. Visio2013 pro专业版本激活工具---- KMSpico_setup_visio
  13. 超媒体是什么?Hypermedia(一种采用非线性网状结构对块状多媒体信息(包括文本、图像、视频等)进行组织和管理的技术)
  14. 大学生破译周鸿祎手机号 李开复放“橄榄枝”
  15. 11083 旅游背包
  16. linux脚本编程for,谢烟客---------Linux之bash脚本编程---if补充和for循环
  17. 芯片加密与解密技术方法
  18. 牛客网练习-《网络基础》DAY1
  19. 中国企业数智化价值不高,主要是因为三个问题
  20. 华为视频显示服务器异常,给予用户一份贴心|(数十份案例)APP异常界面与Toast产品设计落地...

热门文章

  1. w15作业--ZJM 与生日礼物(选做)
  2. Android-生成二维码工具类
  3. 进程管理(二十二)—CFS调度器
  4. 求e的近似值 (15 分)
  5. 夏津一中2021高考成绩查询,2021德州市地区高考成绩排名查询,德州市高考各高中成绩喜报榜单...
  6. 机试题:寻找大富翁(选择排序)
  7. [Scapy]导入导出数据
  8. 计算机控制台什么意思,电脑上,控制面板是什么意思
  9. 【iMessage苹果相册推】CSR邮箱必须与证书分属的AppID相同。 若是您可以在步伐中吸取令牌,则此步伐是成功的。
  10. HCIA基础课程 一