O2O:Uni-O4

ICLR 2024
paper

Intro

以往O2O方式普遍将离线与在线过程分开看待,为了避免过渡时容易出现performance drop,引入了各式正则化或者保守价值估计。本文启发于BPPO,提出on-policy的算法Uni-O4将离线与在线阶段的策略优化目标统一,实现了无需额外的正则,算法在纯离线、O2O以及online-offline-online均表现出很好的实验效果。

Method

在解决O2O时的Uni-O4包含三个部分。离线监督学习、多步策略提升以及在线策略微调
在这里插入图片描述

Ensemble BC and IQL

通过BC训练一个策略集合 ∏ n = { π ^ β 1 , … , π ^ β n } \prod_{n}=\{\hat{\pi}_{\beta}^{1},\ldots,\hat{\pi}_{\beta}^{n}\} n={π^β1,,π^βn}, 同时保证集合中策略的多样性添加正则化
在这里插入图片描述
结合上面定理将问题转化为优化其下界:
Maximize: J ( π ^ β i ) = E ( s , a ) ∼ D l o g π ^ β i ( a ∣ s ) + α E ( s , a ) ∼ D log ⁡ ( π ^ β i ( a ∣ s ) m a x 1 ⩽ j ⩽ n π ^ β j ( a ∣ s ) ) \text{Maximize:}J(\hat{\pi}_{\beta}^{i})=\mathbb{E}_{(s,a)\sim\mathcal{D}}\mathrm{log}\hat{\pi}_{\beta}^{i}(a|s)+\alpha\mathbb{E}_{(s,a)\sim\mathcal{D}}\log\left(\frac{\hat{\pi}_{\beta}^{i}(a|s)}{\mathrm{max}_{1\leqslant j\leqslant n}\hat{\pi}_{\beta}^{j}(a|s)}\right) Maximize:J(π^βi)=E(s,a)Dlogπ^βi(as)+αE(s,a)Dlog(max1jnπ^βj(as)π^βi(as))

对于价值函数 Q ^ \hat{Q} Q^ V ^ \hat{V} V^采用IQL的方法:
L ( V ) = E ( s , a ) ∼ D ⌊ L 2 τ ( Q ^ ( s , a ) − V ( s ) ) ⌋ , L ( Q ) = E ( s , a , s ′ ) ∼ D [ ( r ( s , a ) + γ V ( s ′ ) − Q ( s , a ) ) 2 ] , L(V)=\mathbb{E}_{(s,a)\sim\mathcal{D}}\left\lfloor L_{2}^{\tau}\left(\hat{Q}(s,a)-V(s)\right)\right\rfloor,\\L(Q)=\mathbb{E}_{(s,a,s^{\prime})\sim\mathcal{D}}[\left(r(s,a)+\gamma V(s^{\prime})-Q(s,a)\right)^{2}], L(V)=E(s,a)DL2τ(Q^(s,a)V(s)),L(Q)=E(s,a,s)D[(r(s,a)+γV(s)Q(s,a))2],

多步策略优化

利用IQL得到的价值函数并固定参数, 对于集合中的每一个策略采用类似BPPO的优化目标:
J k ( π i ) = E s ∼ ρ D ( ⋅ ) , a ∼ π k i ( ⋅ ∣ s ) [ min ⁡ ( r ( π i ) A π k i ( s , a ) , clip ( r ( π i ) , 1 − ϵ , 1 + ϵ ) A π k i ( s , a ) ) ] J_k\left(\pi^i\right)=\mathbb{E}_{s\sim\rho_{\mathcal{D}}(\cdot),a\sim\pi_k^i(\cdot|s)}\left[\min\left(r(\pi^i)A_{\pi_k^i}(s,a),\text{clip}\left(r(\pi^i),1-\epsilon,1+\epsilon\right)A_{\pi_k^i}(s,a)\right)\right] Jk(πi)=EsρD(),aπki(s)[min(r(πi)Aπki(s,a),clip(r(πi),1ϵ,1+ϵ)Aπki(s,a))]

其中 r ( π i ) = π i ( a ∣ s ) π k i ( a ∣ s ) r(\pi^{i})=\frac{\pi^{i}(a|s)}{\pi_{k}^{i}(a|s)} r(πi)=πki(as)πi(as),k表示迭代次数。若k=0表示单步优化,容易导致次优策略产生。为了保证多步优化的安全性,算法首先利用离线数据构造动态转移模型,
min ⁡ T ^ E ( s , a , s ) ∼ D [ − l o g T ^ ( s ′ ∣ s , a ) ] . \min_{\hat{T}}\mathbb{E}_{(s,a,s)\sim\mathcal{D}}[-\mathrm{log}\hat{T}(s'|s,a)]. T^minE(s,a,s)D[logT^(ss,a)].

然后按照一定频率基于该模型进行H-steps的rollout得到轨迹数据,并利用BC中fixed Q与V计算轨迹累计Q期望
J τ ^ ( π ) = E ( s , a ) ∼ ( T ^ , π ) [ ∑ t = 0 H − 1 Q τ ^ ( s t , a t ) ] \widehat{J_{\tau}}(\pi)=\mathbb{E}_{(s,a)\sim(\hat{T},\pi)}\left[\sum_{t=0}^{H-1}\widehat{Q_{\tau}}(s_{t},a_{t})\right] Jτ (π)=E(s,a)(T^,π)[t=0H1Qτ (st,at)]
J ^ τ ( π i ) > J ^ τ ( π k i ) \widehat J_{\tau}(\pi^{i})>\widehat J_{\tau}(\pi_{k}^{i}) J τ(πi)>J τ(πki),则更新 π k i ← π i \pi_k^i\leftarrow\pi^i πkiπi

Online Fine tuning

离线阶段得到的价值函数以及策略将作为初始化给到在线阶段,采用PPO方法优化。整个离线和离线到在线训练中没有额外的保守正则化或重放缓冲区平衡策略。得益于on-policy算法使得算法非常简单和高效。

伪代码

在这里插入图片描述

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

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

相关文章

制造业为什么需要质量管理系统

质量管理是一个企业最重要的核心竞争力之一。为了确保产品和服务的高质量,企业需要建立一个完善的质量管理体系。而质量管理系统(QMS)正是指导企业如何规范、组织和管理质量相关活动的框架和流程。 在智能制造时代,广大企业如何结…

react状态管理之state

第三章 - 状态管理 随着你的应用不断变大,更有意识的去关注应用状态如何组织,以及数据如何在组件之间流动会对你很有帮助。冗余或重复的状态往往是缺陷的根源。在本节中,你将学习如何组织好状态,如何保持状态更新逻辑的可维护性&…

《编译原理》阅读笔记:p1-p3

《编译原理》学习第 1 天,p1-p3总结,总计 3 页。 一、技术总结 1.compiler(编译器) p1, But, before a program can be run, it first must be translated into a form in which it can be executed by a computer. The software systems that do thi…

2023年谷歌拒了228万应用,禁了33.3万账号,开发者们应如何应对2024的挑战?

谷歌在上周一公布了去年如何应对恶意应用和恶意行为。 报告指出,去年谷歌在Google Play平台上,通过不断升级安全系统、更新政策规定、运用先进的机器学习技术,以及严格把关应用审核流程,成功阻止了高达228万个不合规的应用程序上架…

力扣41. 缺失的第一个正数

Problem: 41. 缺失的第一个正数 文章目录 题目描述思路复杂度Code 题目描述 思路 1.将nums看作为一个哈希表,每次我们将数字n移动到nums[n - 1]的位置(例如数字1应该存在nums[0]处…),则在实际的代码操作中应该判断nums[i]与nums[nums[i] - 1]是否相等,若…

【管理咨询宝藏96】企业数字化转型的中台战略培训方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏96】企业数字化转型的中台战略培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 数字化转型是指&…

Web3 ETF软件开发

开发Web3 ETF软件涉及到金融、法律和技术等多个领域的专业知识,因此存在以下技术难点,开发Web3 ETF软件是一项复杂的技术挑战,需要综合考虑各种因素。开发人员需要具备较强的技术能力和跨学科知识才能成功开发Web3 ETF软件。北京木奇移动技术…

WEB基础--JDBC基础

JDBC简介 JDBC概述 数据库持久化介绍 jdbc是java做数据库持久化的规范,持久化(persistence):把数据保存到可掉电式存储设备(断电之后,数据还在,比如硬盘,U盘)中以供之后使用。大多数情况下,特别是企业级…

Jsoncpp介绍

1.简介 Jsoncpp 是一个 C 库,用于解析和生成 JSON 数据。它提供了一个易于使用的 DOM(Document Object Model)风格的 API,允许开发者以树形结构的方式操作 JSON 数据。 Jsoncpp 是一个C库,允许操作JSON值,…

AI Agent智能应用从0到1定制开发(wanjie)

AI Agent(人工智能体)是一种能够感知环境、进行决策和执行动作的智能实体。不同于传统的人工智能,AI Agent 具备通过独立思考、调用工具去逐步完成给定目标的能力。 「完结12章」AI Agent智能应用从0到1定制开发 AI Agent 和大模型的区别在…

【管理咨询宝藏95】SRM采购平台建设内部培训方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏95】SRM采购平台建设内部培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 重点是建设一个适应战略采…

PDF转word转ppt软件

下载地址:PDF转word转ppt软件.zip 平时工作生活经常要用到PDF转word转ppt软件,电脑自带的又要开会员啥的很麻烦,现在分享这款软件直接激活就可以免费使用了,超级好用,喜欢的可以下载

C++类和对象(基础篇)

前言: 其实任何东西,只要你想学,没人能挡得住你,而且其实学的也很快。那么本篇开始学习类和对象(C的,由于作者有Java基础,可能有些东西过得很快)。 struct在C中的含义: …

PyTorch模型的保存加载

一、引言 我们今天来看一下模型的保存与加载~ 我们平时在神经网络的训练时间可能会很长,为了在每次使用模型时避免高代价的重复训练,我们就需要将模型序列化到磁盘中,使用的时候反序列化到内存中。 PyTorch提供了两种主要的方法来保存和加…

缓存雪崩、击穿、击穿

缓存雪崩: 就是大量数据在同一时间过期或者redis宕机时,这时候有大量的用户请求无法在redis中进行处理,而去直接访问数据库,从而导致数据库压力剧增,甚至有可能导致数据库宕机,从而引发的一些列连锁反应&a…

MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65)

MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 海量点云的处理,需要提前进行抽稀预处理,相比MATLAB预先给出的抽稀方法,这里提供一种基于规则格网的自定义抽稀方法,步骤清晰,便于理解抽稀内涵, 主要涉及到使…

springboot整合rabbitmq的不同工作模式详解

前提是已经安装并启动了rabbitmq,并且项目已经引入rabbitmq,完成了配置。 不同模式所需参数不同,生产者可以根据参数不同使用重载的convertAndSend方法。而消费者均是直接监听某个队列。 不同的交换机是实现不同工作模式的关键组件.每种交换…

三层交换机与防火墙连通上网实验

防火墙是一种网络安全设备,用于监控和控制网络流量。它可以帮助防止未经授权的访问,保护网络免受攻击和恶意软件感染。防火墙可以根据预定义的规则过滤流量,例如允许或阻止特定IP地址或端口的流量。它也可以检测和阻止恶意软件、病毒和其他威…

SlowFast报错:ValueError: too many values to unpack (expected 4)

SlowFast报错:ValueError: too many values to unpack (expected 4) 报错细节 File "/home/user/yuanjinmin/SlowFast/tools/visualization.py", line 81, in run_visualizationfor inputs, labels, _, meta in tqdm.tqdm(vis_loader): ValueError: too …

牛客题-链表内区间反转

链表内区间反转 这是代码 typedef struct ListNode listnode; struct ListNode* reverseBetween(struct ListNode* head, int m, int n ) {if (head NULL) {return NULL;}listnode* findhead head;listnode* findtail head;listnode* prev NULL;int count1 m;int count2…