0 abstract

Offline Reinforcement Learning (RL) aims to learn policies from previously collected datasets without exploring the environment. Directly applying off-policy algorithms to offline RL usually fails due to the extrapolation error caused by the out-of-distribution (OOD) actions. Previous methods tackle such problem by penalizing the Q-values of OOD actions or constraining the trained policy to be close to the behavior policy. Nevertheless, such methods typically prevent the generalization of value functions beyond the offline data and also lack precise characterization of OOD data. In this paper, we propose Pessimistic Bootstrapping for offline RL (PBRL), a purely uncertainty-driven offline algorithm without explicit policy constraints. Specifically, PBRL conducts uncertainty quantification via the disagreement of bootstrapped Q-functions, and performs pessimistic updates by penalizing the value function based on the estimated uncertainty. To tackle the extrapolating error, we further propose a novel OOD sampling method. We show that such OOD sampling and pessimistic bootstrapping yields provable uncertainty quantifier in linear MDPs, thus providing the theoretical underpinning for PBRL. Extensive experiments on D4RL benchmark show that PBRL has better performance compared to the state-of-the-art algorithms.

  • background:

    • offline RL 从之前收集的 dataset 中学习策略,而无需探索环境。由于 OOD actions 导致的 extrapolation error,将 off-policy RL 直接应用于 offline RL 通常会失败。
    • 先前工作通过 penalize OOD action 的 Q value,或去约束 trained policy 接近 behavior policy 来解决此类问题。
    • 然而,这些方法通常阻止了 value function generalize 到 offline dataset 之外,并且也缺乏对 OOD data 的精确表征(characterization)。
  • method:
    • 我们提出了 offline RL 的悲观引导(Pessimistic Bootstrapping,PBRL),它是一个纯粹的 uncertainty-driven 的 offline 算法,没有明确的 policy constraint。
    • 具体的,PBRL 通过 bootstrapped Q functions 的 disagreement 进行 uncertainty 的量化,并根据所估计的 uncertainty,对 value function 进行惩罚,从而实施 pessimistic updates。
    • 对于 extrapolation error 的处理,我们进一步提出了一种新的 OOD sampling 方法。
    • 理论:上述 OOD sampling + pessimistic bootstrapping,在 linear MDP 中形成了一个 uncertainty 的量化器,是可以证明的。
  • 实验:
    • 在 D4RL 基准测试上的大量实验表明,与最先进的算法相比,PBRL 具有更好的性能。

3 method

3.1 使用 bootstrapped-Q function 进行 uncertainty 的量化

  • 维护 K 个各自 bootstrap 更新的 Q-function。
  • uncertainty \(U(s,a)=\mathrm{std}(Q^k(s,a))=\sqrt{\frac1K\sum(Q^k-\bar Q)^2}\) 。(看 figure 1(a),感觉定义是有道理的)

3.2 pessimistic learning - 悲观学习

  • idea:基于 uncertainty 来惩罚 Q function。

  • PBRL 的 loss function 由两部分组成:① ID 数据的 TD-error、② OOD 数据的伪 TD-error。

  • ① ID 数据的 TD-error,见公式 (4),大概就是 \(\hat T^{in}Q^k(s,a):=r+\gamma \hat E\big[Q^k(s',a')-\beta_{in}U(s',a')\big]\) ,对所转移去的 (s',a') 的 uncertainty 进行惩罚。

    • (上文的 ID (s, a, r, s', a') 由 offline dataset 得到)
  • ② OOD 数据的伪 TD-error,s' 好像是 ID 的 state,a' 是 policy 生成的(可能是 OOD 的)action。

    • 惩罚方式的 idea: \(\hat T^{ood}Q^k(s^{ood},a^{ood}):=Q^k(s^{ood},a^{ood})-\beta_{ood}U(s^{ood},a^{ood})\) ,直接减去它的 uncertainty。
    • (如果 (s,a) 是 ID state-action,那么 uncertainty 会很小)
    • 相关的实现细节:早期 Q function 的截断 \(\max[0, \hat T^{ood}Q^k(s,a)]\) ,在训练初期使用大的 β ood 实现对 OOD action 的强惩罚,在训练过程中不断减小 β ood 的值。
    • (感觉也算是使用 sarsa 式更新…)
  • loss function:

  • \[L_{critic}=\hat E_{(s,a,r,s')\sim D_{in}}\bigg[(\hat T^{in}Q^k-Q^k)^2\bigg]
    + \hat E_{s^{ood}\sim D_{in},~a^{ood}\sim\pi(s^{ood})}\bigg[(\hat T^{ood}Q^k-Q^k)^2\bigg]
    \]
  • policy: policy 希望最大化 Q function,具体的,最大化 ensemble Q 中的最小值。

3.3 是理论。

offline RL | Pessimistic Bootstrapping (PBRL):在 Q 更新中惩罚 uncertainty,拉低 OOD Q value的更多相关文章

  1. 免费api大全(更新中)

    免费api大全(更新中) API大全  http://www.apidq.com/    (这个碉堡了) 天气接口 气象局接口 完整数据:http://m.weather.com.cn/data/10 ...

  2. 第一章:大数据 の Linux 基础 [更新中]

    本课主题 Linux 休系结构图 Linux 系统启动的顺序 Linux 查看内存和 CPU 指令 环境变量加载顺序 Linux 内存结构 Linux 休系结构图 Linux 大致分为三个层次,第一层 ...

  3. Some Interesting Problems(持续更新中)

    这种题目详解,是“一日一测”与“一句话题解”栏目所无法覆盖的,可能是考试用题,也可能是OJ题目.常常非常经典,可以见微知著.故选其精华,小列如下. T1:fleet 给定一个序列,询问[L,R]间有多 ...

  4. IntelliJ Idea 常用快捷键总结-0 #<间断性更新中...>,部分有示例

    IntelliJ Idea 常用快捷键总结-0 <间断性更新中...>,部分有示例 自动补齐代码 常用的有for循环体,fori可以输出循环语句: eg: public void test ...

  5. 2020年腾讯实习生C++面试题&持续更新中(3)

    2020年腾讯实习生C++面试题&持续更新中(3) hello,大家好,我是好好学习,天天编程的天天. 来给大家大家分享腾讯实习生面经了. 天天希望大家看到面经后一定要做充分的准备,结合自己掌 ...

  6. 中高等DP总结(更新中

    1.CF613D Kingdom and its Cities 题意:给定一棵树,每个询问给出一些关键点,要求删掉最少的点使这些点两两不联通,无解输出-1. 思路:先判无解:只要有一个关键点的父亲也是 ...

  7. 在UPDATE中更新TOP条数据以及UPDATE更新中使用ORDER BY

    正常查询语句中TOP的运用: SELECT TOP 1000 * FROM MP_MemberGrade   随意更新一张表中满足条件的前N条数据: UPDATE TOP (1) MP_Member ...

  8. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  9. Atom使用记录(持续更新中)

    部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...

  10. Pig基础学习【持续更新中】

    *本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.* Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的,可以作为MapR ...

随机推荐

  1. 【python技巧】文本处理-re库字符匹配

    目录 1. 正则表达式 1.1 测试工具 1.2 限定符 1.3 字符集 1.4 运算符 1.5 元字符 1.6 懒惰匹配和贪婪匹配 我们读取文件内容,肯定不是单纯为了输出或者重新写入,对于文本我们一 ...

  2. Record -「CSP-S 2020」赛后总结

    其实这次的 CSP 暴露出来了很多问题. 比如策略上的,在 T1 花了太多的时间直接心态爆炸,后面的题只想着把暴力打满.看到 T2 只想着打暴力,根本没有沉下心来想,白白丢了一道(水)题. T3 连暴 ...

  3. 一文教你理解Kafka offset

    日常开发中,相信大家都对 Kafka 有所耳闻,Kafka 作为一个分布式的流处理平台,一般用来存储和传输大量的消息数据.在 Kafka 中有三个重要概念,分别是 topic.partition 和 ...

  4. c语言代码练习7

    //输出0-100的三倍数字#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i = 0; int ...

  5. 如何使用webgl(three.js)实现煤矿隧道、井下人员定位、掘进面、纵采面可视化解决方案——第十九课(一)

    序: 又是很久没有更新文章了,这次索性将之前做的三维煤矿项目拿出来讲讲,一是回顾技术,二是锻炼一下文笔. 随着科技的不断发展,越来越多的人开始关注煤矿采集的安全和效率问题.为了更好地展示煤矿采集的过程 ...

  6. [ABC218F] Blocked Roads 题解

    Blocked Roads 题目大意 给定一张 \(n\) 个点,\(m\) 条边的无向图,每条边的边权均为 \(1\).对于每一个 \(i\in [1,m]\) 求出从点 \(1\) 到 \(n\) ...

  7. 关于 React 性能优化和数栈产品中的实践

    我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 本文作者:的卢 引入 在日常开发过程中,我们会使用很多性能优化的 A ...

  8. vue中数字和字符串的转换问题(v-bind和v-model的使用)

    可以看到上面自增加时,成了拼接字符串的效果. 打开vue工具查看: 此时n和sum都是数字,可以正常自增加,但是操作了section之后,n就变成了字符串: 此时再执行自增加,sum也会变成字符串形式 ...

  9. dijkstra算法(朴素 + 堆优化)

    dijkstra算法的大题思路是通过n - 1次迭代,每次迭代把一个点距汇点的最短路确定,当n - 1次循环过后所有点的最短路都已经确定 注意:dijkstra算法只适用于没有负权边的单源最短路 以下 ...

  10. mybatis plus很好,但是我被它坑了!

    作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatis plus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得 ...