本随笔的图片都来自UCL强化学习课程lec5 Model-free prediction的ppt (Teaching - David Silver ).

回忆值函数的表达式:

\[v_\pi(s) =\mathbb E_\pi[G_t\mid S_t=s]
\]

其中\(G_t\)是折扣回报。期望\(\mathbb E\)下面的\(\pi\)是简写,实际上应该写作:

\[A_t,S_{t+1},A_{t+1}\cdots,S_k\sim\pi
\]

无论MC prediction还是TD prediction,都是在估计\(\mathbb E_\pi[G_t \mid S_t=s]\),本质上是在做policy evaluation,evaluate的是\(\pi\)。从值函数表达式就可以看出,要估计\(v_\pi\),应该整条轨迹(的动作)都是从\(\pi\)上采样的。

如果从行为策略\(\mu\)采样,就变成了用策略\(\mu\)的数据来evaluate策略\(\pi\),这就需要用importance sampling来修正了。

  • 所以对于离策略的MC方法,在轨迹上每次对action的采样,都需要修正:

  • 离策略的TD方法,只用修正一步:

  • Q-learning,直接估计的是\(Q^*\),遍历action求max不涉及action的采样,天生是离策略,不需要修正:

RL中on-policy和off-policy的本质区别/重要性采样的更多相关文章

  1. JSP中脚本、声明和表达式的本质区别

     JSP脚本元素 使用JSP脚本元素可以将Java代码嵌入到JSP页面里,这些Java代码将出现在由当前JSP页面生成的Servlet中,使JSP将静态内容与动态内容分离出来.脚本元素包含:  1. ...

  2. objc中的类方法和实例方法有什么本质区别和联系

    类方法: 类方法是属于类对象的 类方法只能通过类对象调用 类方法中的self是类对象 类方法可以调用其他的类方法 类方法中不能访问成员变量 类方法中不能直接调用对象方法 类方法是存储在元类对象的方法缓 ...

  3. js中基本数据类型与引用数据类型的本质区别

    代码 /** * 基本数据类型:string, number, boolean, null, undefined. * * 说明: * 基本数据类型的变量是保存在栈内存中的,基本数据类型的值 * 直接 ...

  4. Go 中的 channel 与 Java BlockingQueue 的本质区别

    前言 最近在实现两个需求,由于两者之间并没有依赖关系,所以想利用队列进行解耦:但在 Go 的标准库中并没有现成可用并且并发安全的数据结构:但 Go 提供了一个更加优雅的解决方案,那就是 channel ...

  5. 在php中定义常量时,const与define的区别?

    问]在php中定义常量时,const与define的区别?  [答]使用const使得代码简单易读,const本身就是一个语言结构,而define是一个函数.另外const在编译时要比define快很 ...

  6. [转载]jQuery中wrap、wrapAll和wrapInner用法以及区别

    原文地址:jQuery中wrap.wrapAll和wrapInner用法以及区别作者:伊少君 原文: <ul>   <li title='苹果'>苹果</li>   ...

  7. 脚本引用中的defer和async的用法和区别

    之前的博客漫谈前端优化中的引用资源优化曾经提到过脚本引用异步设置defer.async,没有细说,这里展开一下,谈谈它们的作用和区别,先上张图来个针对没用过的小伙伴有个初始印象: 是的,就是在页面脚本 ...

  8. jQuery中的.bind()、.live()和.delegate()之间区别分析

    jQuery中的.bind()..live()和.delegate()之间区别分析,学习jquery的朋友可以参考下.   DOM树   首先,可视化一个HMTL文档的DOM树是很有帮助的.一个简单的 ...

  9. SQL语句中count(1)count(*)count(字段)用法的区别

    SQL语句中count(1)count(*)count(字段)用法的区别 在SQL语句中count函数是最常用的函数之一,count函数是用来统计表中记录数的一个函数, 一. count(1)和cou ...

  10. js中的text(),html() ,val()的区别

    js中的text(),html() ,val()的区别 text(),html() ,val()三个方法用于html元素的存值和取值,但是他们各有特点,text()用于html元素文本内容的存取,ht ...

随机推荐

  1. vue 强制刷新

    页面传的数值动态改变,接口接受的参数也就动态更改,但接收的数据有时候不会及时改变,通过this.$forceUpdate()页面强制刷新来解决这个问题.

  2. 手写js new,new的过程到底发生了什么

    在JavaScript中,new关键字的应用可以说是再平常不过了,最基础的有new Array().new Set(),再而就是new一个自己创建的构造函数,也就是创建一个该构造函数的示例.如:var ...

  3. 关于MNN的OPENCL和Vulkan支持

    关于MNN框架推理的时候,通过调用库当中结构体的内容,可以切换选择创建Session的具体配置.关于结构的描述见官方文档: 官方文档--创建Session CPU是编译的时候默认选择的配置方式,通过文 ...

  4. 访问浪潮带外BMC界面的远程控制台重定向(KVM)无法访问,提示JViewer未签名,mac电脑安装JDK8

    报错截图: 安装JDK8 下载JDK1.8的安装包 Java Downloads | Oracle 下载的安装包双击按提示流程安装: 按照完成以后.我们可以查看JDK的安装路径.在资源库/Librar ...

  5. Pgloader极简教程

    目录 简介 安装 安装概述 CentOS编译安装 使用 命令行 配置文件迁移 可能遇到的错误 更多配置参考 总结 引用 简介 pgloader是一个数据同步工具,用来将数据从其它地方迁移到postgr ...

  6. Nuxt.js 应用中的 webpackConfigs 事件钩子

    title: Nuxt.js 应用中的 webpackConfigs 事件钩子 date: 2024/11/20 updated: 2024/11/20 author: cmdragon excerp ...

  7. SQLSERVER 2019数据库(可疑) 数据修复案例

    2019 数据库 , 在正常使用过程中 , 服务器突然断电 , 重新启动服务器后 , 数据库变为(可疑). [数据恢复故障分析] 由于数据库在正常读写操作过 , 服务器突然断电 , 导致数据库无法把所 ...

  8. 浏览器实时查看日志系统-log.io

    log.io 是一个实时日志监控工具,采用 node.js + socket.io 开发,使用浏览器访问,每秒可以处理超过5000条日志变动消息.有一点要指出来的是 log.io 只监视日志变动并不存 ...

  9. Codeforces Round 895 (Div. 3)

    B. The Corridor or There and Back Again 题解 考虑二分答案 \(check\)时判断是否\(s_i \leq 2*(k - d_i),k\geq d_i\) c ...

  10. 将ipynb文件转成pdf

    本文内容:将GitHub上ipynb源码格式的书籍转成pdf 应用场景:GitHub上某些书籍按章节使用ipynb格式存储 (Jupyter创建了一种良好的交互方式,即将程序说明和代码放在同一个文档中 ...