O2O:Sample Efficient Offline-to-Online Reinforcement Learning

IEEE TKDE 2024
paper

Introduction

O2O存在策略探索受限以及分布偏移问题,进而导致在线微调阶段样本效率低。文章提出OEMA算法首先使用离线数据训练乐观的探索策略,然后提出基于元学习的优化方法,减少分布偏移并提高O2O的适应过程。

Method

在这里插入图片描述

optimistic exploration strategy

离线学习方法TD3+BC的行为策略 π e ( s ) \pi_e(s) πe(s)是由目标策略 π ϕ ( s ) \pi_\phi(s) πϕ(s)加上一个正态分布中采样的噪声。文章指出,目标策略被优化靠近离线数据集的保守策略,为了提高目标策略的探索能力,本文提出基于价值不确定性度量的方法:
π e = arg ⁡ max ⁡ π Q ^ U B ( s , π ( s ) ) , s . t . 1 2 ∥ π ϕ ( s ) − π ( s ) ∥ ≤ δ , \begin{aligned}\pi_{e}&=\arg\max_{\pi}\hat{Q}_{\mathrm{UB}}(s,\pi(s)),\\s.t.&\frac{1}{2}\|\pi_{\phi}(s)-\pi(s)\|\le\delta,\end{aligned} πes.t.=argπmaxQ^UB(s,π(s)),21πϕ(s)π(s)δ,
其中 Q ^ U B ( s , π ( s ) ) \hat{Q}_{\mathrm{UB}}(s,\pi(s)) Q^UB(s,π(s))为Q值的近似上界, 用来衡量认知不确定性。上述问题在保证策略约束的同时选择高不确信的动作。

不确信估计采用高斯分布。分布的均值为两个Q网络输出的均值,而方差表示如下:
σ Q ( s , a ) = ∑ i = 1 , 2 1 2 ( Q θ i ( s , a ) − μ Q ( s , a ) ) 2 = 1 2 ∣ Q θ 1 ( s , a ) − Q θ 2 ( s , a ) ∣ . \begin{gathered} \sigma_{Q}(s,a) =\sqrt{\sum_{i=1,2}\frac12(Q_{\theta_{i}}(s,a)-\mu_{Q}(s,a))^{2}} \\ =\frac12\Big|Q_{\theta_1}(s,a)-Q_{\theta_2}(s,a)\Big|. \end{gathered} σQ(s,a)=i=1,221(Qθi(s,a)μQ(s,a))2 =21 Qθ1(s,a)Qθ2(s,a) .
那么 Q ^ U B = μ Q ( s , a ) + β UB σ Q ( s , a ) \hat{Q}_{\mathrm{UB}} =\mu_Q(s,a)+\beta_\text{UB}\sigma_Q(s,a) Q^UB=μQ(s,a)+βUBσQ(s,a) β \beta β控制乐观程度,当取值-1时上式等价于:
Q ^ U B ( s , a ) ∣ β U B = − 1 = μ Q ( s , a ) − σ Q ( s , a ) = 1 2 ( Q θ 1 ( s , a ) + Q θ 2 ( s , a ) ) − 1 2 ∣ Q θ 1 ( s , a ) − Q θ 2 ( s , a ) ∣ = min ⁡ ( Q θ 1 ( s , a ) , Q θ 2 ( s , a ) ) , (9) \begin{aligned} &\hat{Q}_{\mathrm{UB}}(s,a)\Big|_{\beta_{\mathrm{UB}}=-1}=\mu_{Q}(s,a)-\sigma_{Q}(s,a) \\ &\begin{aligned}&=\frac{1}{2}(Q_{\theta_1}(s,a)+Q_{\theta_2}(s,a))-\frac{1}{2}|Q_{\theta_1}(s,a)-Q_{\theta_2}(s,a)|\end{aligned} \\ &=\min(Q_{\theta_{1}}(s,a),Q_{\theta_{2}}(s,a)),& \text{(9)} \end{aligned} Q^UB(s,a) βUB=1=μQ(s,a)σQ(s,a)=21(Qθ1(s,a)+Qθ2(s,a))21Qθ1(s,a)Qθ2(s,a)=min(Qθ1(s,a),Qθ2(s,a)),(9)
而当 β = 1 \beta=1 β=1时等价于 Q ^ U B ( s , a ) ∣ β U B = 1 = max ⁡ ( Q θ 1 ( s , a ) , Q θ 2 ( s , a ) ) , \left.\hat{Q}_\mathrm{UB}(s,a)\right|_{\beta_\mathrm{UB}=1}=\max(Q_{\theta_1}(s,a),Q_{\theta_2}(s,a)), Q^UB(s,a) βUB=1=max(Qθ1(s,a),Qθ2(s,a)),

原问题一种简单的解决方法是使用BC将其转化为无约束问题:
π e naive ( s ) = arg ⁡ max ⁡ π Q ^ UB ( s , π ( s ) ) − λ ∥ π ϕ ( s ) − π ( s ) ∥ \pi_e^\text{naive}{ ( s ) }=\arg\max_{\pi}\hat{Q}_\text{UB}{ ( s , \pi ( s ) ) }-\lambda\|\pi_\phi(s)-\pi(s)\| πenaive(s)=argπmaxQ^UB(s,π(s))λπϕ(s)π(s)
然而,由于目标策略通过策略改进不断更新,这种基于行为克隆的惩罚项无法缩小行为策略和目标策略之间的差距,违反了带约束的原问题。

为了解决该问题,提出在TD3的行为策略上增加一项扰动模型 ξ \xi ξ。行为策略改为
π e ( s ) = π ϕ ( s ) + ξ ω ( s , π ϕ ( s ) ) + ϵ \pi_e(s)=\pi_\phi(s)+\xi_\omega(s,\pi_\phi(s))+\epsilon πe(s)=πϕ(s)+ξω(s,πϕ(s))+ϵ
而对扰动模型的参数最小化下列损失函数
L ( ω ) = − E s ∼ B [ Q ^ U B ( s , π e ( s ) ) ] \mathcal{L}(\omega)=-\mathbb{E}_{s\sim\mathcal{B}}\left[\hat{Q}_{\mathrm{UB}}(s,\pi_e(s))\right] L(ω)=EsB[Q^UB(s,πe(s))]

Meta Adaptation for Distribution Shift Reduction

接着,为了解决在线微调存在的分布偏移问题,采用元学习的方法。具体的,保留两个buffer,Buffer B B B存储离线以及在线所有数据, B r B_r Br存储最新在线数据。

meta training

首先在B上训练策略:
L t r n ( ϕ ) = − E s ∼ B [ Q θ 1 ( s , π ϕ ( s ) ) ] \mathcal{L}_{trn}(\phi)=-\mathbb{E}_{s\sim\mathcal{B}}\left[Q_{\theta_1}\left(s,\pi_\phi(s)\right)\right] Ltrn(ϕ)=EsB[Qθ1(s,πϕ(s))]
然后基于SGD的一次梯度下降得到: ϕ ′ = ϕ − α ∇ ϕ L t r n ( ϕ ) \phi^{\prime}=\phi-\alpha\nabla_{\phi}\mathcal{L}_{trn}(\phi) ϕ=ϕαϕLtrn(ϕ)

meta test

然后利用最新在线数据集测试:
L t s t ( ϕ ′ ) = − E s ∼ B r [ Q θ 1 ( s , π ϕ ′ ( s ) ) ] \mathcal{L}_{tst}(\phi')=-\mathbb{E}_{s\sim\mathcal{B}_r}[Q_{\theta_1}(s,\pi_{\phi'}(s))] Ltst(ϕ)=EsBr[Qθ1(s,πϕ(s))]

meta optimization

最后将上述两个损失函数用下面的元优化目标共同优化
ϕ = arg ⁡ min ⁡ ϕ L t r n ( ϕ ) + β L t s t ( ϕ − α ∇ ϕ L t r n ( ϕ ) ) \phi=\arg\min_\phi\mathcal{L}_{trn}(\phi)+\beta\mathcal{L}_{tst}(\phi-\alpha\nabla_\phi\mathcal{L}_{trn}(\phi)) ϕ=argϕminLtrn(ϕ)+βLtst(ϕαϕLtrn(ϕ))

问题

  1. 原文中在meta optimization中对 ϕ \phi ϕ梯度更新是否修正为:
    ϕ ← ϕ − α ∂ ( L t r n ( ϕ ) + β L t s t ( ϕ − α ∇ ϕ L t r n ( ϕ ) ) ) ∂ ϕ \phi\leftarrow\phi-\alpha\frac{\partial\left(\mathcal{L}_{trn}\left(\phi\right) +\beta\mathcal{L}_{tst}\left(\phi-\alpha\nabla_{\phi}\mathcal{L}_{trn}\left(\phi\right)\right)\right)}{\partial\phi} ϕϕαϕ(Ltrn(ϕ)+βLtst(ϕαϕLtrn(ϕ)))
  2. 基于这个偏导出现的第二个问题。这是源码中元学习的训练过程
# Compute actor losseactor_loss = -self.critic.Q1(state, self.actor(state)).mean()""" Meta Training"""self.actor_optimizer.zero_grad()actor_loss.backward(retain_graph=True)self.hotplug.update(3e-4)"""Meta Testing"""self.beta = max(0.0, self.beta - self.anneal_step)meta_actor_loss = -self.critic.Q1(meta_state, self.actor(meta_state)).mean()weight = self.beta * actor_loss.detach() / meta_actor_loss.detach()meta_actor_loss_norm = weight * meta_actor_lossmeta_actor_loss_norm.backward(create_graph=True)"""Meta Optimization"""self.actor_optimizer.step()self.hotplug.restore()

其中,meta-testing中计算weight以及meta_actor_loss_norm不太明白。按照本人的理解,原文计算 L t s t L_{tst} Ltst ϕ \phi ϕ求偏导:
β ∂ L t s t ( ϕ − α ∇ ϕ L t r n ( ϕ ) ) ∂ ϕ = β ∂ L t s t ( ϕ − α ∇ ϕ L t r n ( ϕ ) ) ∂ ϕ ′ ∂ ϕ ′ ∂ ϕ \frac{\beta{\color{red}\partial}\mathcal{L}_{tst}\left(\phi-\alpha\nabla_{\phi}\mathcal{L}_{trn}\left(\phi\right)\right)}{\partial\phi}=\beta\frac{{\color{red}\partial}\mathcal{L}_{tst}\left(\phi-\alpha\nabla_{\phi}\mathcal{L}_{trn}\left(\phi\right)\right)}{\partial\phi'}\frac{\partial\phi'}{\partial\phi} ϕβLtst(ϕαϕLtrn(ϕ))=βϕLtst(ϕαϕLtrn(ϕ))ϕϕ
中间的偏导自然是由meta-test小节的损失函数所得到的meta_actor_loss。而 β ∂ ϕ ′ ∂ ϕ = β ∂ L t s t ∂ ϕ / ∂ L t s t ∂ ϕ ′ = β ∂ L t r n ∂ ϕ / ∂ L t r n ∂ ϕ ′ \beta\frac{\partial\phi'}{\partial\phi}=\beta\frac{\partial L_{tst}}{\partial\phi}/\frac{\partial L_{tst}}{\partial\phi'}=\beta\frac{\partial L_{trn}}{\partial\phi}/\frac{\partial L_{trn}}{\partial\phi'} βϕϕ=βϕLtst/ϕLtst=βϕLtrn/ϕLtrn就是那个weight。
但这样应该使用从相同的Buffer中获得状态数据,这并未在源码中体现。

可能有误,欢迎指正

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

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

相关文章

OpenHarmony教程指南-自定义通知推送

介绍 本示例主要展示了通知过滤回调管理的功能,使用ohos.notificationManager 接口,进行通知监听回调,决定应用通知是否发送。 效果预览 使用说明 1.在使用本应用时,需安装自定义通知角标应用; 2.在主界面&#xff…

重学SpringBoot3-WebMvcAutoConfiguration类

重学SpringBoot3-WebMvcAutoConfiguration类 是什么什么用生效条件作用 自定义配置的三种方式自定义配置举例1. 自定义 DispatcherServlet 配置2. 静态资源配置3. 自定义MVC配置4. 消息转换器5. 异常处理 是什么 org.springframework.boot.autoconfigure.web.servlet.WebMvcAut…

FPGA IBUFG

IBUFG和IBUFGDS的输入端仅仅与芯片的专用全局时钟输入管脚有物理连接,与普通IO和其它内部CLB等没有物理连接。 所以,IBUFG输入的不能直接接另外信号。 GTH transceiver primitives are called GTHE3_COMMON and GTHE3_CHANNEL in UltraScale FPGAs, an…

@RequestMapping与@GetMapping和@PostMapping等注解的区别

目录 前置知识 大致区别 使用场景上的注意事项 如何工作 使用案例 写法对比 前置知识 HTTP请求方法一共有9种,为:GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE、CONNECTGET(获取资源) 本质就是发送一个请求来取得服务器上的某一资源&…

【Java代码审计】JNDI+RMI绕过高版本JDK的限制

【Java代码审计】JNDIRMI绕过高版本JDK的限制 1.高版本JDK利用注入导致的问题2.绕过分析3.Tomcat8绕过4.工具绕过 1.高版本JDK利用注入导致的问题 JDK 6u132、7u122、8u113 开始 com.sun.jndi.rmi.object.trustURLCodebase 默认值为false,运行时需加入参数 -Dcom.s…

Go语言物联网开发安科瑞ADW300/4G电能表数据上传mqtt平台-电表接线到传输数据完整流程

电能表功能说明 ADW300是方便用户进行用电监测、集抄和管理,可灵活安装在配电箱中,可用于电力运维、环保监管等在线监测类平台中。我们本案例是用于工业售电公司对出售电的管理,设备可以监控用电情况、故障监控及警报,售电公司可…

(完美方案)解决mfc140u.dll文件丢失问题,快速且有效的修复

唉,又是丢失了mfc140u.dll,这该怎么办呢?如果你的电脑突然找不到或丢失mfc140u.dll文件,那就真是太糟糕了。别担心,我分享给你一些干货,告诉你如何快速解决mfc140u.dll丢失的问题。 一.mfc140u.dll属性功能…

百度地图城市点位数据下载并转换

概述 在浏览百度地图开放平台的时候,发现有个资源下载页面,里面有个城市中心点位和百度地图行政区划adcode映射表数据,这是一个经常使用到的数据,本文实现将这个数据转换为geojson,并借助QGIS转换为经纬度坐标或火星坐…

LCR 175. 计算二叉树的深度

一、题目描述 LCR 175. 计算二叉树的深度 二、思路 递归求左右子树的高度 三、解题思路 把大规模的问题拆分成小规模的问题1、要求根节点的二叉树深度 2、转换子问题:求左子树为根节点的二叉树深度 3、转换子问题:成求右子树为根节点的二叉树深度 4、最…

宏auto关键字(C++基础)

宏 宏可以实现对语句的同义替换&#xff0c;简单来说就是预处理阶段、编译前的替换&#xff08;包括符号&#xff0c;变量等&#xff09;。 #define LOG(x) std::cout << x << std::endl; LOG("hello") 可以正常使用。 下面通过上图中借用不同开发模…

Threejs着色器(GPU)编程——感温管网

管网,作为支撑现代城市运转的重要基础设施,是隐藏在地面之下的庞大工程网络。这些管网如同城市的血脉,负责输送各种必要的资源,如水源、热力、燃气等,同时排除废水和其他废弃物。然而,由于其位于地下,人们往往难以直接感知其存在和运行状态。为了保障这些地下管网的安全…

Leetcode - 周赛387

目录 一&#xff0c;3069. 将元素分配到两个数组中 I 二&#xff0c;3070. 元素和小于等于 k 的子矩阵的数目 三&#xff0c;3071. 在矩阵上写出字母 Y 所需的最少操作次数 四&#xff0c;3072. 将元素分配到两个数组中 II 一&#xff0c;3069. 将元素分配到两个数组中 I 本…

Express学习(三)

Express中间件 中间件的概念 什么是中间件 中间件&#xff0c;特指业务流程的中间处理环节。Express中间件的调用流程 当一个请求到达Express的服务器之后&#xff0c;可以连续调用多个中间件&#xff0c;从而对这次请求进行预处理。类似于下图所示 Express中间件的格式 Expr…

内联函数|auto关键字|范围for的语法|指针空值

文章目录 一、内联函数1.1概念1.2特性 二、auto关键字2.2类型别名思考2.3auto简介2.4auto使用细则2.4 auto不能推导的场景 三、基于范围的for循环(C11)3.1 范围for的语法 四、指针空值nullptr(C11)4.1 C98中的指针空值 所属专栏:C初阶 一、内联函数 1.1概念 以inline修饰的函…

【LeetCode】升级打怪之路 Day 16:二叉树题型 —— 二叉树的构造

今日题目&#xff1a; 654. 最大二叉树105. 从前序与中序遍历序列构造二叉树106. 从中序与后序遍历序列构造二叉树889. 根据前序和后序遍历构造二叉树 目录 LC 654. 最大二叉树 【easy】 Problem&#xff1a;根据遍历序列来还原二叉树 【classic】 ⭐⭐⭐⭐⭐LC 105. 从前序与中…

C++vector的使用方法

文章目录 一、vector的介绍1. 文档链接2. 简要介绍 二、vector的使用1.vector的定义&#xff08;1&#xff09;构造函数&#xff08;2&#xff09;拷贝构造函数&#xff08;2&#xff09;赋值重载 2. vector 增删查改&#xff08;1&#xff09;operator []&#xff08;2&#x…

[HackMyVM]靶场 Quick3

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (U…

HTML—常用标签

常用标签&#xff1a; 标题标签&#xff1a;<h1></h1>......<h6></h6>段落标签&#xff1a;<p></p>换行标签&#xff1a;<br/>列表&#xff1a;无序列表<ul><li></li></ul> 有序列表<ol>&…

她们正在影响AI进程

今天是3月8日&#xff0c;祝广大女性同胞节日快乐&#xff01; 当下&#xff0c;人工智能正是全球科技圈最受关注的领域&#xff0c;甚至没有之一。 在人工智能领域诞生兴起的几十年内&#xff0c;女性科学家作为重要力量&#xff0c;一直在推动行业不断向前发展。 从基础算…

并查集(蓝桥杯 C++ 题目 代码 注解)

目录 介绍&#xff1a; 模板&#xff1a; 题目一&#xff08;合根植物&#xff09;&#xff1a; 代码&#xff1a; 题目二&#xff08;蓝桥幼儿园&#xff09;&#xff1a; 代码&#xff1a; 题目三&#xff08;小猪存钱罐&#xff09;&#xff1a; 代码&#xff1a; …