Nature:最大扩散强化学习

news2024/9/21 2:34:08

转自:清熙

强化学习(RL)智能体(Agent)常常很难在现实世界中广泛部署:初始化差异影响大,样本效率低下,情境之外难以泛化。

研究发现问题的关键是违反了数据独立同分布 (iid) 的假设,而 iid 是大多数机器学习的基础。

强化学习(特别是具身)智能体的经验不可避免是连续的,且跨时间点相关,这也是笔者强调的RL的非马尔可夫性 。

昨日,Nature机器智能,发文“最大扩散强化学习(MaxDiff RL)”解决了此问题。

图片

图片

图1:时间相关性破坏了强化学习的SOTA技术,对于大多数系统,可控属性决定了状态转换之间的时间相关性。

强化学习领域的大多数方法都假设随机行为会产生有效的探索,最大熵强化学习(MaxEnt RL)这样的高级技术,也隐含这一假设。

不同于从固定的均匀分布或高斯分布中采样,最大熵强化学习最大化学习到的路径分布(即策略)的熵,以期确保足够的随机性来改善探索。

而实际是否可行,取决于智能体的可控属性,与其引发的时间相关性。状态转换之间的时间相关性可能会阻碍有效探索,严重影响深度强化学习智能体的性能。

图片

图片

图2:最大扩散RL缓解了时间相关性以实现有效的探索。a、b,具有不同平面可控属性的系统。c,行动随机化是否导致有效的状态探索取决于基础状态转移动力学的属性。

论文从最大熵原理的统计力学中汲取灵感,该原理是最大口径变分优化,在连续性或时间关联约束下,优化目标是找到轨迹分布Pmax[x(t)], 优化一个熵函数S[P[x(t)]]。

幸运的是,这个受限变分优化问题对于最大熵路径分布具有解析解,其中Z是一个归一化常数:

图片

图片

满足遍历性对最终智能体的性质具有深远的影响。遍历性是动力系统的一个正式属性,保证了单个轨迹的统计量在渐近情况下等同于大量轨迹的统计量。

尽管强化学习智能体时间相关性使得iid采样不可行,遍历性强化学习智能体的全局统计量与iid采样的统计量却无法区分。

图片

图片

图3:最大扩散RL智能体对随机种子和初始化具有鲁棒性。

最大扩散强化学习核心是找到一个能够满足最大扩散路径统计的策略(policy),一个policy 意味着一个轨迹分布。

找到满足最大扩散的轨迹分布的policy,是一个优化问题:最小化“agent现在的轨迹分布与 最大扩散轨迹分布“之间的KL距离。

此KL距离可被写成等效的随机最优控制问题,目标是找到一种policy,最大化“智能体在环境中累计奖励的数学期望”。α>0是超参,用于平衡扩散探索和奖励。

图片

图片

图片

图片

智能体路径熵的局部估计则可以从观察中学习到:

图片

图片

图片

图片

图4:训练系统的具身性确定了部署系统的性能。

MaxDiffRL 同时考虑策略和智能体-环境动力学的时间相关性的一般形式,若不考虑时间相关性,就褪化成MaxEntropy,即MaxEnt是MaxDiff的特例。

图片

图片

图5:最大扩散RL智能体能够进行单次学习。

验证表明,MaxDiffRL方法针对初始化具有鲁棒性,实现了高效单样本学习,情境之外也易于泛化。

流行的基准测试中,MaxDiffRL也稳健地超越了SOTA。为强化学习智能体(如运动机器人和自动驾驶汽车)的更透明更可靠的决策奠定了基础。

SORA 学习到物理原理,看起来也可以以某种方式借鉴MaxDiffRL  类似的方法,以更好的处理时空碎片状态空间时间相关性,更好把控其动态性。

点击阅读原文链接   https://www.nature.com/articles/s42256-024-00829-

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

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

相关文章

驱动(RK3588S)第六课时:linux2.6的使用与GPIO子系统的使用

目录 一、Linux2.6 字符设备驱动编写框架1、合成一个完整的设备号函数2、从完整的设备号里提取主设备号3、动态申请设备号4、静态申请设备号5、释放申请的设备号6、Linux2.6 字符设备驱动的核心结构体7、初始化核心结构体8、向内核去申请 linux2.6 字符设备9、释放申请的设备10…

Linux实验报告2-初步使用shell

目录 一:实验目的 二:实验内容 1 请指出下面每条命令中哪部分是命令名、选项和参数 3 以列表及递归方式查看/dev目录下的文件。 4 修改当前系统时间为2015年1月1日。 7 查看/tmp目录下的所有文件,指出哪些属于隐藏文件。 8 统计文件/e…

Kaggle竞赛:Rossmann Store Sales第66名策略复现

之前做过一次Kaggle的时间序列竞赛数据集练习:CSDN链接效果并不理想,之后在Kaggle的评论中又找到了各式各样的模型方法,其中我还手动还原过第三名的Entity Embedding:CSDN链接。这个参赛方法中,使用了除了比赛给出的数…

MySQL之UDF提权复现

什么是UDF: UDF(Userfined function)用户自定义函数,是MySQL的一个扩展接口,用户通过自定义函数可以实现在 MySQL 中无法方便实现的功能,其添加的新函数都可以在 SQL 语句中调用。 提权条件: 知道MySQL用户名和密码…

探索 Nuxt Devtools:功能全面指南

title: 探索 Nuxt Devtools:功能全面指南 date: 2024/9/3 updated: 2024/9/3 author: cmdragon excerpt: 摘要:本文介绍了Nuxt Devtools的功能和使用方法,包括自动安装、手动安装和各项主要功能,如页面、组件、构建分析等。 categories: 前端开发tags: NuxtDevtools前端…

【AI】Pytorch_损失函数优化器

建议点赞收藏关注!持续更新至pytorch大部分内容更完。 本文已达到10w字,故按模块拆开,详见目录导航。 整体框架如下 数据及预处理 模型及其构建 损失函数及优化器 本节目录 损失函数创建损失函数 (共18个)nn.CrossEnt…

《CounTR: Transformer-based Generalised Visual Counting》CVPR2023

摘要 本论文考虑了通用视觉对象计数问题,目标是开发一个计算模型,用于计算任意语义类别的对象数量,使用任意数量的“样本”(即可能为零样本或少样本计数)。作者提出了一个新颖的基于Transformer的架构,称为…

【前端面试】leetcode树javascript

写一个树 // 定义二叉树节点 function TreeNode(val, left, right) {this.val = (val === undefined ? 0 : val)this.left = (left === undefined ? null : left)this.right = (right === undefined ? null : right) }// 示例使用 const root = new TreeNode(1,new TreeNod…

Javaweb开发总结(2)

1.处理项目中的异常 利用全局异常处理器 单独创建一个类来处理全局的异常,并对其做出相应回应 /* * 全局异常处理器 * */ RestControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(Exception.class)//代表我们要捕获所有异常public Result ex…

STL-string对字符串进行操作

C形式下的字符串:c_str() string s1("hello"); const char* str s1.c_str(); while (*str) {cout << *str << " ";str; } cout << "\n"; 获取字符数组首地址&#xff0c;用C字符串的形式遍历 区别&#xff1a; cout <…

c++实现生产者消费者的供需关系

一、生产者&消费者模式 生产者-消费者模式&#xff08;Producer-Consumer Pattern&#xff09;是一种常见的并发设计模式&#xff0c;这种模式最常见&#xff0c;所以把它单独拿出来&#xff0c;这种模式用于处理生产者和消费者之间的协调问题。生产者和消费者之间不直接关…

leveldb源码解析(一)——编解码

leveldb中&#xff0c;数字的存储统一采用小端序&#xff0c;通过对数字编码和压缩&#xff0c;节省了存储空间。 变长编码 小端序中&#xff0c;每个字节的最低位存储状态&#xff0c;其余7位存储数据。 status状态值说明&#xff1a; 1&#xff1a;该字节不是当前数字最后…

《Few-shot Object Counting and Detection》CVPR2022

概述 摘要&#xff1a; 论文提出了一个新的任务——少量样本目标计数和检测&#xff08;Few-shot Object Counting and Detection, FSCD&#xff09;。在这项任务中&#xff0c;研究者们旨在通过给定少量目标类别的示例边界框来计数和检测图像中所有目标对象。这项任务与少量样…

Your connection to this site is not secure

chrome 打开某一个网站的网页地址栏提示Your connection to this site is not secure,同一个网站的其它地址栏打开不会 无效的方案 浏览器地址栏输入: chrome://flags 找到下边的选项&#xff0c;从Default改为Disabled即可成功解决 亲测这个方法不行 解决方案 点击右上角的3个…

力扣每日一题 一个小组的最大实力值 线性DP

Problem: 2708. 一个小组的最大实力值 &#x1f468;‍&#x1f3eb; 灵神题解 class Solution {public long maxStrength(int[] nums) {// 初始化mn和mx为第一个元素的值long mn nums[0];long mx nums[0];// 从第二个元素开始遍历数组for (int i 1; i < nums.length; i…

vue项目生成插件的LICENSE文件

一、安装license-webpack-plugin npm install --save-dev license-webpack-plugin 二、添加webpack配置 const {LicenseWebpackPlugin} require(license-webpack-plugin)module.exports {configureWebpack: {plugins: [new LicenseWebpackPlugin()]} }三、执行npm run buil…

jpg图片怎么转换成png?值得推荐给大家的几种转换方法

jpg图片怎么转换成png&#xff1f;将jpg图像转换为png格式可以显著提升图像的质量和清晰度&#xff0c;并满足一些特殊需求&#xff0c;例如透明背景。png格式采用无损压缩&#xff0c;这意味着图像在转换过程中不会丢失任何细节或质量&#xff0c;相比于jpg的有损压缩&#xf…

day06 1.继承和多态

#include "work.h"Stack:: Stack():size(10) {data new char[size];top -1;cout <<"无参构造"<<endl; }Stack:: Stack(const char* s) {size strlen(s);data new char[size];strcpy(data,s);top size-1;cout <<"有参构造"…

Android之Handler的post方法和sendMessage的区别

目录 post 方法方法特点 sendMessage 方法方法特点 使用场景区别总结 Handler 类在 Android 中用于在不同线程之间传递消息和执行代码。它提供了两种主要的方式来执行任务&#xff1a;通过 post 方法和通过 sendMessage 方法。这两种方法有不同的使用场景和特点。 post 方法 方…

【系统架构设计】嵌入式系统设计(2)

【系统架构设计】嵌入式系统设计&#xff08;2&#xff09; 嵌入式网络系统嵌入式 Internet 的接入方式嵌入式 TCP/IP 协议栈 嵌入式数据库管理系统数据的一致性高效的事务处理数据的安全性 实时系统与嵌入式操作系统对实时系统划分根据实时性的强弱根据对错失时限的容忍程度或…