多精度 simulator 中的 RL:一篇 14 年 ICRA 的古早论文
全文快读
- 论文题目:Reinforcement learning with multi-fidelity simulators,是 14 年的 ICRA 会议的论文。师兄说是 robotics 顶会,但中稿率蛮高的。
- 链接:https://ieeexplore.ieee.org/document/6907423
- main contribution:把 multi-fidelity optimization 拓展到 sequential decision 场景。
- 主要内容:
- 目标:real-world sample 数量最少。
- 定义 optimistic multi-fidelity simulator chain:一大串 multi-fidelity 的 simulator。
- KWIK 技术:很 naive 的技术,就是,如果我们看到过足够多这种情况,就根据经验给出 reward / transition 估计,否则,给出最大 reward 作为估计(鼓励 exploration)。
- MF-bandit 算法:
- 假设 state 不变,我们要找到最优 action;
- 目前在尝试 a* = argmax Reward(最大化 reward 估计值)这个动作,在 level d 的 fidelity 尝试了这个动作,得到其 reward,用这个 reward 更新 reward 估计值。
- reward 估计值的更新:如果在最 low-fidelity 的 simulator,估计值 = R_max;否则,用 fidelity 低一层的 reward 估计值,作为当前 fidelity reward 估计的 heuristic,估计 = R_{d-1} + β。
- 然后,我们继续做 a* = argmax R,因为 reward 估计值变了嘛,所以这个 a* 很可能跟上一轮的 a* 不是同一个。
- 如果是同一个,那我们就认为 policy 在 level d 的 fidelity 收敛了,去 level d+1 继续做 MF-bandit。
- 如果不是同一个:如果这个 a* 在 level d-1 上并没有估计值,即,我们没法拿 d-1 的 reward 估计做 d 层 reward 估计的 heuristic 了,那么回退到 d-1 层,先把 d-1 层 reward 估计算出来。
- MFRL 算法:跟 MF-bandit 基本一样。
- 我们需要估计的有:1. reward,2. env transition。
- 要通过 argmax Q function 取 action。
- 每次 1. reward,2. env transition 有所更新(根据 KWIK,即出现 (s,a,r,s’) 次数足够多),就重新计算 Q function。并且,如果 1 2 有所更新,把数据同步到所有更 low-fidelity 的 KWIK learner。
- 局限性:我还没太想好,如果用 DRL 来做,具体该怎么做。
0 abstract
- 提出一个 RL 框架:在有多个保真度(fidelity)不断降低的 simulator 的情况下。
- 我们的框架允许 agent 选择仍能提供信息的最 low-fidelity 的 simulator,来限制 high-fidelity simulator 的样本数量。
- 该方法基于 know-what-it-knows 技术,将 low-fidelity 的 Q function 作为 high-fidelity RL 的 heuristic。与迁移学习(transfer learning)或无模拟器学习相比,real-world sample 数量更少。
- 给出了关于 sample conplexity 的理论证明,并在一辆有 multi-fidelity simulator 的遥控汽车上做实验。
1 intro
迁移学习:将策略从 simulator 转移到 real-world。
多保真 RL(MFRL):
- 结合多保真优化 [6] 和 model-based RL,"面对不确定性的乐观主义 "启发式方法,RL [7] 的 "知道它知道什么"(know what it knows,KWIK)model-learning framework。
- 1 在 coarse model 里探索,2 用 fine model 更新 coarse model。
与只向现实世界的 agent 传递一次 heuristics 的单向方法不同[5],MFRL 框架还规定了 agent 何时应该向上移动到高保真模拟器,以及在更昂贵的模拟中进行过度探索之前,向下移动保真度的规则。有理论上的收敛、采样效率的保证。
具体来说,该框架
- (1)不会在高水平上运行已被证明为次优的行动,
- (2)(在一定条件下)将最高 fidelity 的样本数量降到最低,
- (3)限制 sample 总数。
- 此外,可以证明 MFRL without resets 在最高 fidelity 的 simulator 上的样本数(最坏情况)不比“单向传输”方法多。
main contributions:
- (1)介绍 MFRL framework;
- (2)对该框架的 sample complexity 进行了理论分析;
- (3)实验。
2 related work
RL:1 在 simulator 里学,然后直接在 real-world 跑,2 一直在 real-world 里跑,但用 low-fidelty simulator 算 policy gradient。
已经有监督学习的 multi-fidelty 工作了。
使用 low-fidelty model 生成的东西,作为指导 exploration 的 heuristic。
- 不是 用上一个环境训出来的 policy 指导当前环境学习的迁移学习(transfer learning,TL)。
- 不是 在 action space 不同的环境间的 TL [10],因为 env 的 dynamics 和 rewards 也不一样。
类似的方法是 transferred delayed Q-learning(TDQL)[5]。可以证明我们的方法在 highest-fidelity env 上的 sample 数量 ≤ TDQL。
我们的工作将多保真优化(MFO)[6] 扩展到顺序决策(sequential decision-making)问题,借鉴 MFO 的经验,用 high-fidelity 数据更新模型,并根据 low-fidelity 结果作为 RL exploration 的 constraint。
3 背景 & 假设
3.1 RL & KWIK(know what it knows)的背景
- KWIK:是一种 standardize RL sample complexity 的 framework。sample complexity 就是次优步骤的数量。
- 如果 agent 对 (s,a) 的预测 (s’, r) 有把握,即 || prediction - ground truth || ≤ ε,则使用预测值 (s’, r),否则 agent 给出⊥,表示它不知道 (s,a) 会发生什么。
- KWIK-Rmax RL:于是,使用预测的 s’ 和 real env 的 reward 建立近似 MDP。如果 agent 给出了⊥,则乐观的将 reward 设成 (1-γ)R_max。
- 它保证了多项式的 sample complexity。
- (并没有听懂)
3.2 问题定义
- 用 Σ 表示 MDP simulator。
- 貌似,假设 low-fidelity 是 high-fidelity 的一种状态集结,用 |Q(s, a) - Q(ρ[s], a)| 来定义 fidelity f(Σi, Σj, β),其中 ρ 是 Si → Sj 的 state mapping,Σi 的 fidelity<Σj。(见公式)
- 所以,Σi 对 Σj 的 fidelity 与它们最优 Q function 的误差成(负的)正比,前提是 low-fidelity Σi 对 Q function 的低估(还是高估)不超过 β,否则就是负无穷。
- 合理性解释:在汽车模拟器中,low-fidelity Σi 假设行动会有完美的结果,然而在 higher-fidelity 中,这些乐观的 Q function 被更现实的 value function 所取代。
- Definition 1: optimistic multi-fidelity simulator chain:一系列 Σ1 .. ΣD,其中 ΣD 是 real world,并且对于一个特定的 ρi 和 βi,有 fidelity(Σi, Σ_{i+1}, βi) 不是负无穷。
- Assumption 1: 假设对于 low-fidelity Σi 和 high-fidelity Σ_{i+1},在后者上模拟一步的 cost 是在前者上模拟多项式步(polynomial)的 cost。
- Assumption 2: 只能通过连续 trajectory 的方式使用模拟器,不能随机访问 (s,a) 或直接读参数。
- objectives:
- 尽量减少 ΣD(real-world)的 sample 数量。
- sample 数量是多项式的约束?
- switch simulator 次数是多项式的约束。
4 Multi-Fidelity Bandit Optimization
考虑最简单的 setting:一个带有随机性的、只包含一个 state、k 个 action(称为 arm)的 MDP,使用 MF 优化寻找最优 arm。
4.1 MF 寻找最优 arm 的算法(MF-bandit)
变量与初始化:
- 首先维护一个 reward 集合 R_d(a),用于存储尝试各种 action(arm)的经验。
- 如果 reward 经验集合 R_d(a) 里关于某 action a 的经验超过 m 条,则取这些经验 reward 的平均值为 reward 估计值 U^_{d,a};
- 否则给出⊥即“我不知道”,并将 R_max 作为估计值(乐观估计)。
- 维护 bool 变量 closed_d,表示 Σ_d 的 action 是否收敛。
- 维护采取某 action 后的 reward 的 upper bound,U_{d,a}。
- 维护 bool 变量 con_{d,a},表示 d 层的 action a 我是否了解透了。
- 维护 bool 变量 change_d,表示 d 层的 a* = argmax R_d(a) 是不是要变了。
算法:
- 首先取 a* = argmax U_{d,a},即 reward 上界最大的 action。
- 更新 closed_d = con_{d,a*} 或者 a* 肯定是 near optimal,表示 Σ_d 的 action 收敛了。
- 如果 closed_d == false,即 Σ_d 中 action 的 reward 还没收敛,则执行 a*,得到 reward r,更新 reward 经验集合 R_d(a)。
- 然后,更新 reward upper bound U_{d,a*} = min(U_{d,a*}}, U^_{d,a*})。
- 最初的 U_{d,a} = U_{d-1,a} + β_{d-1} 是来自 low-fidelity 的 heuristic,是 low-fidelity simulator 的 heuristic 加上高估的极限 β。
- 如果 R_d(a) 能够给出对于 a 的 reward 估计(即经验超过 m 条)了,则
- con_{d,a*} = true,表示 a* 我了解透了;
- change_d = true,表示 既然我获得了基于真实经验的 reward 估计值,可能 d 层的 a* = argmax R_d(a) 要换一换了。
- 然后,更新 reward upper bound U_{d,a*} = min(U_{d,a*}}, U^_{d,a*})。
- 如果 closed_d == true,即 Σ_d 中 action 的 reward 收敛了,则 d += 1。
- 同时更新 heuristic U_{d+1,a} = U_{d,a} + β_d,changed_{d+1} = false。
- 如果 con_{d-1,a*} == false(目前给出的 a* 还没了解透)&& change_d == true(上一轮得到了一个 action 的真实 reward 估计,所以这一轮换 argmax action 了),则代表 a* = argmax R 换了个 action,但这个 action 在 low-fidelity 中还没理解透(也就是所谓的 low-fidelity 给出的最佳 action 在 high-fidelity 表现不好),要回溯到 low-fidelity simulator,d -= 1。
- 更新 changed_{d-1} = false。
- for 所有的 action a:如果 con_{d,a} == true(表示 action a 在 simulator d 研究透了),then
- 把 high-fidelity 的经验 R_{d} 拷贝到 low-fidelity 经验集合 R_{d-1},
- 设置 con_{d-1,a} == true(既然上层研究透了,下层也不用做研究了),
- change_{d-1} = true。
真抽象。
4.2 一个例子 4.3 理论证明
不愿多看。
5 Multi-Fidelity RL
5.1 MFRL algorithm
变量与初始化:
- ρ 是 simulator 之间的 state mapping。
- m_known 是去往更高 fidelity 的采样次数。
- Q function 初始化为 R_max / (1-γ),乐观的估计。
- 如果模型参数发生变化,change_d = true,重新计算 Q 值。
- 关键技术和前面的 MF-bandit 很像:如果在当前 fidelity 上,刚刚模型学到了更多 (s,a) 的值(change == true),导致 Q function 重新计算,a* = argmax Q 的 a* 变化了;然而,变化后的 a* 在上一 fidelity(d-1 层)仍然存在不确定性,那么就回溯到 d-1 层。
算法:
- 首先取 a* = argmax Q_d(s,a),即估计的 Q function 上界最大的 action。
- 如果 d>1 && change_d == true && \(T_{d-1}[ρ_{d-1}^{-1}(s),a]\) == ⊥ 或者 \(R[ρ_{d-1}^{-1}(s),a]\) == ⊥,则回溯到 low-fidelity simulator,d -= 1。
- \(Q_{d-1}[s,a] = P(\hat\Sigma_{d-1}, Q_{d-2} + \beta_{d-2})\)。
- m_k = 0。
- else,执行 action a*,观测 r 和 s'。
- 如果 \(R_d[s,a^*]\) == ⊥ 或者 \(T_d[s,a^*]\) == ⊥,那么 m_k = 0,更新 R_d 和 T_d。
- else,m_k += 1。
- 如果 \(R_d[s,a^*]\) 和 \(T_d[s,a^*]\) 从 ⊥ 变成 known,那么
- \(Q_d[s,a^*] = P(\langle S_d,A,R_d,T_d,\gamma\rangle, Q_{d-1} + \beta_{d-1})\) 。
- 对于所有 d’ ≤ d,根据 \(R_d[s,a^*]\) 和 \(T_d[s,a^*]\) 的新值,来更新 \(\langle R,T\rangle_{d'}(ρ_{d-1}^{-1}(s),a^*)\)。
- 把 high-fidelity 的数据传递给【所有】更低的 fidelity。
- 并且 change_d’ 都 = true。
- 如果 \(R_d[s,a^*]\) == ⊥ 或者 \(T_d[s,a^*]\) == ⊥,那么 m_k = 0,更新 R_d 和 T_d。
- 如果 d<D && m_k == m_{known},那么增加 fidelity,去 d+1 层,d += 1。
- \(Q_{d+1}(s,a) = P(\hat\Sigma_{d+1},Q_d+\beta_d)\) 。
- m_k = 0,change_d == false。
5.2 一个例子 5.3 理论证明
不愿多看。
6 实验:RC car results
自己开 Google 翻译看就好啦。
看起来实验 setting 蛮 naive 的。
7 extensions & conclusions
- 虽然这项工作是 tabular transition model & tabular reward,但 NN 近似当然可以。
- 生成一些样本(?)第二段没看懂。
- MFRL:
- sequential decision 的 multi-fidelity optimization,用 low-fidelity 作为 heuristic 来指导 high-fidelity 探索。
- 与 transfer learning 不同,我们还可以从 high-fidelity transfer 到 low-fidelity。
- 有一堆理论证明。
- 在遥控汽车上做实验。
多精度 simulator 中的 RL:一篇 14 年 ICRA 的古早论文的更多相关文章
- iOS 把图片从Mac本地添加到iOS Simulator中
[把图片从Mac本地添加到iOS Simulator中] 1. 把图片从Mac本机拖动到iOS Simulator中: 2. iOS Simulator会自动打开Safari去打开对应的图片,然后你用 ...
- 视觉SLAM中的数学基础 第二篇 四元数
视觉SLAM中的数学基础 第二篇 四元数 什么是四元数 相比欧拉角,四元数(Quaternion)则是一种紧凑.易于迭代.又不会出现奇异值的表示方法.它在程序中广为使用,例如ROS和几个著名的SLAM ...
- Linux中磁盘分区——理论篇
Linux中磁盘分区——理论篇 现在主流的分区的方式有两种——MBR分区和GPT分区,本文将着重介绍MBR分区底层原理,及用相关命令验证相关原理 Linux中磁盘分区理论篇 为什么要对磁盘进行分区 M ...
- 全面解析JavaScript中“&&”和“||”操作符(总结篇)
1.||(逻辑或), 从字面上来说,只有前后都是false的时候才返回false,否则返回true. ? 1 2 3 4 alert(true||false); // true alert(false ...
- vue项目中使用bpmn-节点篇
前情提要 根据之前的操作,我们可以创建.导入.导出流程图,并对其进预览.通过此篇可以学到: 为节点添加点击.鼠标悬浮等事件 获取流程图内所有指定类型的节点 通过外部更新节点名字 获取节点实例的两种方法 ...
- vue项目中使用bpmn-基础篇
内容概述 本系列“vue项目中使用bpmn-xxxx”分为五篇,均为自己使用过程中用到的实例,手工原创,目前属于陆续更新中.主要包括vue项目中bpmn使用实例.应用技巧.基本知识点总结和需要注意事项 ...
- vue项目中使用bpmn-番外篇(留言问题总结)
前情提要 “vue项目中使用bpmn-xxxx”系列的七篇文章在上周已经更新完成,发表后,有小伙伴在使用时提出了一些文章中没有讲到的问题,此篇作为番外篇,将大家提出的共性问题解答一下,欢迎大家支持原创 ...
- Java中的泛型 - 细节篇
前言 大家好啊,我是汤圆,今天给大家带来的是<Java中的泛型 - 细节篇>,希望对大家有帮助,谢谢 细心的观众朋友们可能发现了,现在的标题不再是入门篇,而是各种详细篇,细节篇: 是因为之 ...
- 聊聊 Netty 那些事儿之 Reactor 在 Netty 中的实现(创建篇)
本系列Netty源码解析文章基于 4.1.56.Final版本 在上篇文章<聊聊Netty那些事儿之从内核角度看IO模型>中我们花了大量的篇幅来从内核角度详细讲述了五种IO模型的演进过程以 ...
- 当初要是看了这篇,React高阶组件早会了
当初要是看了这篇,React高阶组件早会了. 概况: 什么是高阶组件? 高阶部件是一种用于复用组件逻辑的高级技术,它并不是 React API的一部分,而是从React 演化而来的一种模式. 具体地说 ...
随机推荐
- PHP Redis - List (列表)
Redis列表是简单的字符串列表,按照插入顺序排序. 一个列表最多可以包含 232-1 个元素 (4294967295, 每个列表超过40亿个元素) 插入元素在列表头部(lPush,Lpushx) ...
- react+antd 导出excel文件(简单数据&多级表头)
需求: 在基于react+antd进行开发的页面中,实现导出excel报表的功能 实际场景: 1.简单数据:单层表头+数据 2.复杂数据:多层表头+数据 实现方式: 1.简单数据 简单数据的导出使用了 ...
- 一种典型的不知循环次数的c语言循环问题
问题如图 代码如下 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include<stdio.h> 3 int main() 4 { 5 puts(&quo ...
- C语言中的循环
1我觉得循环就是程序一直重复的执行一些语句,直到当符合条件时停止.循环总体分为while循环,do while循环和for循环. 2while循环和do while循环的区别:while是先判定是否符 ...
- python题mhy
def save(s): f=open("test.txt","wt") f.write(s["name"]+"\n") ...
- 字符过滤流 对象流---->ObjectInputStream : 用法
1创建字输入节点流FileInputStram fis = new FileInputStream("读入的文件的路径");2创建对象输入过滤流 包装字节流ObjectInputS ...
- HarmonyOS_Text_Image
Text组件 ohos:属性 id="$+id:text_helloworld" #在程序中控制,需要id="$+id:name",转回MainAbilityS ...
- 树莓派3B+ wifi设置
环境: 硬件:树莓派 3b+ 固件:2018-04-18-raspbian-stretch.img 一.树莓派配置 1.1.wifi配置方法一(已测试,ok) 参考: https://www.cnbl ...
- Delphi之不可思议
1.--------不可思议的函数调用--开始- 开发环境D7 1 function TForm1.GetssA: string; 2 begin 3 Result:=Result+'AA'; 4 e ...
- Matlab %叁
###本章内容十分多 第三章:Variables and Data access Data Types numeric:double.single.int8(16.32.64bit[integer]) ...