强化学习笔记-11 Off-policy Methods with Approximation

news2024/12/23 8:16:38

前几章我们讨论了off-policy方式,其同on-policy方式最大的不同之处在于其在训练所采取的动作,是根据behavior policy进行决策的,而不是根据target policy。这种方式的好处在于兼顾了exploitation and exploration。本节将讨论如何通过模型近似的方式来应用off policy强化学习。

1. Importance sampling

off-policy策略一个很大问题在于target policy和behavior policy之间存在偏差,这个偏差可以通过重要性采样来扭正:

\rho_t = \frac{\pi(A_t|S_t)}{b(A_t|S_t)}

G_t^{\pi}(s) =\rho_t G_t^{b}(s)=(\prod_{i=0}^{n-1} \rho_{t+i})G_{t:t+n}^{b}(s)

此时之前的价值模型的参数更新公式:

w_{t+1}=w_t + \alpha \rho_t (G_t-v(s|w))\partial_w v(s|w)\\ =w_t + \alpha (\prod_{i=0}^{n-1} \rho_{t+i}) (G_{t:t+n}-v(s|w))\partial_w v(s|w)\\ =w_t + \alpha (\prod_{i=0}^{n-1} \rho_{t+i})\delta_t \partial_w v(s|w)

这里的\delta_t可以通过上一节所根据TD(0) VS TD(n)以及discounted rewards VS average rewards分别进行设置:

  • TD(0) discounted rewards:\delta_t = r_{t+1} + \gamma Q(s_{t+1}, a_{t+1}|w)-Q(s_t, a|w)
  • TD(n) discounted rewards:\delta_t = \sum_{i=0}^{n-1} \gamma^i r_{t+i+1} + \gamma^n Q(s_{t+n}, a_{t+n}|w)-Q(s_t, a|w)
  • TD(0) average rewards:\delta_t = r_{t+1} - r_t+ Q(s_{t+1}, a_{t+1}|w)-Q(s_t, a|w)
  • TD(n) average rewards:\delta_t = \sum_{i=0}^{n-1} (r_{t+i+1} - r_t)+ Q(s_{t+n}, a_{t+n}|w)-Q(s_t, a|w)

另外在第7章介绍了另一种不通过重新性采样的off-policy策略:tree-backup algorithm

G_t(s,a)=r_{t+1} + \gamma \sum_{a'\neq a_{t+1}}\pi (a'|s_{t+1}) Q(s_{t+1},a') + \gamma \pi (a_{t+1}|s_{t+1}) G(s_{t+1},a_{t+1})

2. Off-policy Divergence

由于target policy和behavior policy之间存在偏差,当这个偏差过大时,会使得价值模型的参数无法收敛。因为off-policy策略可能会系统中大量某些无用状态一直被重复更新,而这些状态的更新会推动整体参数w一直增大。

要解决这个问题,一种思路是采用Q-learning方式,然后在下一动作时采用根据Q(s, a|w)结合ε-greedy来选择。

\delta_t = r_{t+1} - r_t+ \max_{a_{t+1}}Q(s_{t+1}, a_{t+1}|w)-Q(s_t, a|w)

3. Bellman error

之前价值模型的参数是根据累积收益同预估值的平方差VE损失来学习的,这么做对于MC算法是合理的,但对于TD算法却不完全合适,因此按Bellman式子定义如下损失

BE=\sum_s \mu(s)[\sum_{a',s',r} \pi(a'|s')p(s',r|s,a)(r+\gamma v(s'|w))-v(s|w)]^2

在TD(0)的情况下可以改写为,Bellman error 其实就是 TD error 的期望值。

TDE=\sum_s \mu(s) E_\pi [\delta_t^2|s]=\sum_s \mu(s) E_b [\rho _t\delta_t^2|s]

\delta_t = r_{t+1} + \gamma v(s_{t+1}|w) - v(s_t|w)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring MVC 的创建连接和使用

目录 前言: MVC 是什么? 1. Spring MVC 项目的创建和连接: 1.1 创建 1.2 连接 2. RequestMapping 注解使用详析: 2.1 指定请求类型: 2.1.1 指定 GET 请求 2.1.2 指定 POST 请求 3. 参数的获取与传递: 3.1 传…

CTR预估之WideDeep系列模型:DeepFM/DCN

前言 在CTR预估中,FM系列模型使用浅层网络(线性模型),让模型自己学习特征组合交互,为显式建模的方式;而DNN系列模型使用深层网络,隐式挖掘模型的高阶特征交互。 本文继续介绍结合这两者优点的…

在我电脑中待了很久的5款使用办公软件

你电脑中用的最久的软件是哪些?以下是否有你曾经使用过的软件呢?工欲善其事,必先利其器,今天继续分享五款实用的办公软件。 矢量图绘制——Inkscape Inkscape是一款用于绘制和编辑矢量图形的工具。它可以让你用简单的操作来创建…

AI学术交流——“人工智能”和“神经网络学习”

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录 前言 一.人工智能 1.“人工智能之父” 2.达特茅斯会议(人工智能起源&a…

2023四大服装管理软件,第1款最受欢迎!

对于服装行业来说,依靠传统的方式管理服装门店或工厂,很难实现精准高效的管理,往往是耗费了大量的时间和精力,也没有挣到什么钱。 这就需要借助服装管理软件,来降低管理和运营的成本,减少工作量的同时&…

自带海量设计模板的网站 精准尺寸一键套用出图

现在大家通过手机去购物时都是通过查看商品的详情页,因为详情页会介绍产品的功能和产品的设计优势等,还有产品的基本信息。那么对于刚接触电商的商家来讲,制作详情页和商品主图是一件困难的事情,但如果套用模板或者是直接选择一个…

vue结合elementui表格el-table实现弹窗checkbox自定义列显示隐藏,刷新保持上次勾选不丢失,附完整代码

el-table实现自定义列显示隐藏 有时候表格太多列,要是默认全都显示就会很拥挤,又不能固定只显示某些列,这时候我们可以让用户自定义要显示隐藏哪些列。 网上很多教程都是用的v-if,但是v-if非常麻烦,每一列都要写判断条件,本篇文章将用动态渲染的方式来控制表格列的显示隐…

【Linux】perf使用和FrameGraph

本文主要说明perf和FrameGraph的使用,例如:火焰图的输出,系统性能状态查看等。 Author:mayimin perf version 3.10.0-1160.80.1.el7.x86_64.debug 参考资料:perf example: https://www.brendangregg.com/perf.html 一…

100天精通Golang(基础入门篇)——第7天:深入学习键盘输入和打印输出,掌握常用函数和包

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

【UE】滑动UI

效果 步骤 1. 新建一个控件蓝图,这里命名为“WBP_Slide” 2. 在关卡蓝图添加如下节点来显示控件蓝图 3. 打开“WBP_Slide”,添加一个滚动框控件 设置滚动框的锚点 设置滚动朝向为水平 在滚动框中添加一个画布面板 在画布面板中添加一个图像控件 由于我有…

设计优质微信小程序的实用指南!

微信小程序是一种快速发展的应用形式,设计良好的小程序能够提升用户体验并吸引更多的用户。在设计微信小程序时,有一些关键的指南可以帮助我们做出出色的设计。以下是即时设计总结的一些设计指南,希望能对准备设计微信小程序的人有所帮助。 …

64位和32位相比优势是什么(二)

程序的执行过程 当 CPU 执行程序的时候: 1.首先,CPU 读取 PC 指针指向的指令,将它导入指令寄存器。具体来说,完成读取指令这件事情有 3 个步骤: 步骤 1:CPU 的控制单元操作地址总线指定需要访问的内存地…

[CKA]考试之备份还原 etcd

由于最新的CKA考试改版,不允许存储书签,本博客致力怎么一步步从官网把答案找到,如何修改把题做对,下面开始我们的 CKA之旅 题目为: Task 首先,为运行在https://127.0.0.1:2379上的现有 etcd 实例创建快照…

36 # 加载 json 的处理流程

require 源码大致过程 mod.require 会默认调用 require 语法Module.prototype.require 模块的原型上有 require 方法Module._load 调用模块的加载方法,最终返回的是 module.exportsModule._resolveFilename 解析文件名,将文件名变成绝对路径&#xff0c…

UTF是变长编码

在阅读关于UTF8变长编码的文档时,看到如下内容, 文档中1110表示涉及3个字节,10表示涉及一个字节,还有后面的1110高位有三个1,表示从当前字节起有3字节参与表示UNICODE,后面的高位有1个1,表示从当…

Netty实战(十六)

UDP广播事件(二)编写广播者和监视器 一、编写广播者二、编写监视器三、运行 LogEventBroadcaster 和 LogEventMonitor 一、编写广播者 Netty 提供了大量的类来支持 UDP 应用程序的编写。下面我们列出一些要用到的类型: 名 称描 述interface…

价格·歧视

一级价格歧视与耳机价格歧视 价格歧视指的是厂商对于两个完全一样的产品收取不同的价格,无论是对同一消费者还是对不同消费者。 一级价格歧视(完全价格歧视) 对于每一个消费者都收取不同的价格,而且价格定在消费者最多愿意支付的…

基于Java新生报到系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

ZooKeeper【客户端命令行】

客户端连接ZooKeeper服务器 启动ZooKeeper集群 ./zkServer.sh start 启动客户端 ./zkCli.sh 我们发现启动客户端时它会默认连接本地的服务器,这是因为zookeeper客户端启动时默认连接的是本地模式。 指定连接集群中的服务器 ./zkServer.sh start -server hadoo…

C语言之结构体讲解

目录 结构体类型的声明 结构体初始化 结构体成员访问 结构体传参 对于上期指针初阶(2)我们后期还会讲数组指针是什么?大家可以先思考一下,后期我们会讲 1.结构体的声明 结构是一些值的集合,这些值被称为成员变量&am…